第二章PL0编译程序的实现_第1页
第二章PL0编译程序的实现_第2页
第二章PL0编译程序的实现_第3页
第二章PL0编译程序的实现_第4页
第二章PL0编译程序的实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、 PL/0语言的编译程序是用高级语言PASCAL语言编写的。程序由嵌套嵌套、过程过程和函数函数构成,采用一趟扫描方法。采用自顶向下的递归子程序法。所产生的目标程序为假想栈式计算机的汇编语言。PL/0语言编译程序是适合教学用的,它的数据类型只有整形数,数据运算只有四则运算。语句有赋值语句、条件语句、WHILE循环语句、输出、输入语句和不带参数允许递归调用的过程语句及复合语句。第二章 PL/0编译程序的实现 2.1.1 PL/0 2.1.1 PL/0语言的语法描述图语言的语法描述图下面借用语法图来描述语法规则。其中:英文表示终结符,中文表示非终结符。终结符终结符:构成语言文法的单词,是语法成分 的

2、最小单位。非终结符非终结符:是个语法成分,还没有进行分析。2.1 PL/0 2.1 PL/0 语言描述语言描述2.12 PL/0 语言文法的语言文法的EBNF表示表示EBNF:是对文法的一种描述形式。其符号说明如下:括号的中文表示语法成分,为非终结符 = :表示定义为 | :表示“或”关系 :括号内的语法成分可以重复 :括号内的成分为任选项 ( ) : 括号内的成分优先2.2 PL/0编译程序的结构编译过程采用一遍扫描方式。以语法分析程序为核心。词法分析程序语法分析程序代码生成程序表格管理程序出错处理程序 源程序 目标程序PL/0PL/0编译程序的过程或函编译程序的过程或函数的功能表见表数的功

3、能表见表2.1 2.1 过程或函数的嵌套定义过程或函数的嵌套定义层次结构如图层次结构如图2.32.3所示所示语法分析程序语法分析程序图2.4 PL/0编译程序总体流程图词法分析程序是为语法分析词法分析程序是为语法分析提供单词提供单词用用的,是语法分析的基础。它把输入的字的,是语法分析的基础。它把输入的字符串形式的源程序分割成一个个单词符符串形式的源程序分割成一个个单词符号。编译器为此设置了号。编译器为此设置了3个全程量的公用个全程量的公用单元为:单元为:SYM:存放每个单词的:存放每个单词的类别类别ID:存放用户所定义的标识符的:存放用户所定义的标识符的值值NUM:存放用户定义的:存放用户定义

4、的数数2.3 PL/0编译程序的词法分析表2.2 TABLE表中信息PL/0源程序与目标程序例:2.6 2.6 语法错误处理:语法错误处理: PL/0编译程序对语法错误的处理采用两种方法:1.对于有些易于校正的错误如丢了逗号、分号等,则指出出错位置,并加以校正。校正的方式就是补上逗号或分号。2有些错误编译程序难于确定校正的措施。为了使当前的错误不致影响整个程序的崩溃,把错误尽量局限在一个局部的语法单位中。这样就需要跳过一些后面输入的单词符号,直到读入一个能使编译程序恢复正常语法分析工作的单词为止。解释程序定义了四个寄存器:解释程序定义了四个寄存器:I:,存放当前正在解释的一条目标指令,存放当前正在解释的一条目标指令P:,指向下一条要执行的目标程序,指向下一条要执行的目标程序 的地址的地址T:,每个过程被运行时,给它分配的数,每个过程被运行时,给它分配的数据区空间分为静态和动态两个部分,栈顶寄存器指出了据区空间分为静态和动态两个部分,栈顶寄存器指出了当前栈中最新分配的单元当前栈中最新分配

温馨提示

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

评论

0/150

提交评论