PL0编译程序的实现-教案.ppt

PL0编译程序的实现-教案.ppt

ID:56527857

大小:396.50 KB

页数:37页

时间:2020-06-27

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

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

1、附录一:PL/0编译程序的实现PL/0程序设计语言PASCAL语言的一个子集,世界著名计算机科学家N.Wirth教授设计适用于教学,理解程序语言的编译程序。PL/0语言的特征语言功能简洁,具备高级程序语言的必须部分数据类型仅有整型。语言系统仅只有一个可供用户使用的函数。ODD函数允许“过程”嵌套定义,递归调用1PL/0语言程序实例Test1.pl0:最简单的PL/0程序Test2.pl0:用while语句求累加和Test3.pl0:含有“过程”子程序Test4.pl0:定义全局量、“过程”中的局部量

2、Test5.pl0:用同一标识符定义全局量和局部量Test6.pl0:递归调用计算n!Test7.pl0:“过程”嵌套,全局量和局部量为同一标识符Test8.pl0:多个过程嵌套或并列Test9.pl0:定义全局常量和变量、局部常量和变量Test.pl0:I/O语句中使用多个变量2PL/0编译程序构造用PASCAL语言编写宿主机:安装有PASCAL系统的任何机器目标机:与宿主机相同PL/0编译程序实现功能将PL/0源程序变换为,目标语言:“假想”机器语言程序由编译程序的“解释执行”模块,解释执行目标

3、语言程序,得到PL/0源程序“运行”结果。3PL/0编译程序生成生成宿主机上可执行的PL/0编译程序应用宿主机上的PASCAL语言系统将PL0.PAS转换成PL0.exe目标机上可执行的PL/0编译程序:PL0.exe4PL/0语言程序的编译、运行PL/0语言程序的编译PL/0编译:Pl0.exePL/0源程序假想机器语言程序PL/0解释执行模块目标语言程序机器执行结果假想机器语言程序的解释执行(编译“PL/0源程序”未发现错误时,此模块才执行)5PL/0语言程序的编译、运行示例编译Test1.pl

4、0操作过程再展示编译Test2.pl0操作过程再展示编译Test3.pl0操作过程再展示编译Test4.pl0操作过程再展示编译Test5.pl0操作过程再展示编译Test6.pl0操作过程再展示编译Test7.pl0操作过程再展示当前编译PL/0源程序的目标语言程序及执行6PL/0目标机器PL/0编译产生目标语言假想机器的汇编语言假想机器结构—栈式计算机指令寄存器I:存放当前正在解释的一条目标指令地址寄存器P:指向目标程序存区CODE数组的下标栈顶寄存器T:指向当前运行栈(数组)最新分配单元基址寄

5、存器B:存放当前执行“过程”的数据区起始地址7PL/0目标机指令系统PL/0假想机器指令系统共有8大类指令指令格式:(汇编符号形式)功能码f层次差l“特定值”aPL/0目标语言程序的“执行”实现原理PL/0解释模块将目标语言转换为等价的PASCAL语句。PL/0解释模块执行时,将目标语言指令解释成PASCAL语句对应的机器代码来执行。8PL/0编译程序逻辑结构以语法分析为核心的一遍扫描方式出错处理程序表格管理程序词法分析程序语法分析程序代码生成程序PL/0源程序目标程序9PL/0编译程序 解释执行模

6、块逻辑结构PL/0解释执行程序PL/0语言目标程序PL/0语言目标程序执行结果PL/0语言目标程序所需数据101112编译程序总体流程图13PL/0编译程序—词法分析器GETSYME子程序GETSYME的任务读取PL/0源程序字符流以词法规则为依据识别出合法的单词符号完成5项任务:滤空格,识别保留字、标识符,拼数、复合词。(输出PL/0源程序)。PL/0单词分类五种类:基本字(保留字)、运算符、标识符、常数、界符1415PL/0词法分析程序实现(1/3)程序GETSYM引用变量—全局变量SYM(单词

7、类别—枚举值)ID(单词—字符串值)NUM(常数单词--数值)程序GETSYM的任务:调用GETCH读字符,按一定规则拼成字符串;判定字符串是否为合法单词并确定它的类别SYM。扫描程序GETSYM中的子程序—GETCH任务:对缓冲区放入“一行”;从缓冲区中读字符。设置变量:CH、LINE、LL、A、WORD16PL/0词法分析程序实现(2/3)—GETSYM中的GETCH子程序GETCH子程序引用的变量Fin:PL/0源程序文件Line:输入缓冲区,用于存放PL/0源程序中的“一行”字符。Cc:输入

8、缓冲区读指针Ch:读字符变量,主要用于读取输入缓冲区cc指定的字符;GETCH子程序的任务若输入缓冲区“空”,则从fin文件中顺次读取PL/0源程序中一行符,存入输入缓冲区若输入缓冲区“不空”,则为ch读取输入缓冲区cc指定的字符通过ch变量,使GETSYM获得PL/0源程序中的一个字符17PL/0词法分析程序实现(3/3)词法分析程序GETSYM工作流程(图2.3)调用GETCH子程序,从PL/0源程序中顺次读取一个字符ch判定ch的值:若ch值为字母,则(调用GE

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

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

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