实验三 语义分析及中间代码生成
一 、实验目的
通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法
范畴变换为某种中间代码的语义翻译方法。
二 、实验内容
实现简单的高级语言源程序的语义处理过程。
三 试验要求
(一) 程序设计要求
(1) 目 标 机:8086 及其兼容处理器
(2) 中间代码:三地址码或者四元式
(3) 设计结果:语法分析树(节点具有属性)、三地址码表、符号表、TOKEN 串表
(4) 语义分析内容要求:
1) 变量说明语句
2) 赋值语句
3) 控制语句(任选一种)
(5) 其它要求:
1) 将词法分析(扫描器)作为子程序,供语法语义程序调用;
2) 使用语法制导的语义翻译方法;
3) 编程语言自定;
4) 最好提供源程序输入界面;
5) 目标代码生成暂不做;
6) 编译后,可查看 TOKEN 串、语法分析树、符号表、三地址码表;
7) 主要数据结构:产生式表、符号表、语法分析树、三地址码表。
四 、实验设计
(1) 系统功能(包括各个子功能模块的功能说明);
可对一段包含加减乘除括号的赋值语句进行语法分析,其必须以$为终结符,语
句间以;隔离,判断其是否符合语法规则,依次输出判断过程中所用到的产生式,并输
出最终结论,若有错误可以报错并提示错误所在行数及原因
(2) 开发平台(操作系统、设计语言);
Windows 7,Microsoft Visual C++ 6.0(Dos),C++。
(3) 数据结构
struct token//词法 token 结构体
{
int code;//编码
int num;//递增编号
token *next;
};
token *token_head,*token_tail;//token 队列
struct str//词法 string 结构体