天津理工大学编译原理实验3语义分析与中间代码生成

天津理工大学编译原理实验3语义分析与中间代码生成

ID:47221503

大小:135.08 KB

页数:18页

时间:2019-08-28

天津理工大学编译原理实验3语义分析与中间代码生成_第1页
天津理工大学编译原理实验3语义分析与中间代码生成_第2页
天津理工大学编译原理实验3语义分析与中间代码生成_第3页
天津理工大学编译原理实验3语义分析与中间代码生成_第4页
天津理工大学编译原理实验3语义分析与中间代码生成_第5页
资源描述:

《天津理工大学编译原理实验3语义分析与中间代码生成》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、学院(系)名称:计算机与通信工程学院姓名学号专业班级实验项目实验三:语义分析与小间代码生成课程名称编译原理课程代码实验时间实验地点计算机软件实验室7-220计算机软件实验室7-215批改意见成绩教师签字:实验内容:可选择LL1分析法、算符优先分析法、LR分析法2—,实现如下表达式文法的语法制导翻译过程。文法G[E]如下所示:E->E+T

2、E-T

3、TT-T*F

4、T/F

5、FF->PAF

6、PP-(E)

7、i要求构造岀符合语义分析要求的属性文法描述,并在完成实验二(语法分析)的基础上,进行语义分析程序设计,最终输出与测试用例等价的四元式中间代码序列。实验目的:1.

8、掌握语法制导翻译的基本功能。2.巩固对语义分析的基木功能和原理的认识。3.能够基于语法制导翻译的知识进行语义分析。4.掌握类高级语言中基本语句所对应的语义动作。5•理解并处理语义分析屮的异常和错谋。实验要求:1.在实验二的棊础上,实现语法制导翻译功能,输出翻译后所得四元式序列;2.要求详细描述所选分析方法进行制导翻译的设计过程;3.完成对所设计分析器的功能测试,并给出测试数据和实验结果;4.为增加程序可读性,请在程序中进行适当注释说明;5.整理上机步骤,总结经验和体会;6.认真完成并按时提交实验报告。【实验过程记录(源程序、测试用例、测试结果及心得体会等

9、)】#include#include#definesize1024usingnamespacestd;intstep=0;typedefstructvariable_T{charoperate;//操作符stringvarl;//变量1stringvar2;〃变量2intnum;//笫儿个变量}variable_T;variablc_Tt[sizc];//记录四元式变量的变量inttsize=-l;//表示是第tsize+1个变量typedefstructchar_stack{charcontent;//当前字符st

10、ringendchar;//ii个符号代表的中间变量可以是i,也口J以是tl,t2,等等intnum;//和该字符相关的中间变量的序号}char_stack;stringtablefl9][13]={//+・*/A)#(iET/*0*//*1*//*2*//*3*//*4*//*5*//*6*//*7*//*8*//*9*//*jo*/FP”r3“,”r3“,“s9Tsl0“,”err”,”r3”,”r3”,”err”,”err”,”err“,”err”,”err”,”err”,“r6“,”r6“,nr6u,,,r6H,uerru,ur&“r6Terr

11、“,”err”,”err”,“err“,”err”,”err”,/*]]*//*12*//*13*//*I*/”r5”,”r5”,15”,15Terr”,Hr5n,,,r5n,nerr,,;'errn;,err,V,erru,nerr,err'/*17*//*is*/'T7”,17”,'T7”,'T7“,”cit”,'T7“,'T7“,”cir”,”crr”,“ciT“,“ciT“,”ciT”,”crr”,”r9”,”r9”,”r9”,“r9“,nr9u,nr9H,ur9H;,err,,,,,err,,;,errH,Herr,,;,err,,,,,

12、errn);intgetLength(charstr[sizej)Iinti=0;while(str[i]!=,O,)i++;returni;}intgetLengthc(char_stackstr[size]){inti=0;while(str[il.content!=,*)i++;returni;}intgetstringLength(stringstr){inti=0;while(str[i]!=,O,)returni;}chargettop(charstack[sizej,inttop){if(stackftopl!=V)*)return

13、stack[top];elsereturn#;}voidpopstack(char*stack,int*pointcr,inttimes){intp;for(inti=l;i<=times;i++){p=*pointcr;stack[p]=,';(^pointer)-;voidpopstackc(char_stack*stack,int*pointer,inttimes){intp;for(inti=l;i<=timcs;i++){p二*pointer;stackfpj.content二'O';(*pointer)—;voidpushstack(ch

14、ar_stack*stack,int*pointer,char*stack_st

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

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

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