广东工业大学10级编译原理课程设计报告.docVIP

  • 18
  • 0
  • 约1.94万字
  • 约 19页
  • 2020-09-14 发布于浙江
  • 举报

广东工业大学10级编译原理课程设计报告.doc

《 编译原理 》 课程设计 实验时间: 实验班级: 姓 名: 焦王 学 号: 实验教师: 计算机学院 广东工业大学 基本内容 (1)扩充赋值运算:*= 和 /= (2)扩充语句(Pascal的FOR语句): ①FOR 变量:=表达式 TO 表达式 DO 语句 ②FOR 变量:=表达式 DOWNTO 表达式 DO 语句 其中,语句①的循环变量的步长为2,     语句②的循环变量的步长为-2。 (3)增加运算:++ 和 --。 (4)选做内容(成绩评定范围扩大到:“优”和“良”) (1)增加类型:① 字符类型; ② 实数类型。 (2)扩充函数:① 有返回值和返回语句;② 有参数函数。 (3)增加一维数组类型(可增加指令)。 (4)其他典型语言设施。 二、实验环境与工具 (1)计算机及操作系统:PC机,Windows7,WindowsXP (2)程序设计语言:C++Builder5,VC 6.0 (3)教学型编译程序:PL/0 设计方案 概述:源、目标语言,实现工具(平台),运行平台 源语言:PL/0语言 目标语言:类PCODE 实现工具:C++Builder 运行平台:windows 7 结构设计说明--各功能模块描述 1、 int POSITION(ALFA ID, int TX):查找标识符在名字表中的位置 2、 int BASE(int L,int B,int S[]):通过静态链求出数据区的基地址 3、 void Error(int n) :错误处理,打印出错位置和错误编码 4、 void GetCh():漏掉空格,读取一个字符 5、 void GetSym():词法分析,读取一个单词 6、 void GEN(FCT X, int Y, int Z):生成目标代码,并送入目标程序区 7、 void TEST(SYMSET S1, SYMSET S2, int N):测试当前单词符号是否合法 8、 void ENTER(OBJECTS K, int LEV, int TX, int DX):登录名字表 9、 void ConstDeclaration(int LEV,int TX,int DX):常量说明处理 10、void VarDeclaration(int LEV,int TX,int DX):变量说明处理 11、void CharDeclaration(int LEV,int TX,int DX):字符说明处理 12、void RealDeclaration(int LEV,int TX,int DX):实数说明处理 13、void ListCode(int CX0):列出目标代码清单 14、void FACTOR(SYMSET FSYS, int LEV, int TX) :因子处理 15、void TERM(SYMSET FSYS, int LEV, int TX) :项处理 16、void EXPRESSION(SYMSET FSYS, int LEV, int TX):表达式处理 17、void CONDITION(SYMSET FSYS,int LEV,int TX) :条件处理 18、void STATEMENT(SYMSET FSYS,int LEV,int TX) :语句部分处理 19、void Block(int LEV, int TX, SYMSET FSYS) :分程序分析处理过程 20、void Interpret() :对目标代码的解释执行程序 21、void __fastcall TForm1::ButtonRunClick(TObject *Sender):进行编译,RUN (3)主要成分描述 ① 符号表 符号表的主要功能如下:   1、收集符号属性   2、上下文语义合法性检查的依据 3、作为目标代码生成阶段地址分配的依据 ② 运行时存储组织和管理 解释程序定义了4个寄存器:1、指令寄存器.存放当前正在解释的一条目标指令2、程序地址寄存器.指向下一条要执行的目标程序的地址3、栈顶寄存器.4、基址寄存器.指向每个过程被调用时,在数据区S中给它分配原则的数据段起始地址,也称基地址. 当源程序经过语法分析,如果未发现错误时,由编译程序调用解释程序,对存放在CODE中的代码CODE[0]开始进行解释执行.当废弃结束后,记录源程序中标识符的TABLE表已没有作用.因此存储区只需以数组CODE存储的只读目标程序和运行机制时的数据区S,S是由解释程

文档评论(0)

1亿VIP精品文档

相关文档