![实验二语法分析程序设计与实现_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/f3dba1bf-0550-4231-afef-a51e63abc7c2/f3dba1bf-0550-4231-afef-a51e63abc7c21.gif)
![实验二语法分析程序设计与实现_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/f3dba1bf-0550-4231-afef-a51e63abc7c2/f3dba1bf-0550-4231-afef-a51e63abc7c22.gif)
![实验二语法分析程序设计与实现_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/f3dba1bf-0550-4231-afef-a51e63abc7c2/f3dba1bf-0550-4231-afef-a51e63abc7c23.gif)
![实验二语法分析程序设计与实现_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/f3dba1bf-0550-4231-afef-a51e63abc7c2/f3dba1bf-0550-4231-afef-a51e63abc7c24.gif)
![实验二语法分析程序设计与实现_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/f3dba1bf-0550-4231-afef-a51e63abc7c2/f3dba1bf-0550-4231-afef-a51e63abc7c25.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二语法分析程序设计与实现一、实验目的任选一种有代表性的语法分析方法,如算符优先法、递归下降法、LL(1)SLR(1、LR(1等,通过设计、编制、调试实现一个典型的语法分析程序,对实验 一所得扫描器提供的单词序列进行语法检查和结构分析,实现并进一步掌握常用 的语法分析方法。二、基本实验内容与要求选择对各种常见高级程序设计语言都较为通用的语法结构一一算术表达式 的一个简化子集一一作为分析对象,根据如下描述其语法结构的BNF定义G2v算术表达式,任选一种学过的语法分析方法,针对运算对象为无符号常数和变 量的四则运算,设计并实现一个语法分析程序。G2算术表达式:算术表达式7 项 I 算术表达式+项
2、 | 算术表达式-项项 7 因式 | 项*因式 | 项/因式因式7 运算对象 | (算术表达式)若将语法范畴算术表达式、V项因式和运算对象分别用E、T、F和i代表,则G2E:输入:输出: 给出每一步分析过程;若不是句子,即输入串有错误,则输出“ 显示分析至此所得的中间结果,如分析栈、符号栈中的信息等, 说明信息。要求:1、确定语法分析程序的流程图,同时考虑相应的数据结构,编写一个语法 分析源程序。2、将词法、语法分析合在一起构成一个完整的程序,并调试成功。3、供测试的例子应包括符合语法规则的语句,及分析程序能判别的若干错例。对于所输入的字符串,不论对错,都应有明确的信息输出。三、问题分析及源程
3、序LL1文法:改写文法为:E-TGeG+TGgT-FStF-TGg1G-Ag2G2可写成:E 7 T | E+T | E-T T F | T*F | T/F F i | (E)由实验一输出的单词串,例如:UCON PL,UCON若输入源程序中的符号串是给定文法的句子,则输出“MU,ID RIGHT,并且ERROR,并且 以及必要的出错S-*FSsT-/FSs1S-As2F-(E)fi+-/()#EeeGgg1g2g2TttSs2s2ss1s2s2Ff1fG-i f1分析表:LL1源程序#i ncludeviostream.h#i ncludevstdio.h#i ncludevstdlib.h
4、#i ncludevstri ng.hchar A30;char B30;charv120=i,+,-,*,7,(,),#; char v220=E,G,T,S,F;int j=0,b=0,to p=0,l;class typep ublic:char orig in;char array5;int len gth;type e,t,g,g1,g2,s,s1,s2,f,f1;type C1010;void prin t()int a;for(a=0;a=t op+1;a+)coutAa;couttt;void prin t1()int j;for(j=0;jb;j+) coutvv;for(j
5、=b;j=l;j+)coutBj;coutttt;/*分析栈*/*剩余串*/*终结符*/*非终结符*/*L为输入串长度*/*产生式类型定义*/*大写字符*/*产生式右边字符*/*字符个数*/*类对象*/*预测分析表*/*输出分析栈*/*输出剩余串*/*输出对齐符*/void mai n()int m,n ,k=0,flag=0,fi ni sh=0; charch,x;type cha;/*把文法产生式赋值结构体*/e.origi n-E;strc py(e.array,TG);e.le ngth=2;t.origi n=T;strcpy(t.array,FS);t.le ngth=2;g.o
6、rigi n=G;strcpy(g.array,+TG);g.le ngth=3;gl.origi n=G;strcpy(g1.array,-TG);gl.le ngth=3;g2.origi n=G;g2.array0-A;g2.le ngth=1;s.origi n=S;strcpy(s.array,*FS);s.le ngth=3;sl.origi n=S;strcpy(s1.array,/FS);sl.le ngth=3;s2.origi n=S; s2.array0=A;s2.le ngth=1;f.origi n=F;strcpy(f.array,(E);f.le ngth=3;f
7、l.origi n=F;f1.array0=i;fl.le ngth=1; for(m=0;mv=4;m+)for(n=0;nv=7;n+)Cm n.origin=N;/*用来接受Cmn*/*初始化分析表*/*全部赋为空*/*填充分析表*/COO=e;CO 5=e;C11=g;C12=g1;C1 6=g2;C17=g2;C20=t;C2 5=t;prin t();C31=s2;C32=s2;C33=s;C34=s1;C36=s2;C37=s2;C40=f1;C4 5=f;cout提示:本程序只能对由T,+,-,*,7,(,)构成的以#结束的字符串进行分析,n;cout ch;if(ch!=i)
8、&( ch!=+)&( ch!=-)&( ch!=*)&( ch!=7)&(ch!=( )&(ch!=)&(ch!=#)coutvv输入串中有非法字符n; exit(1);/强制退出程序Bj=ch;j+;while(ch!=#);l=j;/*分析串长度*/ch=B0;/*当前分析字符*/Ato p=#; A+to p=E;/*#,E进栈*/ cout步骤tt分析栈tt剩余字符tt所用产生式n; dox=Atop-;/*x为当前栈顶字符*/coutk+;couttt;for(j=0;jv=7;j+)/*判断是否为终结符*/if(x=v1j)
9、flag=1;break;if(flag=1)/*如果是终结符*/if(x=#)fini sh=1;/*结束标记*/coutvvacc!vvendl;/*接受*/getchar();exit(1); /退出程序/*if*/if(x=ch)prin t();prin t1();cout匹配e ndl;ch=B+b;/*下一个输入字符*/ flag=O;/*恢复标记*/else/*出错处理*/prin t();prin t1();cout出错vvendl;/*输出出错终结符*/ exit(1);else/*非终结符处理*/for(j=0;jv=4;j+)if(x=v2j) m=j;/*行号*/ b
10、reak;for(j=0;jv=7;j+)if(ch=v1j)n =j;/*列号*/ break;cha=Cm n;if(cha.orig in !=N)/*判断是否为空*/prin t();prin t1();coutvvcha.origi nv ”;for(j=0;jvcha.le ngth;j+) coutvvcha.arrayj;coutvvn;for(j=(cha.le ngth-1);j=O;j-)A+t op=cha.arrayj;if(At op =)/*为空则不进栈*/ top-;else/*出错处理*/*输出产生式*/*产生式逆序入栈*/prin t1();coutvv咄错
11、TCE-TCf fttCTttCTi-I-iWi-I-iW1-FS1-FSttUSFttUSFF-iF-ittCSittCSi匹配ticsticsE-MSE-MSb btttiSF-tttiSF-匹配flGSFflGSFi-iffi-iffF-iF-i? ?ttGSittGSii-itti-itt也配s sttCSttCS-lit-lit一汁9 9ttGttG-1#-1#G-TGG-TGlettGT-ttGT-itt-itt匹配11ACTACTittittT-FST-FS12124GSF4GSFittittF-iF-i1313fflCSifflCSiIttItt匹配i i弓HGSHGSS S汕ISttGttGttttG G16acc?acc?a a冷MiMicrosoftcrosoft VisualVisual &tjcioMyProject5iaoatDetu&tjcioMyProject5iaoatDetu毀ya:丘浪 w*/严,y円奇咸的叶结東的字符串a a行沪B BL L1!分析栈MEME ttCTttCTttUSFttUSFflCSiflCSilieslies ttG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 别墅灌溉维修合同范例
- 中介与客户之间合同范本
- 南京市租房合同范本
- 剧目创作合同范本
- 前期物业解聘合同范本
- 分期车有合同范本
- 2025年度酒店客房清洁服务外包合同-@-1
- 2025年压光内袋纸项目可行性研究报告
- 2025年度智能交通系统解决方案技术服务委托协议
- 2025年中国储能电站行业市场深度研究及投资策略研究报告
- 因产品质量买卖合同纠纷起诉状
- GB/T 6892-2023一般工业用铝及铝合金挤压型材
- 实验室危险废物处理废液分类与收集
- 生物技术制药课件
- 2020年新概念英语第一册lesson97-102单元检测
- 工业级七水硫酸亚铁
- 追求理解的教学设计课件资料文档
- 腹主动脉瘤(护理业务学习)
- 注射用醋酸亮丙瑞林微球
- 部编版语文五年级下册 全册教材分析
- 胎儿性别鉴定报告模板
评论
0/150
提交评论