资源描述:
《天津理工大学编译原理实验语义分析与中间代码生成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告学院(系)名称:计算机与通信工程学院姓名学号专业班级实验项目实验三:语义分析与中间代码生成课程名称编译原理课程代码实验时间实验地点计算机软件实验室7-220计算机软件实验室7-215批改意见成绩教师签字:实验内容:可选择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要求构造出符合语义分析要求的属性文法描述,并在完成实验二(语法分析)的基础上,进行语义分析程序设计,最终输出与测试用例等价的四元式中间代码序
8、列。实验目的:1.掌握语法制导翻译的基本功能。2.巩固对语义分析的基本功能和原理的认识。3.能够基于语法制导翻译的知识进行语义分析。4.掌握类高级语言中基本语句所对应的语义动作。5.理解并处理语义分析中的异常和错误。实验要求:1.在实验二的基础上,实现语法制导翻译功能,输出翻译后所得四元式序列;2.要求详细描述所选分析方法进行制导翻译的设计过程;3.完成对所设计分析器的功能测试,并给出测试数据和实验结果;4.为增加程序可读性,请在程序中进行适当注释说明;5.整理上机步骤,总结经验和体会;6.认真完成并按时提交实验报告。第16页共16页【实验
9、过程记录(源程序、测试用例、测试结果及心得体会等)】#include#include#definesize1024usingnamespacestd;intstep=0;typedefstructvariable_T{charoperate;//操作符stringvar1;//变量1stringvar2;//变量2intnum;//第几个变量}variable_T;variable_Tt[size];//记录四元式变量的变量inttsize=-1;//表示是第tsize+1个变量typedefstruc
10、tchar_stack{charcontent;//当前字符stringendchar;//这个符号代表的中间变量可以是i,也可以是t1,t2,等等intnum;//和该字符相关的中间变量的序号}char_stack;stringtable[19][13]={//+-*/^)#(iETFP/*0*/"err","err","err","err","err","err","err","s5","s6","1","2","3","4",/*1*/"s7","s8","err","err","err","err","acc","err","err
11、","err","err","err","err",/*2*/"r3","r3","s9","s10","err","r3","r3","err","err","err","err","err","err",/*3*/"r6","r6","r6","r6","err","r6","r6","err","err","err","err","err","err",/*4*/"r8","r8","r8","r8","s11","r8","r8","err","err","err","err","err","err",/*5*/"err","err
12、","err","err","err","err","err","s5","s6","c","2","3","4",/*6*/"r10","r10","r10","r10","r10","r10","r10","err","err","err","err","err","err",/*7*/"err","err","err","err","err","err","err","s5","s6","err","d","3","4",/*8*/"err","err","err","err","err","err","err","s5","s6",
13、"err","e","3","4",/*9*/"err","err","err","err","err","err","err","s5","s6","err","err","f","4",/*10*/"err","err","err","err","err","err","err","s5","s6","err","err","g","4",/*11*/"err","err","err","err","err","err","err","s5","s6","err","err","h","4",/*12*/"s7","s8","err",
14、"err","err","s18","err","err","err","err","err","err","err",/*13*/"r1","r1","s9","s10","e