好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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

实验报告 学院(系)名称:计算机与通信工程学院

姓名 学号 专业 班级 实验项目 实验三:语义分析与中间代码生成 课程名称 编译原理 课程代码

计算机软件实验室7-220 实验时间 实验地点 计算机软件实验室7-215 批改意见 成绩

教师签字: 实验内容:

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

E?E+T | E-T | T T?T*F | T/F | F F?P^F | P P?(E) | i

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

实验目的:

1(掌握语法制导翻译的基本功能。

2(巩固对语义分析的基本功能和原理的认识。 3(能够基于语法制导翻译的知识进行语义分析。 4(掌握类高级语言中基本语句所对应的语义动作。 5(理解并处理语义分析中的异常和错误。

实验要求:

1(在实验二的基础上,实现语法制导翻译功能,输出翻译后所得四元式序列; 2(要求详细描述所选分析方法进行制导翻译的设计过程;

3(完成对所设计分析器的功能测试,并给出测试数据和实验结果; 4(为增加程序可读性,请在程序中进行适当注释说明; 5(整理上机步骤,总结经验和体会; 6(认真完成并按时提交实验报告。 第1页 共16页

【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 #include #include #define size 1024 using namespace std; int step=0;

typedef struct variable_T {

char operate;//操作符 string var1;//变量 1 string var2;//变量 2 int num;//第几个变量 }variable_T;

variable_T t[size];//记录四元式变量的变量 int tsize=-1;//表示是第tsize+1个变量 typedef struct char_stack

{

char content;//当前字符

string endchar;//这个符号代表的中间变量 可以是 i, 也可以是 t1, t2, 等等

int num;//和该字符相关的中间变量的序号 }char_stack;

string table[19][13]={// + - * / ^ ) # ( i E T F P

/* 0 */ \\

/* 1 */ \

\

/* 2 */ \\

/* 3 */ \\

/* 4 */ \\

/* 5 */ \\

/* 6 */

\\

/* 7 */ \\

/* 8 */ \\

/* 9 */ \\

/* 10*/ \\

/* 11*/ \\

/* 12*/ \

\

/* 13*/ \\

/* 14*/ \\

/* 15*/ \\

/* 16*/ \\

第2页 共16页

/* 17*/ \\

/* 18*/ \\

int getLength(char str[size]) {

int i=0;

while(str[i]!='\\0') i++; return i; }

int getLengthc(char_stack str[size]) { int i=0;

while(str[i].content!='\\0') i++; return i; }

int getstringLength(string str) { int i=0;

while(str[i]!='\\0') i++; return i; }

char gettop(char stack[size],int top) {

if(stack[top]!='\\0') return stack[top]; else return '#';

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

天津理工大学编译原理实验3语义分析与中间代码生成实验报告学院(系)名称:计算机与通信工程学院姓名学号专业班级实验项目实验三:语义分析与中间代码生成课程名称编译原理课程代码计算机软件实验室7-220实验时间实验地点计算机软件实验室7-215批改意见成绩教师签字:实验内容:<
推荐度:
点击下载文档文档为doc格式
41cx23063c81m9s40mcz3j4le87mw200j6b
领取福利

微信扫码领取福利

微信扫码分享