编译原理pl0编译程序的实现2(希赛教育基础学院)

编译原理pl0编译程序的实现2(希赛教育基础学院)

ID:8842721

大小:95.00 KB

页数:4页

时间:2018-04-09

编译原理pl0编译程序的实现2(希赛教育基础学院)_第1页
编译原理pl0编译程序的实现2(希赛教育基础学院)_第2页
编译原理pl0编译程序的实现2(希赛教育基础学院)_第3页
编译原理pl0编译程序的实现2(希赛教育基础学院)_第4页
资源描述:

《编译原理pl0编译程序的实现2(希赛教育基础学院)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、2.2PL/0编译程序的结构  由2.1节可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。PL/0的编译程序和目标程序的解释执行程序都是用PASCAL语言书写的,因此PL/0语言可在配备PASCAL语言的任何机器上实现。其编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序。此外,用表格管理程序建立变量、常量和过程标识符的说明与引用之

2、间的信息联系。用出错处理程序对词法和语法分析遇到的错误给出在源程序中出错的位置和错误性质。当源程序编译正确时,PL/0编译程序自动调用解释执行程序,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。其编译和解释执行的结构图如图2.2(a)和2.2(b)所示。PL/0的编译程序和目标程序的解释执行程序都是用PASCAL语言书写的,因此PL/0语言可在配置有PASCAL语言的任何机器上实现。读者也可用其它语言改写PL/0编译程序,也可以用另一种语言编写目标代码类pcode的解释执行程序。  PL/0编译程序的编译过程是按源程序顺序进行分析的,常量变量说明部分不产生目

3、标代码。图2.2(a)PL/0编译程序的结构图 图2.2(b)PL/0的解释执行结构  PL/0编译程序是用PASCAL语言书写的,整个编译程序(包括主程序)是由18个嵌套及并列的过程或函数组成,下面分别简要给出这些函数的功能及它们的层次结构。如表2.1和图2.3所示。表2.1PL/0编译程序的过程或函数的功能表这些过程或函数的嵌套定义层次结构如图2.3所示。图2.3PL/0编译程序过程与函数定义层次结构图  由于PL/0编译程序采用一趟扫描方法,所以语法分析过程BLOCK是整个编译过程的核心。下面我们将在图2.4中先给出编译程序的总体流程,以弄清BLOCK过程在整个编译程序

4、中的作用。在流程图2.4中可以看出,主程序置初值后先调用读单词过程GETSYM取一个单词,然后再调用语法分析过程BLOCK,直到遇源程序的结束符"."为止。图2.4PL/0编译程序总体流程图  语法分析过程BLOCK是整个编译过程的核心,是指开始由主程序调用GETSYM取一个单词,再调用语法分析过程BLOCK,BLOCK由当前单词根据语法规则再调用其它过程,如说明处理、代码生成或出错处理等过程进行分析,当分析完一个单词后,BLOCK再调用GETSYM取下一个单词,一直重复到当前单词为结束符"."表明源程序已分析结束。若未取到结束符".",而源程序已没有输入符号,这时表明源程序

5、有错误,无法再继续分析。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。