非递归预测分析器1(2)

2019-04-02 15:25

return 0; }

void out(sqstack st,string str,int sp,int k)//输出函数 { int n,m=0; for(int i=0;i<=sp;i++)//输出栈(符号) { if(st.data[i]<7) { cout<

m=n+m; }

for(i=m;i<30;i++) cout<<\

for(i=0;i<=sp;i++) //输出栈(数字) cout<

void init(int Yy_pushtab[13][4],int Yy_d[264][7]) //初始化分析栈Yy_d[]与Yy_pushtab[] { int i,j;

ifstream infile1(\ ifstream infile2(\ for(i=0;i<13;i++) { for(j=0;j<4;j++) {

infile1>>Yy_pushtab[i][j]; // cout<

//cout<

for(i=256;i<264;i++) { for(j=0;j<7;j++) { infile2>>Yy_d[i][j]; // cout<

// cout<

if(str[i]>='0'&&str[i]<='9') st1[i]=6; } }

void Foreparser(sqstack st,int Yy_pushtab[13][4],int Yy_d[264][7], int st1[],string str) 分析法 { int i,k=0,what_to_do;

while(st.top!=-1)

//预测 {

out(st,str,st.top,k); if(st.data[st.top]>=0&&st.data[st.top]<=6)//栈顶元素为终结符 if(st.data[st.top]!=st1[k]) { cout<<\未能分析成功\ break; } else { st.top--; k++; cout<

if(Yy_pushtab[what_to_do][i]!=-1&&Yy_pushtab[what_to_do][i]!=0) { st.top++; st.data[st.top]=Yy_pushtab[what_to_do][i]; } } } if(st.top==-1&&st1[k]==0) cout<

初始化文件需要放在代码文件夹 1、初始化Yy_pushtab[] 文件:

2、初始化Yy_d[] 文件:

程序运行截图:

1、对文法句子 1+2;# 进行分析:

1+2;# 是本文法句子,与手工分析一致。

2、对文法句子 2-1;# 进行分析:

2-1;#不是本文法句子,与手工分析一致。


非递归预测分析器1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:毕业设计(论文):数字频率计毕业设计2011-精品

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: