课程设计(论文)
系 别 : 专业(班级):
作者(学号):
指导教师:蚌完成日期:学
PL/0编译器扩展
计算机科学与技术系
计算机科学与技术10级本科2班 付想(51002012038)
邹青青
2013年12月23 日
教务
埠院
目 录
一. 课程设计目的与要求 .......................................... 2 1、课程设计目的 ................................................... 2 2、课程设计要求 ................................................... 2 二. 实验环境与工具 .............................................. 2 三. 课程设计内容 ................................................ 2 1. PL/0语言介绍 .................................................. 2 2. 扩展要求 ....................................................... 3 3.扩展分析 ........................................................ 3 四.结构设计方案 .................................................... 4 1.结构设计说明: .................................................. 4 2.各功能模块图示: ................................................ 4 3.模块结构 ........................................................ 4 4. 各功能模块作用表: ............................................. 5 5. 符号名字表结构: ............................................... 6 6. 保留关键字枚举结构: ........................................... 6 7.名字表中标识符枚举类型: ........................................ 6 8.虚拟机 .......................................................... 7 9. 运行时存储组织和管理 ........................................... 7 10. 扩充部分语法描述图: .......................................... 8 11. 扩充赋值运算:+= 和 -= 设计: ................................. 9 12.扩充语句(Pascal的FOR语句) ................................. 10 13. 增加运算:++ 和 -- : ........................................ 13 五.程序测试 ....................................................... 19 5.1扩充赋值运算:+= 和 -= ....................................... 19 5.2 扩充语句(Pascal的FOR语句): ............................... 19 5.3增加运算:++ 和 --。 ......................................... 21 六.实验总结 ....................................................... 22 参考文献........................................................... 23 附录 源代码........................................................ 23
1
一. 课程设计目的与要求
1、课程设计目的
《编译原理》课程设计是编译原理课程必不可少的一个环节,通过课程设计,加深对编译原理的教学内容的了解,以及实现编译原理各部分知识的融合。进而提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力。
在分析理解一个教学型编译程序(如PL/0)的基础上,对其词法分析程序、语法分析程序和语义处理程序进行部分修改扩充。达到进一步了解程序编译过程的基本原理和基本实现方法的目的。
2、课程设计要求
1.明确课设任务,复习与查阅有关资料。
2.按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。 3.注意增强程序界面的友好性。凡用户输入时,给出足够的提示信息使用户感到方便使用。
4.注意提高程序的可读性和可理解性:程序中应有适当的注释,变量命名应符合实际含义,程序结构清晰,易于阅读和理解。
二. 实验环境与工具
1.计算机及操作系统:PC机,WindowsXP 2.程序设计语言: VC++ 6.0, C/C++语言 3.教学型编译程序:PL/0
三. 课程设计内容
1. PL/0语言介绍
PL/0程序设计语言是一个较简单的语言,它以赋值语句为基础,构造概念有顺序、条件和重复(循环)三种。PL/0有子程序概念,包括过程定义(可以嵌套)与调用且有局部变量说明。PL/0中唯一的数据类型是整型,可以用来说明该类型的常量和变量。当然PL/0也具有通常的算术运算和关系运算。
2
2. 扩展要求
(1)扩展一维数组 var 变量名[上界:下界] (2)扩展IF。。。ELSE (3)扩展++,-- (4)扩展+=,-=
(5)扩展Repeat。。。Untill(DoWhile)
3.扩展分析
扩充语句的语法描述图如图3-1所示:
图3-1扩充语句语法描述图
A++和A—的语法描述图如图3-2所示:
图3-2A++和A—的语法描述图
++A和—A的语法描述图如图3-3所示: 语句:
图3-3++A和—A的语法描述图
3
四.结构设计方案
1.结构设计说明:
PL/0的编译程序以语法分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序。此外,用表格管理程序建立变量,常量和过程标识符的说明与引用之间的信息联系。用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错误性质。
2.各功能模块图示:
各功能模块如图4-1所示:
图4-1各功能模块图
3.模块结构
对各种类型的管理; 对返回值的处理; 对for语句的处理; 对case语句的处理;
主要模块的调用关系如下图4-2所示:
4