编译原理语法分析程序设计(预测分析法)

编译原理语法分析程序设计(预测分析法)

ID:12069309

大小:45.00 KB

页数:4页

时间:2018-07-15

编译原理语法分析程序设计(预测分析法)_第1页
编译原理语法分析程序设计(预测分析法)_第2页
编译原理语法分析程序设计(预测分析法)_第3页
编译原理语法分析程序设计(预测分析法)_第4页
资源描述:

《编译原理语法分析程序设计(预测分析法)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.实验目的构造文法的语法分析程序实验要求,2.实验要求采用预测分析法对输入的字符串进行语法分析。3.实验环境VC++6.04.实验原理对文法G进行语法分析,文法G如下所示:*0.S→a*/*1.S→^*2.S→(T)*3.T→SW**4.W→,SW*5.W→ε;5.软件设计与编程#include#include#includecharstr[100];//存储待分析的句子constcharT[]="a^(),#";//终结符,分析表的列符constcharNT[]="STW";//非终结符,分析表的行符/*指向产

2、生式右部符号串*/constchar*p[]={/*0.S→a*/"a",/*1.S→^*/"^",/*2.S→(T)*/"(T)",/*3.T→SW*/"SW",/*4.W→,SW*/",SW",/*5.W→ε;*/""};//设M[i][j]=x,通过p[M[i][j]]=p[x]获取右部符号串。constintM[][6]={/*a^(),#*//*S*/{0,1,2,-1,-1,-1},/*T*/{3,3,3,-1,-1,-1},/*W*/{-1,-1,-1,5,4,-1}};voidinit()//输入待分析的句子{printf("请输入待分析的句子(以$结束)

3、:");scanf("%s",str);}intlin(charc);//非终结符转换为行号intcol(charc);//终结转换为列号boolisNT(charc);//isNT判断是否是非终结符boolisT(charc);//isT判断是否是终结符。voidmain(void){inti,j=0;intflag=1,flag2=0;charA;//设置指示句子的当前字符charstack[20]={'#','S'};//栈赋初值inttop=1;//设置栈顶指针charX='';//存储栈顶字符init();A=str[0];printf("t步数t分析栈

4、t输入串t所用规则");//在屏幕上输出列表标题while(1){printf("t(%d)t",++j);//输出当前执行步数for(i=0;i<=top;i++)//输出当前栈的内容(出栈前){printf("%c",stack[i]);}printf("t");for(i=flag-1;str[i]!='$';i++){printf("%c",str[i]);}if(flag2==1){printf("t%d",M[lin(X)][col(A)]);flag2=0;}//出栈X=stack[top--];if(X=='#')//是结束符{if(X

5、==A)//是结束符{printf("tAcc");}elseprintf("tERROR");break;}elseif(isT(X))//是终结符{A=str[flag++];}elseif(isNT(X))//是否是非终结符{flag2=1;//逆序入栈for(i=strlen(p[M[lin(X)][col(A)]])-1;i>=0;i--){stack[++top]=*(p[M[lin(X)][col(A)]]+i);}}else{printf("Errorinmain()>%c",X);exit(0);}}}intlin(charc){for(

6、inti=0;i<(int)strlen(NT);i++){if(c==NT[i]){returni;}}printf("Errorinlin()>%c",c);exit(0);}intcol(charc){for(inti=0;i<(int)strlen(T);i++){if(c==T[i])returni;}printf("Errorincol()>%c",c);exit(0);}boolisNT(charc)//是否是非终结符{for(inti=0;i<(int)strlen(NT);i++){if(c==NT[i])returntrue;}returnfa

7、lse;}boolisT(charc)//是否是终结符(不包括'#'){for(inti=0;i<(int)strlen(T)-1;i++){if(c==T[i]){returntrue;}}returnfalse;}1.程序测试结果

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

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

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