1、 0 编译原理课程设计 项目名称 PL/0 语言的扩充语言的扩充 学 院 计算机学院 专业班级 学 号 姓 名 指导教师 2013 年 1 月 3 日 报告成绩 0 一一 课程设计目的课程设计目的0 二二 课程设计要求课程设计要求0 基本内容:基本内容:. 0 选做内容:选做内容:. 0 已实现的功能:已实现的功能: 0 三三 编译环境与工具编译环境与工具 .0 四四 结构设计说明结构设计说明0 1 1PL/0PL/0 编译程序编译程序的结构图的结构图. 0 2 2PL/0PL/0 编译程序的过程或函数的功能表编译程序的过程或函数的功能表 1 3 3PL/0PL/0 编译程序的总体流程图编译程
2、序的总体流程图 1 4 4PL/0PL/0 编译程序的中间代码编译程序的中间代码 2 5 5PLPL 0 0 的编译程序的过程和函数的功能的编译程序的过程和函数的功能 3 五五 课程设计的设计与步骤课程设计的设计与步骤 3 1扩充赋值运算:扩充赋值运算:+= -= *= /= + 和和- - . 5 2增加增加 PASCAL的的 FOR 语句语句 15 3一维数组一维数组 17 六六 调试测试调试测试 19 1.+= 1.+= - -= *= /= + = *= /= + -的测试的测试 . 19 2.FOR2.FOR 语句的测试语句的测试 21 3.3.数组的调试数组的调试 22 4 4综合
3、调试综合调试 23 七七 课程设计总结课程设计总结. 25 【参考文献】【参考文献】 26 0 一一课程设计目的课程设计目的 在分析理解一个教学型编译程序(如 PL/0)的基础上,对其词法分析程序、语法分析 程序和语义处理程序进行部分修改扩充。 达到进一步了解程序编译过程的基本原理和基本实 现方法的目的。 二二课程设计要求课程设计要求 基本内容基本内容: (1)扩充赋值运算:*= 和 /= (2)扩充语句(Pascal 的 FOR 语句): FOR := TO DO FOR := DOWNTO DO 其中,语句的循环变量的步长为 2,语句的循环变量的步长为-2。 (3)增加运算:+ 和 -。
4、选做选做内容内容: (1)增加类型: 字符类型; 实数类型。 (2)扩充函数: 有返回值和返回语句; 有参数函数。 (3)增加一维数组类型(可增加指令) 。 (4)其他典型语言设施。 已实现的功能已实现的功能: (1)扩充赋值运算:*=和 /= (另外也扩充了+= 和 -=) (2)扩充语句(Pascal 的 FOR 语句): FOR := TO DO FOR := DOWNTO DO (3)增加运算:+ 和 -。 (4)增加一维数组类型(可增加指令) 。 三三编译环境与工具编译环境与工具 编译环境:编译环境:Microsoft Windows 7 (64bit) 编译工具:编译工具:Micr
5、osoft Visual C+ 6.0 四四结构设计说明结构设计说明 1 1PL/0PL/0 编译程序的结构图编译程序的结构图 1 2 2PL/0PL/0 编译程序的过程或函数的功能表编译程序的过程或函数的功能表 过程或函数名 简要功能说明 pl0 主程序 error 出错处理,打印出错位置和错误编码 getsym 词法分析,读取一个单词 getch 漏掉空格,读取一个字符 gen 生成目标代码,并送入目标程序区 test 测试当前单词符号是否合法 block 分程序分析处理过程 enter 登录名字表 position(函数) 查找标识符在名字表中的位置 constdeclaration 常
6、量定义处理 vardeclaration 变量说明处理 listode 列出目标代码清单 statement 语句处理 expression 表达式处理 term 项处理 factor 因子处理 condition 条件处理 interpret 对目标代码的解释执行程序 base(函数) 通过静态链求出数据区的基地址 表 4-1 PL/0 编译程序的过程或函数的功能表 3 3PL/0PL/0 编译程序的总体流程图编译程序的总体流程图 PL/0 源程序 词法分析程序 语法语义分析程序 代码生成 目标代码 表 格 管 理 程 序 出 错 管 理 程 序 图 4-1 PL/0 编译程序的结构图 2 启动启动 置初值置初值 调用调用GETSYM取单词取单词 调用调用BLOCK过程过程 当前单词当前单词 是否为源程序结束符是否为源程