编译原理算符优先算法语法分析实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数学与计算机学院编译原理实验报告年级专业学号姓名成绩实验题目算符优先分析法分析器的设计实验日期一、实验目的:设计一个算符优先分析器,理解优先分析方法的原理。二、实验要求:设计一个算符优先分析器三、实验内容:使用算符优先分析算法分析下面的文法: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.实验结果

1 / 3
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功