编译原理PL0课程设计汇本报告_第1页
编译原理PL0课程设计汇本报告_第2页
编译原理PL0课程设计汇本报告_第3页
编译原理PL0课程设计汇本报告_第4页
编译原理PL0课程设计汇本报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计 班级:21301 学号:1361080108 :马瑞泽 百度 一.课程设计目的 在分析理解一个教学型编译程序(如PL/O)的基础上,对其词法分析程序、 语法分析程序和语义处理程序进行部分修改扩充。达到进一步了解程序编译过 程的基本原理和基本实现方法的U的。 二.课程设计要求 1. 基本容 (1)扩充赋值运算:+二和-= (2)扩充语句(Pascal的FOR语句): FOR变量:二表达式TO表达式DO语句 FOR变量:二表达式DOWNTO表达式DO 语句 其中,语句的循环变量的步长为2, 语句的循环变量的步长为-2。 2. 选做容 (1)增加运算:+和-。 (2)增加类型: 字符类型;

2、 实数类型。 (3)扩充函数:有返回值和返回语句;有参数函数。 (4)增加一维数组类型(可增加指令)。 (5)其他典型语言设施。 3. 本人在课程设计中己实现的功能 (1)增加单词:保留字 ELSE, FOR, TO, DOWNTO, REPEAT, UNTIL, RETURN 运算符 +二,-二,+, (2)修改单词:不等号#改为 (3)增加条件语句的ELSE子句 (4)扩充赋值运算:+=和-二 (5)扩充语句 FOR变量:二表达式TO表达式DO语句 FOR变量:二表达式DOWNTO表达式DO语句 (6)增加运算:+和-(包括前后+、-运算) (7)增加一维数组类型 (8)其他典型语言设施:

3、REPEAT语句UNTIL语句 三. 课程设计环境与工具 (1)计算机及操作系统:PC机,Win7 (2)实现工具:VC+ 6. 0, C语言 (3)教学型编译程序:PL/O 四. 结构设计说明 1) PL/O编译程序的结构图 PL/O源程序 / 词法分析程序 语法分析程序 出谙誉理程序 程序pLO 条件 condi 1: i on 表达式“的8 3 ion 代码生成程序 项 tern 目标程序 | 因子:factor 编译程序的结构图 图2功能模块调用关系图“ 2) PL/0编译程序的过程或函数的功能表 过程或函数名 简要功能说明 P10 主程序 error 出错处理,打印出错位置和错误编码

4、 getsym 词法分析,读取一个单词 getch 漏掉空格,读取一个字符 gen 生成标代码,并送入标程序区 t est 测试当前单词符号是否合法 block 分程序分析处理过程 enter 登录名字表 position(函数) 查找标识符在名字表中的位置 constdec1aration 常量定义处理 vardeclaration 变量说明处理 listode 列出L1标代码清单 statement 语句处理 expression 表达式处理 term 项处理 factor 因子处理 condition 条件处理 interpret 对H标代码的解释执行程序 base (函数) 通过静态链

5、求出数据区的基地址 3) PL/0编译程序的总体流程图 4)词法分析 词法分析是编译的第一个阶段,它的主要任务是从左向右逐个字符地对源程 序进行扫描,产生一个个单词序列用于语法分析。PL/O词法分析程序GETSYM的 功能是为语法分析提供单词用的,是语法分析的基础,把输入的字符串形式的源 程序分割成一个个单词符号。经过词法分析程序分析出来的单词,对语言固有的 单词只给岀类别存放在全程变量SYM中,而对用户定义的单词(标识符或常数) 既给出类别乂给值,其类别放在SYH中,值放在全程变量ID或全程变量NUM中, 全部单词种类山编译程序定义的纯量类型SYMBOL给出,称为语法词汇表。 词法分析器的分

6、析过程:调用GETSYM时,它通过GETCH过程从源程序中获 得一个字符。如果这个字符是字母,则继续获取字符或数字,最终可以拼成一个 单词,查保留字表,如果查到为保留字,则把SYM变量赋成相应的保留字类型值; 如果没有查到,则这个单词应是一个用户自定义的标识符(可能是变量名、常量 名或是过程的名字),把SYM置为IDENT,把这个单词存入ID变量。查保留字表 时使用了二分法查找以提高效率。如果Getch获得的字符是数字,则继续用Getch 获取数字,并把它们拼成一个整数或实数,然后把SYH置为INTEGER,并把拼成 的数值放入NUM变量。如果识别出其它合法的符号(比如:赋值号、大于号.小 于

7、等于号等),则把SYM则成相应的类型。如果遇到不合法的字符,把SYM置成 NULo 词法分析程序GETSYM将完成下列任务: (1)滤空格 (4)拼数 (2)识别保留字 (5)拼复合词 (3)识别标识符 (6)输出源程序 PL/0语法调用关系图 5)语法分析 PL/0编译程序的语法分析釆用了自顶向下的递归的子程 序法。语法分析同时也根据程序的语义生成相应三元代码, 并提供了出错处理的机制。语法分析主要山分程序分析过程 (BLOCK)、常量定义分析过程(ConstDeclaration)变量定 义分析过程(Vardeclaration)语句分析过程(Statement 表达式处理过程(Expression)、项处理过程(Term)、因子 处理过程(Factor)和条件处理过程(Condition)构成。这 些过程在结构上构成一个嵌套的层次结构。除此之外,还有 出错报告过程(Eiror)、代码生成过程(Gen)、测试单词合 法性及出错恢复过程(Test)、登录名字表过程(Enter).查 询名字表函数(Position)以及列出类PCODE代码过程 (Listcode)作过语法分析的辅助

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论