课程设计
课程名称题目名称学生学院
编译原理PL0编译器的扩充计算机学院
专业班级计算机科学与技术124学号3112005901柏石先李杨
学生姓名指导教师程序功能完成情况测试用例全面程度学生对所编程序熟悉程度报告格式是否与要求相符报告内容是否准确、全面
2014年12月28日
f一、实验目的与要求
基本内容(成绩范围:“中”、“及格”或“不及格”)(1)扩充赋值运算:和(2)扩充语句(Pascal的FOR语句)FOR变量表达式STEP表达式UNTIL表达式Do语句选做内容(成绩评定范围扩大到:“优”和“良”)(1)增加类型:①字符类型;(2)增加注释注释由和包含;(3)扩充函数:①有返回值和返回语句;②有参数函数。(4)增加一维数组类型(可增加指令)。(5)其他典型语言设施。②实数类型。
二、实验环境与工具
1、源语言:PL0语言,PL0语言是PASCAL语言的子集,它的编译程序是一个编译解析执行系统,后缀名为PL0;2、目标语言:生成文件后缀为COD的目标代码3、实现平台:Borla
dCBuilder64、运行平台:Wi
dows81
三、设计概述
1、结构设计说明
(1)PL0编译系统的结构框架
PL0序表格管理函数目标代码生成程序程序目标代码生成程序程序目标代码生成程序程序目标代码生成程序程序目标代码生成程序程序出错处理函数源程
f源语言:源语言是基于C语言写的PL0编译程序PL0语言(可语言的子集)目标语言:假想的栈式计算机计算语言,即类PCODE指令代码。指令格式如下:
以看成Pascal
f
l
a
其中f代表功能码,l表示层次差,a的含意对不同的指令有所区别。具体的指令功能表:LIT0aLODlaSTOlaCALlaINT0aJMP0aJPC0aOPR00OPR01OPR02OPR03OPR04OPR05OPR06OPR07OPR08OPR09OPR010OPR011OPR012OPR013OPR014OPR015OPR016次栈顶与栈顶是否相等,退两个栈元素,结果值进栈次栈顶与栈顶是否不等,退两个栈元素,结果值进栈次栈顶是否小于栈顶,退两个栈元素,结果值进栈次栈顶是否大于等于栈顶,退两个栈元素,结果值进栈次栈顶是否大于栈顶,退两个栈元素,结果值进栈次栈顶是否小于等于栈顶,退两个栈元素,结果值进栈栈顶值输出至屏幕屏幕输出换行从命令行读入一个输入置于栈顶将常数值取到栈顶,a为常数值将变量值取到栈顶,a为偏移量,l为层差将栈顶内容送入某变量单元中,a为偏移量,l为层差调用过程,a为过程地址,l为层差在运行栈中为被调用的过程开辟a个单元的数据区无条r