预测分析法编译原理实验.docx

预测分析法编译原理实验.docx

ID:53252874

大小:43.38 KB

页数:9页

时间:2020-04-02

预测分析法编译原理实验.docx_第1页
预测分析法编译原理实验.docx_第2页
预测分析法编译原理实验.docx_第3页
预测分析法编译原理实验.docx_第4页
预测分析法编译原理实验.docx_第5页
资源描述:

《预测分析法编译原理实验.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验代码:#include#include#include#includechar*pro[][6]={"Te","","","Te","","","","+Te","","","$","$","Ft","","","Ft","","","","$","*Ft","","$","$","i","","","(E)","",""};#definemaxsize50typedefcharDateType;typedefstruct{DateTypedata[m

2、axsize];inttop;}SeqStack;//定义栈inti,now=0;DateTypee,string1[maxsize];voidInitSt(SeqStack*L)//初始化{L->top=0;}charpush(SeqStack*L,DateTypee)//入栈{if(L->top==maxsize){printf("ttt栈已满!");return0;}L->data[L->top]=e;L->top++;return1;}charpop(SeqStack*L)//出栈{i=L->top;e=L->da

3、ta[i-1];if(L->top==0){printf("ttt栈为空!");return0;}L->top--;return1;}DateTypegetTop(SeqStack*L)//取栈顶元素{DateTypex;i=L->top;if(L->top==0){printf("ttt栈为空!");}else{i--;x=L->data[i];}returnx;}voiddisplay(SeqStack*L)//显示元素{if(L->top==0){printf("ttt栈为空!");}else{f

4、or(i=0;itop;i++){printf("%c",L->data[i]);}}}voiddisplay1(){intj;for(j=now;;){printf("%c",string1[j]);j++;if(string1[j]=='')break;}}introw(DateTypex)//列匹配{switch(x){case'i':return0;break;case'+':return1;break;case'*':return2;break;case'(':return3;break;case')':ret

5、urn4;break;case'#':return5;break;default:return-1;}}intcol(DateTypex)//行匹配{switch(x){case'E':return0;break;case'e':return1;break;case'T':return2;break;case't':return3;break;case'F':return4;break;default:return-1;}}voidproduction1(DateTypeb,DateTypet){intx,y;x=col(b);y=

6、row(t);printf("%c->%s",b,pro[x][y]);}voidmatch(SeqStack*L){charch;ch=getTop(L);printf(""%c"匹配",ch);pop(L);}voidtuidao(SeqStack*L){DateTypestackbot,*p;stackbot=getTop(L);p=&string1[now];if(*p==stackbot)match(L);elseproduction1(stackbot,*p);}intmain(){inttime,x,y,b;Dat

7、eTypeX,a,str[5];SeqStackL;time=0;charc[]={""};InitSt(&L);//初始化栈push(&L,'#');push(&L,'E');printf("请输入字符串:");gets(string1);one:X=getTop(&L);a=string1[now];b=row(X);if(b==0

8、

9、b==1

10、

11、b==2

12、

13、b==3

14、

15、b==4)gototwo;elsegotothree;two:if(X==a){time++;printf("%dt",time);display(&L);p

16、utchar('t');display1();putchar('t');tuidao(&L);putchar(10);now++;gotoone;}elsegotoerror1;three:if(X=='#'){if(X!=a)g

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。