预测分析方法--c++版

预测分析方法--c++版

ID:1945424

大小:101.50 KB

页数:7页

时间:2017-11-13

预测分析方法--c++版_第1页
预测分析方法--c++版_第2页
预测分析方法--c++版_第3页
预测分析方法--c++版_第4页
预测分析方法--c++版_第5页
资源描述:

《预测分析方法--c++版》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理上机实验一、实验题目:预测分析方法二、实验要求:用C++程序设计语言,构建预测分析程序、先进后出栈、预测分析表,实现用程序自动完成预测分析过程。三、程序流图:‘#’‘S’进栈,当前终结符送a上托栈顶符号放入XX∈VT?X=‘#’?X=a?X=a?M[X,a]是产生式吗出错结束读入下一符号出错若产生式为X→x1x2……xn按逆序即xn……x2x1入栈四、程序代码:#include#includeusingnamespacestd;stringtable(c

2、hara,charb){char*analist[5][6]={//在子函数中创建二维数组{"Te","1","1","Te","1","1"},//为了方便表示,用1代表出错{"1","+Te","1","1","0","0"},//ε用0代替{"Ft","1","1","Ft","1","1"},{"1","0","*Ft","1","0","0"},{"i","1","1","(E)","1","1"}};inti=0;intj=0;7switch(a){case'E':i=0;break;

3、case'e':i=1;break;case'T':i=2;break;case't':i=3;break;case'F':i=4;break;}switch(b){case'i':j=0;break;case'+':j=1;break;case'*':j=2;break;case'(':j=3;break;case')':j=4;break;case'#':j=5;break;}returnanalist[i][j];}boolisVt(chard)//判断是否是终结符{charvt[5]={'

4、i','+','*','(',')'};for(inti=0;i<5;i++){if(vt[i]==d)returntrue;}returnfalse;}voidmain(){intop1,op2;//op1、op2分别为两个栈的栈顶指针stringinputstr;//inputstr表示输入待分析的符号串intmark=0;//mark用来记录程序执行的次数stringstr;//定义str表示返回的产生式chara,X;//流程图中的a、Xcharstack1[30];//用两个数组定义两个

5、栈charstack2[30];op1=0;//初始化栈顶指针op2=0;stack1[op1]='#';//#放入栈1op1++;stack1[op1]='E';//E放入栈1cout<Te"<

6、<"e->+Te

7、ε"<Ft"<*Ft

8、ε"<i

9、(E)"<>inputstr;//输入待分析符号串cout<

10、utstr.length();a=stack2[op2];op2--;cout<<"对符号串"<

11、'<<'t';X=stack1[op1];//上托栈顶符号放入Xop1--;for(intk=op2+1;k!=0;k--)//输出剩余符号串(即输出栈2){cout<

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

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

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