PL0编译程序的实现课件.ppt

PL0编译程序的实现课件.ppt

ID:57401621

大小:273.00 KB

页数:58页

时间:2020-08-18

PL0编译程序的实现课件.ppt_第1页
PL0编译程序的实现课件.ppt_第2页
PL0编译程序的实现课件.ppt_第3页
PL0编译程序的实现课件.ppt_第4页
PL0编译程序的实现课件.ppt_第5页
资源描述:

《PL0编译程序的实现课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第2章PL/0编译程序的实现本章目的:以PL/0语言的编译程序为实例,学习一个编译程序实现的基本步骤和相关技术“PL/0语言的编译程序”是世界著名计算机科学家N.Wirth先生编写的。由于PL/0语言功能简单、结构清晰、可读性强,又具备了一般高级语言的必须部分,因而PL/0语言的编译程序能充分体现一个高级语言编译程序实现的基本技术和步骤,是一个非常合适的编译程序教学模型。PL/0编译程序类pcode解释程序类pcode代码PL/0源程序输入输出PL/0编译程序功能的框架第2章PL/0编译程序的实现步骤1.源语言PL/0与目标代码类pcode之间的映射步骤2.

2、PL/0编译程序的总体设计步骤3.PL/0编译程序词法分析的设计与实现步骤4.PL/0编译程序语法语义分析的设计与实现步骤5.PL/0编译程序代码生成的实现*步骤6.PL/0编译程序错误处理的实现步骤7.类pcode代码解释器的设计与实现步骤1PL/0程序到类pcode代码的映射目标代码类pcode是一种假想栈式计算机的汇编语言。指令格式flaf功能码l层次差(标识符的引用层减去它的定义层)a根据不同的指令有所区别假想栈式计算机的运行栈T是栈顶指针B是基地址:分配给一个过程数据空间的开始位置TB每个过程被调用时分配一段数据空间,变量的位置从3开始(每个变量占

3、用一个单元)。运行结束释放该数据空间SLDLRA210步骤1PL/0程序到类pcode代码的映射下面给出PL/0程序到类pcode代码的映射。(编译过程是按源程序顺序进行分析的)(常量、变量的说明部分不产生目标代码)consta=10; varb,c; procedurep;beginc:=b+a; end;begin read(b); whileb#0dobegin callp; write(2*c); read(b); endend.(0)jmp08转向主程序入口(1)jmp02转向过程p入口(2)int03过程p入口,为过程p开辟空间(3)lod13取

4、变量b的值到栈顶(4)lit010取常数10到栈顶(5)opr02次栈顶值与栈顶值相加(6)sto14栈顶值送变量c中(7)opr00退栈并返回调用点(16)(8)int05主程序入口开辟5个栈空间(9)opr016从命令行读入输入值置于栈顶(10)sto03将栈顶值存入变量b中(11)lod03将变量b的值取至栈顶(12)lit00将常数值0取至栈顶(13)opr09次栈顶值与栈顶值是否不等(14)jpc024等时转(24)(条件不满足转)(15)cal02调用过程p(16)lit02常数值2取至栈顶(17)lod04将变量c的值取至栈顶(18)opr04

5、次栈顶值与栈顶值相乘(2*c)(19)opr014栈顶值输出至屏幕(20)opr015换行(21)opr016从命令行读取输入值到栈顶(22)sto03栈顶值送变量b中(23)jmp011无条件转到循环入口(11)(24)opr00结束退栈步骤2PL/0编译程序的总体设计词法分析程序语法语义分析程序代码生成程序表格管理程序出错处理程序PL/0源程序目标程序步骤2PL/0编译程序的总体设计其编译过程采用一趟扫描方式以语法、语义分析程序为核心词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法、语义分析正确,需要生成

6、相应的目标代码时,则调用代码生成程序。步骤2PL/0编译程序的总体设计表格管理程序:建立变量,常量和过程标识符的说明与引用之间的信息联系。出错处理程序:对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和错误性质。下面将介绍某些部分实现的关键技术。步骤3PL/0编译程序词法分析的 设计与实现词法分析过程:GETSYM框图(见教材15页图2.5)程序文本(见教材290-292页)当识别到标识符时先查关键字表(关键字表是按第1个字母的大小顺序排列的,用二分法查找)关键字表:(见教材304页主程序)word[1]:=‘begin‘;word[2]:=‘cal

7、l‘;...word[13]:=‘write‘;步骤3PL/0编译程序词法分析的 设计与实现查到时找到关键字相应的内部表示wsym[1]:=beginsym;wsym[2]:=callsym;…wsym[13]:=writesym;字符对应的单词表:ssym[‘+’]:=plus;ssym[‘-’]:=minus;…ssym[‘;’]:=semicolon;步骤3PL/0编译程序词法分析的 设计与实现词法分析如何把单词传递给语法分析单词定义(见教材288页)typesymbol=(nul,ident,number,plus,…,varsym,procsym)

8、;(定义纯量/枚举类型,类似C的enum)sym:s

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

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

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