1、 课课 程程 设设 计计 课程名称_编译原理_ 题目名称_编译课程设计_ 学生学院_计算机学院_ 专业班级_ _ 学 号_ _ 2011 年 1 月 8 日 一、实验目的一、实验目的 在分析理解一个教学型编译程序(如在分析理解一个教学型编译程序(如 PL/0PL/0)的基础上,对其词法分析程序、语法分析程序)的基础上,对其词法分析程序、语法分析程序 和语义处理程序进行部分修改扩充。达到进一步了解程序编译过程的基本原理和基本实现和语义处理程序进行部分修改扩充。达到进一步了解程序编译过程的基本原理和基本实现 方法的目的。方法的目的。 二二、课程设计要求课程设计要求 基本内容基本内容(成绩范围: “
2、中” 、 “及格”或“不及格” )(成绩范围: “中” 、 “及格”或“不及格” ) (1)扩充赋值运算:)扩充赋值运算:+= 和和 -= (2)扩充语句()扩充语句(Pascal 的的 FOR 语句)语句): FOR := TO DO FOR := DOWNTO DO 其中,语句其中,语句的循环变量的步长为的循环变量的步长为 2, 语句语句的循环变量的步长为的循环变量的步长为-2。 选做内容选做内容(成绩评定范围扩大到: “优”和“良” )(成绩评定范围扩大到: “优”和“良” ) (1)增加运算:)增加运算:+ 和和 -。 (2)增加类型:)增加类型: 字符类型;字符类型; 实数实数类型。
3、类型。 (3)扩充函数:)扩充函数: 有返回值和返回语句;有返回值和返回语句; 有参数函数。有参数函数。 (4)增加一维数组类型(可增加指令) 。)增加一维数组类型(可增加指令) 。 (5)其他典型语言设施。)其他典型语言设施。 三、实验环境与工具三、实验环境与工具 (1 1)计算机及操作系统:)计算机及操作系统:PCPC 机,机,Windows2000Windows2000,WindowsXPWindowsXP (2 2)程序设计语言:)程序设计语言:C+Builder5C+Builder5,VC 6.0VC 6.0 (3 3)教学型编译程序:)教学型编译程序:PL/0 PL/0 四、四、设
4、计原理与方案设计原理与方案 1PL0 语言结构图如下语言结构图如下 2各功能模块描述各功能模块描述 模块名:模块名:主函数模块主函数模块(即:void _fastcall TForm1:ButtonRunClick(TObject *Sender)) 输 入:PL/0 源程序 输 出:目标程序和运行结果 功功 能:主程序初始化编译环境,建立能:主程序初始化编译环境,建立关键字关键字表,调用分程序表,调用分程序 Block 对源文件进行编译,当对源文件进行编译,当 源程序编译正确时,自动调用解释执行程序,对目标代码进行解释执行。源程序编译正确时,自动调用解释执行程序,对目标代码进行解释执行。 模块名:Error(即:void Error(int n)) 输 入:出错位置 CC 和错误性质编号 N 输 出:显示出错信息 功 能:出错处理,打印出错位置和错误性质编号。 模块名:GetSym(