您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 编译原理算符优先算法语法分析实验报告
数学与计算机学院编译原理实验报告年级专业学号姓名成绩实验题目算符优先分析法分析器的设计实验日期一、实验目的:设计一个算符优先分析器,理解优先分析方法的原理。二、实验要求:设计一个算符优先分析器三、实验内容:使用算符优先分析算法分析下面的文法:E’→#E#E→E+T|TT→T*F|FF→P^F|PP→(E)|i其中i可以看作是一个终结符,无需作词法分析。具体要求如下:1、如果输入符号串为正确句子,显示分析步骤,包括分析栈中的内容、优先关系、输入符号串的变化情况;2、如果输入符号串不是正确句子,则指示出错位置。四、实验结果及主要代码:1.主要代码voidoperatorp(){chars[100];chara,Q;intk,j,i,l;stringinput,temp;cininput;cout步骤'\t'栈'\t'优先关系'\t'当前符号'\t'剩余输入串'\t'移进或归约endl;k=1;s[k]='#';i=1;do{a=input[0];temp=;for(l=1;linput.length();l++)temp+=input[l];input=temp;if(svt(s[k]))j=k;elsej=k-1;while(search(s[j],a)==''){cout'('i')''\t';//步骤temp=;for(l=1;lk+1;l++)temp+=s[l];couttemp'\t';//栈cout'''\t'setw(10);//优先关系couta'\t'setw(15);//当前符号coutinput'\t'setw(15);//剩余输入串i++;for(;;){Q=s[j];if(svt(s[j-1]))j=j-1;elsej=j-2;if(search(s[j],Q)==''){cout归约endl;//归约break;}}temp=;for(l=j+1;lk+1;l++)temp+=s[l];for(l=0;l6;l++)if(temp==key[l]){k=j+1;s[k]=v[l];break;}}cout'('i')''\t';//步骤temp=;for(l=1;lk+1;l++)temp+=s[l];couttemp'\t';//栈if(search(s[j],a)==''){cout'''\t'setw(10);;//优先关系couta'\t'setw(15);//当前符号coutinput'\t'setw(15);//剩余输入串cout移进endl;i++;k=k+1;s[k]=a;}//移进elseif(search(s[j],a)=='Y'){cout'=''\t'setw(10);;//优先关系couta'\t'setw(15);//当前符号coutinput'\t'setw(15);//剩余输入串cout接受endl;i++;}else{cout'?''\t'setw(10);;//优先关系couta'\t'setw(15);//当前符号coutinput'\t'setw(15);//剩余输入串cout出错endl;exit(0);}//出错}while(a!='#');}2.实验结果
本文标题:编译原理算符优先算法语法分析实验报告
链接地址:https://www.777doc.com/doc-6059336 .html