广东工业大学10级编译原理课程设计报告
-CAL-FENGHAI.-(YICAI)-Company One1
《 编译原理 》 课程设计
实验时间: 实验班级: 姓 名: 焦王 学 号: 实验教师:
计算机学院 广东工业大学
2
3
一、基本内容
(1)扩充赋值运算:*= 和 /=
(2)扩充语句(Pascal的FOR语句):
①FOR <变量>:=<表达式> TO <表达式> DO <语句> ②FOR <变量>:=<表达式> DOWNTO <表达式> DO <语句> 其中,语句①的循环变量的步长为2, 语句②的循环变量的步长为-2。 (3)增加运算:++ 和 --。
(4)选做内容(成绩评定范围扩大到:“优”和“良”)
(1)增加类型:① 字符类型; ② 实数类型。 (2)扩充函数:① 有返回值和返回语句;② 有参数函数。 (3)增加一维数组类型(可增加指令)。 (4)其他典型语言设施。
二、实验环境与工具
(1)计算机及操作系统:PC机,Windows7,WindowsXP (2)程序设计语言:C++Builder5,VC 6.0 (3)教学型编译程序:PL/0 三、设计方案
(1)概述:源、目标语言,实现工具(平台),运行平台 源语言:PL/0语言 目标语言:类PCODE 实现工具:C++Builder
4
运行平台:windows 7
(2)结构设计说明--各功能模块描述
1、
int POSITION(ALFA ID, int TX):查找标识符在名字表中的位置
2、 int BASE(int L,int B,int S[]):通过静态链求出数据区的基地址 3、 4、 5、 6、 7、 是否合法
8、 表
9、 void ConstDeclaration(int LEV,int &TX,int &DX):常量说明处理 10、void VarDeclaration(int LEV,int &TX,int &DX):变量说明处理 11、void CharDeclaration(int LEV,int &TX,int &DX):字符说明处理 12、void RealDeclaration(int LEV,int &TX,int &DX):实数说明处理 13、void ListCode(int CX0):列出目标代码清单
14、void FACTOR(SYMSET FSYS, int LEV, int &TX) :因子处理 15、void TERM(SYMSET FSYS, int LEV, int &TX) :项处理
16、void EXPRESSION(SYMSET FSYS, int LEV, int &TX):表达式处理 17、void CONDITION(SYMSET FSYS,int LEV,int &TX) :条件处理 18、void STATEMENT(SYMSET FSYS,int LEV,int &TX) :语句部分处理
5
void ENTER(OBJECTS K, int LEV, int &TX, int &DX):登录名字void Error(int n) :错误处理,打印出错位置和错误编码 void GetCh():漏掉空格,读取一个字符 void GetSym():词法分析,读取一个单词
void GEN(FCT X, int Y, int Z):生成目标代码,并送入目标程序区 void TEST(SYMSET S1, SYMSET S2, int N):测试当前单词符号