下载此文档

编译原理课程设计报告---PL0编译程序改进及完善.doc


文档分类:IT计算机 | 页数:约23页 举报非法文档有奖
1/23
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/23 下载此文档
文档列表 文档介绍
燕山大学
《编译原理课程设计》
题目:《PL/0编译程序改进及完善》
姓名:简越
班级:06级计算机应用3班
学号:4
日期:2009年7月15日
设计题目:
PL/0编译程序改进及完善。
设计目的:
阅读研究,改进设计和调试一个简单的编译程序。加深对编译理论和过程的了解。
设计要求:
,完善.
,以便反应出自己作出改进后的编具有的功能。
设计思想:
PL/0语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。
PL/0的编译程序和目标程序的解释执行程序都是用PASCAL语言书写的,因此PL/0语言可在配备PASCAL语言的任何机器上实现。其编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需要生成相应的目标代码时,则调用代码生成程序。
用表格管理程序建立变量、常量和过程表示符的说明与引用之间的信息联系。
当源程序编译正确时,PL/0编译程序自动调用解释执行程序,对目标代码进行解释执行,并按用户程序的要求输入数据和输出运行结果。

主要变量说明:
/*变量说明*/
FILE* fas; /*输出名字表*/
FILE* fa; /*输出虚拟机代码*/
FILE* fa1; /*输出源文件及其各行对应的首地址*/
FILE* fa2; /*输出结果*/
bool listswitch; /*显示虚拟机代码与否*/
bool tableswitch; /*显示名字表与否*/
char ch; /*获取字符的缓冲区,getch使用*/
enum symbol sym; /*当前的符号*/
char id[al+1]; /*当前ident,多出的一个字节用于存放0*/
int num; /*当前number*/
,ll; /*表示当前字符(ch)的位置*/
int cx; /*虚拟机代码指针,取值范围[0,cxmax-1]*/
char line[81]; /*读取行缓冲区*/
char a[al+1]; /*临时符号,多出的一个字节用于存放0*/
struct instruction code[cxmax]; /*存放虚拟机代码的数组*/
char word[norw][al]; /*保留字*/
enum symbol wsym[norw]; /*保留字对应的符号值*/
enum symbol ssym[256]; /*单字符的符号值*/
char mnemonic[fctnum][5]; /*虚拟机代码指令名称*/
bool declbegsys[symnum]; /*表示声明开始的符号集合*/
bool statbegsys[symnum]; /*表示语句开始的符号集合*/
bool facbegsys[symnum]; /*表示因子开始的符号集合*/
/* 目标指令*/
1、LIT:将常量值取到运行栈顶.
2、LOD:将变量放到运行栈顶.
3、STO:将栈顶的内容送入某变量单元中.
4、CAL:调用过程的指令.
5、INT:为被调用的过程(或主程序)在运行栈中开辟数据区.
6、JMP:无条件转移指令.
7、JPC:条件转移指令,当栈顶的布尔值为真时, 顺序执行,否则转向域的地址.
8、OPR:,结果存放栈顶.
/*函数说明*/
void error(int n,int line)
说明:出错处理函数,打印出错信息,错误总数加1。
int getch()
说明:读取字符函数,返回字符。
int getsym()
说明:读取下一单词符号
int position(char* idt,int tx);
说明:字符在符号表中位置查询函数
返回值:返回标识符在符号表中的索引
int gen(enum fct x,int y,int z);
说明:生成P代码指令
int test(bool* s1,bool* s2,int n);
说明:测试当前符号是否合法,若不合法,打印出错信息并进行跳读
void enter(enum object k, int* ptx,int lev,int* pdx);
说明:在符号表中登录分程序说明部分出现的名字
int constdeclaration(int* ptx,int lev,int* pdx);
说明:处理常量说明,并将常量名及相应信息填入符号表
int var

编译原理课程设计报告---PL0编译程序改进及完善 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数23
  • 收藏数0 收藏
  • 顶次数0
  • 上传人bai1968104
  • 文件大小4.47 MB
  • 时间2018-06-15