天津理工大学实验报告

天津理工大学实验报告

ID:35669316

大小:121.00 KB

页数:7页

时间:2019-04-10

天津理工大学实验报告_第1页
天津理工大学实验报告_第2页
天津理工大学实验报告_第3页
天津理工大学实验报告_第4页
天津理工大学实验报告_第5页
资源描述:

《天津理工大学实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验内容:可选择LL1分析法、算符优先分析法、LR分析法之一,实现如下表达式文法的语法制导翻译过程。文法G[E]如下所示:E→E+T

2、E-T

3、TT→T*F

4、T/F

5、FF→P^F

6、PP→(E)

7、i要求构造出符合语义分析要求的属性文法描述,并在完成实验二(语法分析)的基础上,进行语义分析程序设计,最终输出与测试用例等价的四元式中间代码序列。实验目的:1.掌握语法制导翻译的基本功能。2.巩固对语义分析的基本功能和原理的认识。3.能够基于语法制导翻译的知识进行语义分析。4.掌握类高级语言中基本语句所对应的语义动作。5.理解并处理语义分析中的异常和错误。实验要求

8、:1.在实验二的基础上,实现语法制导翻译功能,输出翻译后所得四元式序列;2.要求详细描述所选分析方法进行制导翻译的设计过程;3.完成对所设计分析器的功能测试,并给出测试数据和实验结果;4.为增加程序可读性,请在程序中进行适当注释说明;5.整理上机步骤,总结经验和体会;6.认真完成并按时提交实验报告。开始词法分析中间代码语法、语义分析出错处理语法、语义分析中间代码生成结束实验步骤:---1语义子程序为:(会生成四元式的部分:)(1)P→i(2)E→E+Temit(+,E.place,T.place,E.place);(3)E→E-Temit(-,E.pl

9、ace,T.place,E.place);(4)T→T*Femit(*,T.place,F.place,T.place);(5)T→T/Femit(/,T.place,F.place,T.place);(6)F→P^Femit(^,P.place,F.place,F.place);(7)P→(E)---2源代码:第7页共7页#include#include#include#includeusingnamespacestd;inttable[10][10]={{1,1,-1,-1,-

10、1,-1,-1,1,1},{1,1,-1,-1,-1,-1,-1,1,1},{1,1,1,1,-1,-1,-1,1,1},{1,1,1,1,-1,-1,-1,1,1},{1,1,1,1,-1,-1,-1,1,1},{1,1,1,1,1,2,2,1,1},{-1,-1,-1,-1,-1,-1,-1,0,1},{1,1,1,1,1,2,2,1,1},{-1,-1,-1,-1,-1,-1,-1,2,0}};//1表示优先,-1表示落后,0表示同等,2表示不具可比性charstSymbol[100];//定义栈,用来存储终结符charstSemantic[10

11、0];//语义栈inttop=-1;//栈顶指针inti=0;staticintcount=75;//新建的符号的小标//判断是否为终结符intIsVT(charstr){if(str=='+'

12、

13、str=='-'

14、

15、str=='*'

16、

17、str=='/'

18、

19、str=='^'

20、

21、str=='('

22、

23、str=='i'

24、

25、str==')'

26、

27、str=='#')return1;return0;}//操作符判断intIsOpe(charstr){if(str=='+'

28、

29、str=='-'

30、

31、str=='*'

32、

33、str=='/'

34、

35、str=='^')return1

36、;return0;}//有字符判断该字符在table数组中的位置intIndex(charstr){switch(str){case'+':return0;case'-':return1;case'*':return2;case'/':第7页共7页return3;case'^':return4;case'i':return5;case'(':return6;case')':return7;case'#':return8;}return0;}intCompare(chartop,charinput){inti=Index(top);intj=Index(

37、input);returntable[i][j];}//动作分析stringAction(charvt,char&s1,char&s2,inti,string&s3){stringstr;switch(vt){case'i':s1='F';s2=stSemantic[i];s3="1";return"";case'+':s1='E';s2=(char)count++;s3="2";str="(+,";str+=stSemantic[i-1];str+=",";str+=stSemantic[i+1];str+=",";str+=s2;str+=")";

38、returnstr;case'-':s1='E';s2=(char)count++;s3="3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。