课 程 设 计 课程名称 编译原理 题目名称 PL/0 扩充 学 院 专 业 班 级 学 号 姓 名 指导教师 2011 年 1 月 8 日 一. 课程设计目的与要求 1 、课程设计目的: 在分析理解一个教学型编译程序(如PL/0)的基础上,对其词法分析程序、语法分析程序和语义处理程序进行部分修改扩充
达到进一步了解程序编译过程的基本原理和基本实现方法的目的
2、课程设计要求: 基本内容(成绩范围:“中”、“及格”或“不及格”) (1)扩充赋值运算:+= 和 -= (2)扩充语句(Pascal 的FOR 语句): ①FOR := TO DO ②FOR := DOWNTO DO 其中,语句①的循环变量的步长为 1,语句②的循环变量的步长为-1
选做内容(成绩评定范围扩大到:“优”和“良”) (1)增加运算:++ 和 --
(2)增加类型:① 字符类型; ② 实数类型
(3)扩充函数:① 有返回值和返回语句;② 有参数函数
(4)增加一维数组类型(可增加指令)
(5)其他典型语言设施
二.实验环境与工具 (1)计算机及操作系统:PC 机,Window sXP (2)程序设计语言: VC++ 6
0, C/C++语言 (3)教学型编译程序:PL/0 三
结构设计方案 1 、 结构设计说明: PL/0的编译程序以语法分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序
此外,用表格管理程序建立变量,常量和过程标识符的说明与引用之间的信息联系
用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错误性质
2 、 各功能模块图示: 3
各功能模块作用表: 1 PL0 主程序 2 Error 出错处理,打印出错位置和错误编码 3 GetCh 漏