编译原理-预测分析程序的设计与实现-试验报告_第1页
编译原理-预测分析程序的设计与实现-试验报告_第2页
编译原理-预测分析程序的设计与实现-试验报告_第3页
编译原理-预测分析程序的设计与实现-试验报告_第4页
编译原理-预测分析程序的设计与实现-试验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目的和要求1、掌握LL(1)语法分析的基本原理和方法。2、掌握相应数据结构的设计方法。实验环境Windows 7 + DEVC+6.0实验准备首先将下列算术表达式文法E-E+T|TT-T*F|FF-(E)|i改写文法为LL(1)文法;构造LL(1)预测分析表。解:1)该文法为左递归文法,设非终结符 A, B;E=TAA=+TA| T=FBB=*FB| F=(E)|i2)计算 FIRST, FELLOW, SELECT 集:FIRSTFELLOWESLECTE=TA( , i)佛)( , i)A=+TAA= +4# , ) +# , ) T=FB (,i + ,#,) (, iB=*FBB =

2、* 4+ ,#,) * + ,#, ) F=(E)F=i( i口 +, #, ), ( i因为A,B,F的的两个产生式的选择集都没有交集,所以,该文法为LL(1)文法3)构造预测分析表i()+*#ETATAA+TATFBFBB*FBFi(E)4)给出i+i的预测分析过程步骤分析栈输入用栈下THM乍1#Ei+i#TA逆序替换E2#ATi+i#FB逆序替换T3#ABFi+i#i替换F4#ABii+i#i匹配成功,出栈5#AB+i#B出栈6#A+i#+TA逆序替换A7#AT+i#+匹配成功,出栈8#ATi#FB逆序替换T9#ABFi#i替换F10#ABii#i匹配成功,出栈11#AB#B出栈12#A

3、#A出栈13#acc实验内容及步骤1、根据预测分析表编写预测分析程序yuce。2、编译成功后,提示输入符号用,用回车键查看输出的结果。博醯霞要分析的字符串 弑蠹,其它退出3、比较自己分析的结果和屏幕上的输出结果。实验小结1、得到的经验。2、遇到的主要问题。3、改进方案。自拟LL1文法GA:E=aAEE=bA=bAA= 1)计算 FIRST,FOLLOW,SELECT 集FIRSTFOLLOWSELECTE=aAEE=ba,b#a.bA=bAcA= b #,cb#,c2)构造预测分析表。abc#EaAEbAbAcE=aAE=abAcE=abcb3)给出abcb的预测分析过程步骤分析栈输入用栈下T

4、HM乍1#Eabcb#aAE逆序替换E2#EAaabcb#a匹配成功,出栈3#EAbcb#bAc逆序替换A4#EcAbbcb#b匹配成功,出栈5#EcAcb#A出栈6#Eccb#c匹配成功,出栈7#Eb#b替换E8#bb#b匹配成功,出栈9#acc3)改进代码,其中用e代替using namespace std;int main()string sheet25=aAE,b, /预测分析表,bAc,e,e;vector S;/ 分析栈vector Stc;/ 用户输入栈vector SOS;/ 空栈string STC;用于获取用户输入的字符串int YourChoice;docoutendl;

5、S=SOS; /每次执行用空的 SOS初始化分析栈S.push_back(#);/将#放到分析栈中S.push_back(E);将E放到分析栈中STC=; 将STC设置为空coutSTC;STC.resize(STC.size()+1);STCSTC.size()-1=#;/W输入串最后一位设置为#Stc=SOS; /Stc是将STC+病序压入的用户输入栈for(int x=STC.size()-1;x=0;-x)Stc.push_back(STCx);string YY=EA;string XX=abce#;while(!(SS.size()-1=#&StcStc.size()-1=#)in

6、t i=0,j=0;/查表找到相应规则 /for(i=0;i2;+i)if(YYi=SS.size()-1)break;for(j=0;j=5|j=6)/如果查找超出表cout出错啦!endl;break;)else if(sheetij=) cout出错啦!=0;-k)S.push_back(sheetijk);if(SS.size()-1=StcStc.size()-1) 一般规则 S.pop_back();Stc.pop_back();else if(SS.size()-1=e) 含空串的规则S.pop_back();if(SS.size()-1!=#&StcStc.size()-1!=#&SS.size()-1=StcStc.size()-1) S.pop_back();Stc.p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论