编译原理课程设计 - 算符优先分析法研究 - 附源程序(6)

2025-06-24

课程设计报告

int k=0; S[k]='#'; cho2='y';

cout<<\分析过程如下:\

cout<<\//cout<<\ 栈\\t当前字符\\t优先关系\\t移进或规约\//cout<<\分析过程如下:\cout.width(10); cout<<\栈\cout.width(15); cout<<\当前字符\cout.width(20);

cout<<\剩余符号串\cout.width(15); cout<<\优先关系\cout.width(15);

cout<<\移进或规约\

char* p; p=string; p++;

for(i=0;string[i]!='\\0'&&cho2=='y';i++,p++) { a=string[i]; //读入当前字符 cho1='n'; //可否接受 while(cho1=='n') {

if(TerminalJud(S[k])==true) j=k; //规约使栈内有非终结符 else j=k-1; relation=RelationshipJud(S[j],a,opTable,opTable_len); if(relation==3) //S[j]>a {

//cout<<\ \ >\\t\\t\cout.setf(ios::left); cout.width(10); cout<

cout.unsetf(ios::left); cout.width(15); cout<

25

课程设计报告

cout.width(20); cout<

else if(relation==1) //S[j]

else if(relation==2) //S[j]=a

26

课程设计报告

{ cho1='y'; //cout<<\ \ =\\t\\t\ cout.setf(ios::left); cout.width(10); cout< cout<<\ 移进\ k=k+1; S[k]=a; } } else { cho1='y'; //cout<<\出错\ cout<

void main() { char choice='y'; while(choice=='y')

27

课程设计报告

{ system(\

char

sen[row][col]={'\\0'},first[row][col]={'\\0'},last[row][col]={'\\0'},opTable[row][col]={'\\0'}; char string[col]; int i,k,p,q; p=readfile(sen); if(PrioGramJud(sen,p)==true) { ItemInit(sen,first,last,p,q); //j记录FIRSTVT和LASTVT表的长度 FirstVt(sen,first,p,q); cout<<\各非终结符FIRSTVT集\ cout<<\ for(i=0;i

LastVt(sen,last,p,q);

cout<<\各非终结符LASTVT集\ cout<<\ for(i=0;i

if(OpPriotable(sen,first,last,opTable,p,q,k)==true) //k记录opTable表的长度 { cout<<\优先关系表:\ cout<<\ for(i=0;i

28

课程设计报告

} }

cout<<\请输入要分析的串,以#结束:\cin>>string;

InputAnalyse(opTable,string,k); //k是opTable表的长度

cout<<\是否继续? y/n\ cin>>choice;

}

}

29


编译原理课程设计 - 算符优先分析法研究 - 附源程序(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大班语言活动《相反词聚会》

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

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