编译原理预测分析代码

编译原理预测分析代码

ID:46786725

大小:79.00 KB

页数:6页

时间:2019-11-27

编译原理预测分析代码_第1页
编译原理预测分析代码_第2页
编译原理预测分析代码_第3页
编译原理预测分析代码_第4页
编译原理预测分析代码_第5页
资源描述:

《编译原理预测分析代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理预测分析代码#include#includettdefineMAX100usingnamespacestd:structStack{intdata[MAX];//栈中内容inttop;//栈顶指针};intYy_pushtab[13][4]={//存放文法产生式右部符号的常数值{257,1,258,0},{256,0},{0},{260,259,0},{0},{260,259,2,0},{0},{262,261,0},{262,261,3,0},{0},{5,25&4,0},{6,0},{256,0},};intYy_d[8][7]={/

2、/LL(1)分析表{T,0,-1,-1,0,-1,0},{2,1,-1,-1,1,-1,1},{T,4,-1,-1,3,4,3},{T,T,T,T,7,-1,7},{T,6,5,-1,-1,6,-1},{T,T,T,T,10,-1,11},{T,9,9,&T,9,-1},{-1,12,-1,-1,12,-1,12},};//终结符集#(0)、;(1)、+⑵、*⑶、((4)、)(5)、num(6)intTerminal[7]={0,1,2,3,4,5,6};//非终结符集prgm(256)>prgm,(257)、expr(258)>term(259)>//expr'(260)、fact

3、o(261)、term'(262)、system_goal(263);intNonterminal[8]={256,257,258,259,260,261,262,263};voidInitStack(Stack&st)//初始化栈{st.top二-1;}voidPush(Stack&st,intx)//压栈{if(st.top二二MAXT)cout«,z栈已满,压栈失败!/z«endl;else{st.top++;st.data[st・top]二x;}}voidPop(Stack&st)//弹栈{if(st・top=T)cout«,z栈已空,弹栈失败!/z«endl:elsest.

4、top-;}//判断是否为终结符,是返回1,否则返凹0intIs_Vt(inta,intTerminal[7])inti;for(i=0;i<7;i++){if(a=Terminal[i])//a.为输入符号常数return1;}return0;}//读入文法句子并将其转化为相应编码,返回输入串长度intGetchar(intlength,charA[MAX],intB[MAX]){inti;cout«zz输入字符串的长度ength二〃;cin>>length;cout«endl«〃请输入该文法的句了:〃;for(i=0;i

5、witch(A[i])//将输入串转为相应常数值存入数组B{case':B[i]二0;break;case':B[i]二1;break;case'+':B[i]=2;break;case'*':B[i]=3;break;case'(':B[i]=4;brea.k;case')':B[i]二5;break;default:B[i]=6:}}returnlength;}voidPrintStack(Stack&st,inttop)//输出栈中的内容for(inti=0:i<=top;i++){cout<

6、intwhat_to_do,ch,j,m;charA[MAX];intlength=0,B[MAX];length=Getchar(length,A,B);//获得输入字符串InitStack(st);//初始化栈Push(st,263);//把开始符号的常数值压栈j二0;ch二B[j];//指向第一个输入符号的编码cout<

7、nal)=1)//栈顶常数表示一个终结符what_to_do=-l;if(st.data[st.top]!=ch)//栈顶常数与输入符号编码不同{cout«z,输入串不是该文法的句子!,,«endl;return0;}else{Pop(st);//栈顶出栈what_to_do=100;//表示输入符号与栈顶符号匹配PrintStack(st,st.top);//输出分析过程中栈中内容for(intp=j;p

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

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

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