- 1、本文档共86页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 PL/0编译程序 2.1 PL/0语言和类pcode的描述 2.2 PL/0编译程序的结构 2.3 PL/0编译程序的语法语义分析 2.4 PL/0编译程序的错误处理 2.5 类pcode代码解释器 本章目的:以PL/0为实例,学习编译程序实现的 基本步骤和相关技术 PL/0编译程序 PL/0语言 PL/0程序示例 PL/0的语法描述图 PL/0语言文法的EBNF表示 PL/0语言:PASCAL语言的子集 PL/0程序示例 CONST A=10; (* 常量说明部分 *) VAR B,C; (* 变量说明部分 *) PROCEDURE P; (* 过程说明部分 *) VAR D; PROCEDURE Q; VAR X; BEGIN READ(X); D:=X; WHILE X#0 DO CALL P; END; BEGIN WRITE(D); CALL Q; END; BEGIN CALL P; END. PL/0语言是PASCAL语言的子集 同PASCAL 作用域规则(内层可引用包围它的外层定义的标识符),上下文约束, 过程可嵌套定义,可递归调用 子集 数据类型,只有整型 数据结构 ,只有简变和常数 数字最多为14位 标识符的有效长度是10 语句种类 过程最多可嵌套三层 程序 分程序 PL/0语言文法的EBNF表示 EBNF 引入的符号(元符号): 用左右尖括号括起来的语法成分为非终结符 ∷= (→) ‘定义为’ ∷=(→) 的左部由右部定义 | ‘或’ { } 表示花括号内的语法成分可重复任意次或限 定次数 [ ] 表示方括号内的语法成分为任选项 ( ) 表示圆括号内的成分优先 例:用EBNF描述整数的定义 整数∷=[+|-]数字{数字} 数字∷=0|1|2|3|4|5|6|7|8|9 或更好的写法: 整数∷=[+|-]非零数字{数字}|0非零数字∷=1|2|3|4|5|6|7|8|9 数字∷=0|非零数字 目标代码类pcode 目标代码类pcode是一种假想栈式计算机的汇编语言。 指令格式: CONST a=10;VAR b,c;PROCEDURE p; BEGIN c:=b+a; END;BEGIN READ(b); WHILE b#0 DO BEGIN CALL p; WRITE(2*c); READ(b); ENDEND. ( 0) jmp 0 8 转向主程序入口 ( 1) jmp 0 2 转向过程p入口 ( 2) int 0 3 过程p入口,为过程p开辟空间 ( 3) lod 1 3 取变量b的值到栈顶 ( 4) lit 0 10 取常数10到栈顶 ( 5) opr 0 2 次栈顶与栈顶相加 ( 6) sto 1 4 栈顶值送变量c中 ( 7) opr 0 0 退栈并返回调用点(16) ( 8) int 0 5 主程序入口开辟5个栈空间 ( 9) opr 0 16 从命令行读入值置于栈顶 (10) sto 0 3 将栈顶值存入变量b中 (11) lod 0 3 将变量b的值取至栈顶 (12) lit 0 0 将常数值0进栈 (13) opr 0 9 次栈顶与栈顶是否不等 (14) jpc 0 24 等时转(24)(条件不满足转) (15) cal 0 2 调用过程p (16) lit 0 2 常数值2进栈 (17) lod 0 4 将变量c的值取至栈顶 (18) opr 0 4 次栈顶与栈顶相乘(2*c) (19) opr 0 14 栈顶值输出至屏幕 (20) opr 0 15 换行 (21) opr 0 16 从命令行读取值到栈顶 (22) sto 0 3 栈顶值送变量b中 (23) jmp 0 11 无条件转到循环入口(11) (24) opr 0 0 结束退栈 PL/0编译程序的结构设计 PL/0编译程序的总体设计 其编译过程采用一趟扫描方式 以语法、语义分析程序为核心 词法分析程序和代码生成程序都作为一个过程,当语法分析需要读单词时就调用词法分析程序,而当语法、语义分析正确,需要生成相应的目标代码时,则调用代码生成程序。 表格管理程序实现变量,常量和过程标识符的信息的登录与查找。 出错处理程序,对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和与错误性质有关的编
您可能关注的文档
最近下载
- 刘芳——本科论文初稿.doc VIP
- 安全培训记录效果评估表全员法律法规培训.docx VIP
- 3.4 透镜的应用(分层练习)2024-2025学年八年级物理上册同步精品课堂(苏科版2024)(解析版).docx VIP
- 《二年级上册美术折纸动物》ppt课件讲义.ppt
- BS EN 16120-2-2017Non-alloy 国外国际标准规范.pdf
- 精卫填海成语神话故事.pptx VIP
- 【生物】蛋白质相关计算课件 2023-2024学年高一上学期生物人教版必修1.pptx VIP
- 四位一体农村长效保洁方案(标书——已中标) .pdf VIP
- 人教版九年级上册化学第六单元测试卷.doc VIP
- 2025届高考语文复习:叠词的作用和表达效果+课件.pptx VIP
文档评论(0)