聊城大学编译原理实验二语法分析器_第1页
聊城大学编译原理实验二语法分析器_第2页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机学院实验报告【20162017学年第2学期】【一、基本信息】【实验课程】编译原理【设课形式】独立口非独立匚1【课程学分】4【实验项目】实验一语法分析器的设计【项目类型】基础口综合设计口研究创新口其它【项目学时】4【学生姓名】【学号】【系别专业】软件开发【实验班组】级班组台【同组学生】【实验室名】综合实验楼【实验日期】【报告日期】【一、实验教师对报告的最终评价及处理意见】实验成绩:(涂改无效)指导教师签名:年月日1注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案【三、实验预习】实验目的和要求:1. 掌握自上而下语法分析的基本思想;2. 掌握利用预测分析法

2、进行语法分析的原理和过程;3. 熟悉文法的机内表示;4. 掌握语法分析器的设计与调试,提高编程能力、动手能力以及独立分析问题、解决问题的能力和综合运用所学知识的能力。实验内容和原理或涉及的知识点(综合性实验):1. 输入任意文法,改写文法使其成为LL(1文法。2. 构造文法的预测分析表;3. 设计堆栈和预测分析表的机内表示;4. 设计并书写语法分析程序;5. 调试并运行语法分析程序;6. 实验结果分析分析程序中文法存储所采用的数据结构分析结果并写出自己的心得体会提示:对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造所给文法的机内表示。实验条件(实验设备、软件、材料等):1. 装

3、有Codeblocks的电脑一台。2. 实验环境:WINDOWS下,工具为Turbo或VisualC。实验考核方式:1. 提交实验报告2. 演示程序和答辩(抽查)实验预习实验设计方案(实验方法、步骤、操作过程、设计型实验、实验数据记录表格):实验预习成绩(涂改无效)合格口不合格口【四、实验过程、数据和实验结果记录】实验方法、步骤、操作过程的记录描述或程序代码。实验过程中输入/输岀数据、程序运行结果的记录。(可加附页)1.输入任意文法,改写文法使其成为LL(1文法。答:输入文法GE:ET|EATTF|TMFF(E)|iA+|-M*|/(1)改写文法。对形如:UUx|y的产生式(其中x,yV+,y

4、不以U开头),引入一个新的非终结符U'后,可以等价地改写成为:UyU'U'xU'|&显然改写后,U和U'都不是左递归的非终结符。因此文法GE按上述方法消去左递归后可等价地写成:ETP'P'ATP|&TFW1&W'MFW'|&F(E)|iM*|/2.构造文法的预测分析表;i+-+/()#EE->TEE->TEE'E'->ATEE'->ATEE'->?E'->?TT->FTt->ftT'T'-

5、>?T'->?T'->MFT'T'->MFT'T->?T->?FF->iF->(E)AA->+A->MM->*M->/3. 设计堆栈和预测分析表的机内表示;堆栈表示:预测分析表的机内表示4.设计并书写语法分析程序;语法分析程序代码:#include<>#include<>#include<>#include<>charA20;charB20;charv120='i','+','*',

6、9;(',')',#;charv220='E','G',T,'S','F'intj=0,b=0,top=0,l;typedefstructtypecharorigin;chararray5;intlength;type;typee,t,g,g1,s,s1,f,f1;typeC1010;voidprint()inta;for(a=0;a<=top+1;a+)printf("%c",Aa);printf("tt");voidprint1()intj;for(j=0;

7、j<b;j+)printf("");for(j=b;j<=l;j+)printf("%c",Bj);printf("ttt");voidmain()intm,n,k=0,flag=0,finish=0;charch,x;typecha;='E'strcpy,"TG");=T;strcpy,"FS");=2;=2;='G'strcpy,"+TG");=3;='G'0='";=1;='S'

8、;strcpy,"*FS");=3;='S'0='A'=1;='F'strcpy,"(E)");=3;='F'0='i'=1;for(m=0;m<=4;m+)for(n=0;n<=5;n+)Cmn.origin='N'C00=e;C03=e;C11=g;C14=g1;C15=g1;C20=t;C23=t;C31=s1;C32=s;C34=C35=s1;C40=f1;C43=f;printf("提示:本程序只能对由,'+',

9、'*','(',')'构成的以'#'结束的字符串进行分析,n");printf("请输入要分析的字符串:");doscanf("%c",&ch);if(ch!='i')&&(ch!='+')&&(ch!='*')&&(ch!='(')&&(ch!=')')&&(ch!=#)printf("输入串中有非法字符

10、n");exit(1);Bj=ch;j+;while(ch!='#');l=j;ch=BO;Atop=#;A+top='E'printf("步骤tt分析栈tt剩余字符tt所用产生式n");dox=Atop-;printf("%d",k+);printf("tt");for(j=0;j<=5;j+)if(x=v1j)flag=1;break;if(flag=1)if(x='#')finish=1;printf("acc!n");getchar();get

11、char();exit(1);if(XHHCh)宀prinpprinfko八pinff(=%c目碍云=ch)八chHB+bkf-agHO八e-se宀prinpprinfko八pHf(=%c圧a云=ch=exioxe-se宀forpA-H4j+)=h(XHHV2曰)宀m=Bbreak八folxjHO八AH5j+)ifohHHs曰)宀卫break八chauc3=nkifHN)宀prinpprinfko八pimf(=%ov=-E:codeblockfilestestabcbinIDebugtestabe.exe«,”构成的以/护结東的字符串进彳扮析.4£?8小析栈HEttGTtt

12、GSFSCSI»GS#GT+ttGTttGSFttGG>E<MGg'EKGS>GT#GS>GSFIIGS>GSiHGS>GSttGE>G£F*#GS>G£FltGS>GSlKGS>GSttGS>GttGS>ttGSttG乘!余字符i*d>#i*d>Bi*i>#*i>#ACC输入(i+i)*i#运行结果如图所用产主式E->TGT->FSF->ii匹酉己£->AG->+TG匹配T->FSF-XE)t匹配EXTGT->

13、;FS配»FL->mJii>#>tttt!.nJiiA->匹->己A酉AA->匹->->G>尸E:codeblocksfileste戢已bcbinDebugtestabcsexeUaceT6?890tri/=f*析莪9子烫ttEttGT#GSFttGS>E<ttG£>EttGS>GT#GS>GSF#GS>GSdHGS>GS#GS>GttGS>GT+#G£>GTttGS>GSFttGOGSdttG£>GSttGS>CttGS>ttGS#GSF*ttGSFttGSittGSttG剩余字符i>*i«>*itt*lttittttn所用产生式E->IG

温馨提示

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

评论

0/150

提交评论