编译原理课程设计---PL0编译器的功能扩充.doc

编译原理课程设计---PL0编译器的功能扩充.doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课程设计 课程名称 编译原理 题目名称 PL0编译器的功能扩充 学生学院 计算机学院 专业班级06级计算机科学与技术6班 学 号 2008 年 12 月 20日 一、完成的实验内容及说明 基本内容 (1)扩充赋值运算:+= 和 -= (2)扩充语句 REPEAT 语句序列 DOWHILE 条件 其中,条件是循环条件,即条件成立时,重复执行循环体的 语句序列 选做内容 (1)增加运算:++ 和 --。 (2)增加类型:① 字符类型; ② 实数类型。 (3)扩充函数:① 有返回值和返回语句;② 有参数函数。 (4)增加一维数组类型 二、实验环境与工具 (1)计算机及操作系统:PC机,WindowsXP (2)程序设计语言:C++Builder5,VC 6.0 (3)教学型编译程序:PL/0 三、设计方案 概述:源、目标语言,实现工具(平台),运行平台 源语言: PL/0;源程序文件以.PL0为后缀命名 目标语言: 目标代码(生成的文件后缀为*.COD) 实现平台: Borland C++Builder 6 运行平台: WindowsXP 结构设计说明:各功能模块描述 Error() 出错处理,打印出错位置和错误号 GetCh() 漏掉空格,读取一个字符 GetSym() 词法分析,读取一个单词 GEN() 目标代码生成过程,本过程用于把生成的目标代码写入目标代码数组,供后面的解释器解释执行 TEST() 测试当前单词是否合法过程test ENTER() 登陆符号表过程enter POSITION() 在符号表中查找指定符号所在位置的函数position,如果找不到就返回0 VARDECLARATION() 变量声明 LISTCODE() 列出目标代码清单; FACTOR() 因子处理过程factor TERM() 项处理过程term; EXPRESSION() 表达式处理过程 CONDITION() 条件处理过程 STATEMENT() 语句处理过程 BLOCK() 语法分析过程 BASE() 通过静态链求出数据区基地址的函数, INTERPRET () 对目标代码解释运行过程 主要成分描述 符号表 在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,符号表中所登记的信息在编译的不同阶段都要用到。 在语义分析中,符号表所登记的内容将用于语义检查(如检查一个名字的使用和原先的说明是否一致)和产生中间代码。 在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。对一个多遍扫描的编译程序,不同遍所用的符号表也往往各有不同。因为每遍所关心的信息各有差异。 一张符号表的每一项(或称入口才包含两大栏(或称区段、字域),即名字栏(NAME),信息栏(INFORMATION) ? 信息栏包含许多子栏和标志位,用来记录相应名字和种种不同属性,由于查填符号表一般是通过匹配名字来寮现的,因此,名字栏也称主栏。主栏的内容称为关键字(key word)。 运行时存储组织和管理 由于编译时目标程序运行的数据空间大小已经规定,所以存储组织属于静态存储。 源程序的标识符存放在TABLE表中,目标代码存放在CODE中,S是由解释程序定义的一维整型数组,是程序运行时的数据存储空间。 解释程序还定义了4个寄存器: 1)P:程序地址寄存器:指向下一条要执行的目标程序的地址(相当目标程序CODE数组的下标)。 2)I:指令寄存器:存放着当前正在解释的下一条目标指令。 3)T:栈顶寄存器:由于每个过程当它被运行时,给它分配的数据空间(下边称数据段)包括静态部分和动态部分,对于动态部分,要注意的是,栈顶寄存器指出了当前栈中最新分配的单元。 4)B:基址寄存器:指向每个过程被调用时,在数据区S中给它分配的数据段的起始地址,也称基地址。 语法分析方法 自顶向下的语法分析: 程序 分程序 . 变量说明部分 语句 VAR 标识符 ; 复合语句 A BEGIN 语句 END 读语句 READ ( 标识符 )

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档