资源描述:
《广工编译原理课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计课程名称编译原理题目名称编译原理课程设计学生学院计算机学院专业班级2011级计算机科学与技术7班学号3111006002学生姓名谢佳旭2013年1月08日目录一、课程设计目的..........................................5二、课程设计要求..........................................51、设计内容............................................5三、课程设计环境与工具....................................6四、结构设计说明......
2、....................................51、PL/0语言编译器.....................................52、总流程图............................................63、各功能模块描述......................................6五、主要成分描述..........................................7六、测试用例.............................................91、测试*=和/=的
3、运算功能................................92、测试FOR语句功能.....................................9七、开发过程和完成情况....................................91、扩充赋值运算:*=和/=..............................92、扩充FOR语句(Pascal)..............................103、添加单行注释.......................................12八、心得体会...............
4、..............................14一、课程设计目的在分析理解一个教学型编译程序(如PL/0)的基础上,对其词法分析程序、语法分析程序和语义处理程序进行部分修改扩充。达到进一步了解程序编译过程的基本原理和基本实现方法的目的。二、课程设计要求1.课程设计基本内容(成绩范围:“中”、“及格”或“不及格”)(1)扩充赋值运算:*=和/=扩充语句(Pascal的FOR语句):FOR<变量>:=<表达式>STEP<表达式>UNTIL<表达式>Do<语句>选做内容(成绩评定范围扩大到:“优”和“良”)(1)增加类型:①字符类型;②实数类型。(2)增加注释;注释由/*和*/包
5、含;(3)扩充函数:①有返回值和返回语句;②有参数函数。(4)增加一维数组类型(可增加指令)。(5)其他典型语言设施。三、课程设计环境与工具(1)运行平台:WIN7旗舰SP1(2)实现工具:C++Builder6.0(3)教学型编译程序:PL/0四、结构设计说明和各功能模块描述(1)PL/0语言编译器PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。出错处理函数表格管理函数PL/0源程序目标代码生成程序程序目标代码生成程序程序目标代码生成程序程序目标代码生成程序程序目标代码生成程序程序(2)PL/
6、0编译程序的过程或函数的功能表1、voidError(intn):错误处理,打印出错位置和错误编码2、voidGetCh():漏掉空格,读取一个字符3、voidGetSym():词法分析,读取一个单词4、voidGEN(FCTX,intY,intZ):生成目标代码,并送入目标程序区5、voidTEST(SYMSETS1,SYMSETS2,intN):测试当前单词符号是否合法6、voidENTER(OBJECTSK,intLEV,int&TX,int&DX):登录名字表7、intPOSITION(ALFAID,intTX):查找标识符在名字表中的位置8、voidConstDeclaratio
7、n(intLEV,int&TX,int&DX):常量说明处理9、voidVarDeclaration(intLEV,int&TX,int&DX):变量说明处理10、voidCharDeclaration(intLEV,int&TX,int&DX):字符说明处理11、voidRealDeclaration(intLEV,int&TX,int&DX):实数说明处理12、voidListCode(intCX0):列出目标代码清