1、(E)(8)F-i输出的格式如下:(1)递归下降分析程序,编制人:姓名,学号,班级(2)输入一以#结束的符号串(包括+*/()i#):在此位置输入符号串例如:i+i*i# (3)输出结果:i+i*i#为合法符号串备注:输入一符号串如i+i*#,要求输出为“非法的符号串”。注意:1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符i,结束符#;2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);三、实验过程:程序设计:1.模块设计:将程序分成合理的多个模块(函数),每个模块做具体的同一事情。2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。程序编写:1.
2、定义部分:定义常量、变量、数据结构。2.初始化:从文件将输入符号串输入到字符缓冲区中。3.利用递归下降分析法,对每个非终结符编写函数,在主函数中调用文法开始符号的函数。四、实验结果(1)程序流程图(2)运行结果示例程序:#include #includestdlib.hstring.hchar a50 ,b50,d500,e10;char ch;int n1,i1=0,flag=1,n=5;int E();int E1();int T();int G();int S();int F();void input();void input1();void output();void main() /
3、*递归分析*/int f,p,j=0;char x; d0=E; d1= d2= d3=T d4=G d5=#printf(递归下降分析程序,编制人:武普泉,20号,1020562班n);输入一以#结束的符号串(包括+ - * / ( ) i #,且长度小于50):doscanf(%c,&ch);aj=ch;j+;while(ch!n1=j;ch=b0=a0;文法t分析串ttt分析字符tt剩余串nf=E1();if(f=0) return ;if (ch=) printf(acceptn p=0;x=dp;/printf(,x);p=p+1;x=dp; /*输出推导式*/while(ap!)
4、printf(,ap+);printf(为合法字符!nelse /printf(errornj=0;while(aj!,aj+);非法字符!回车返回ngetchar();getchar();return;getchar();int E1() int f,t;E-TGt flag=1;input();input1();f=T();if (f=0) return(0);t=G();if (t=0) return(0);else return(1);int E() e0=e1=e2=e3=e4=e5=output();flag=1;if (f=0) return(0);int T()T-FSte0=
5、FS output();f=F();if (f=0)t=S();int G() int f;if(ch=+) bi1=ch;G-+TGt e0=e6=output(); flag=0;input();input1();ch=a+i1;f=T();if (f=0)return(0);f=G();if(f=0)return 0;else return 1;else if(ch=-TGtG=%dn,f);elsetreturn(1);int S()int f,t;* S-*FStflag=0;f=F();t=S();if (t=0)/FStai1=ch;int F() int f;int j;(F-(E)te0=)f=E();if (f=0) return(0);if(ch=bi1=ch;printf( flag=0;input(); ch=a+i1;else printf( j=0; while(aj! return(0); iitvoid input() int j=0; for (;j=i1-flag;j+) printf(,bj); /*输出分析串*/ttt prin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1