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

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

ID:8930871

大小:234.00 KB

页数:7页

时间:2018-04-12

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

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

1、编译原理实验报告学  号2012061321姓  名王勇军实验名称语法分析程序设计实验目的1、了解预测分析法和递归子程序发的区别和联系。了解语法分析的功能。训练掌握开发应用程序的基本方法。2、本次实验主要用到LL(1)分析(第1个“L”指的是由左向右地处理输入,第2个“L”指的是它为输入串描绘出一个最左推导,数字1意味着它仅使用输入中的一个符号来预测分析的方向)。实验方案1、说明:该程序使用实现对算术表达式自底向上的语法分析,并且在对输入表达式进行分析的过程中,输出分析动作,移进或者用哪个产生式进行规约

2、,该程序使用的是LR语法分析程序,手动构造了识别所有活前缀的DFA,为给定文法构造LR分析表,并通过预测分析表对输入的表达式进行分析,并将栈顶状态和预测分析过程详细输出,如果匹配成功则接受,如果匹配不成功则返回错误信息。给定文法的产生式为:E->E+T

3、TT->T*F

4、FF->id

5、(E)2、程序源代码:#include#includeusingnamespacestd;stacksymbol;stackstate;charsen[50];char

6、sym[12][6]={//符号表{'s','e','e','s','e','e'},{'e','s','e','e','e','a'},{'r','r','s','r','r','r'},{'r','r','r','r','r','r'},{'s','e','e','s','e','e'},{'r','r','r','r','r','r'},{'s','e','e','s','e','e'},{'s','e','e','s','e','e'},{'e','s','e','e','s','e'},{'r

7、','r','s','r','r','r'},{'r','r','r','r','r','r'},{'r','r','r','r','r','r'}};charsnum[12][6]={//数字表{5,1,1,4,2,1},{3,6,5,3,2,0},{2,2,7,2,2,2},{4,4,4,4,4,4},{5,1,1,4,2,1},{6,6,6,6,6,6},{5,1,1,4,2,1},{5,1,1,4,2,1},{3,6,5,3,11,4},{1,1,7,1,1,1},{3,3,3,3,3,3},{

8、5,5,5,5,5,5}};intgo2[12][3]={//goto表{1,2,3},{0,0,0},{0,0,0},{0,0,0},{8,2,3},{0,0,0},{0,9,3},{0,0,10},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};voidaction(inti,char*&a,char&how,int&num,char&A,int&b)//action函数[i,a]{intj;switch(*a){case'i':j=0;break;case'+':j=1;brea

9、k;case'*':j=2;break;case'(':j=3;break;case')':j=4;break;case'#':j=5;break;default:j=-1;break;}printf("%ctt",*a);if(j!=-1){how=sym[i][j];num=snum[i][j];if(how=='r'){switch(num){case1:A='E',b=3;cout<<"reducebyE->E+T"<

10、ducebyE->T"<T*F"<F"<(E)"<id"<

11、charA)//goto[t,A]{switch(A){case'E':returngo2[t][0];break;case'T':returngo2[t][1];break;case'F':returngo2[t][2];break;}}voiderror(inti,intj,char*&a)//error处理函数{switch(j){case1://期望输入id或左括号,但是碰到+,*,或$,就假设已经输入id了,转到状态5cout<<

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

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

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