- 1、本文档共45页,可阅读全部内容。
- 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语言文法的EBNF表示 EBNF 引入的符号(元符号): 用左右尖括号括起来的语法成分为非终结符∷= (→) ‘定义为’ ∷=(→) 的左部由右部定义 | ‘或’ { } 表示花括号内的语法成分可重复任意次或限 定次数 [ ] 表示方括号内的语法成分为任选项( ) 表示圆括号内的成分优先 例:用EBNF描述整数的定义 :整数∷=[+|-]数字{数字}数字∷=0|1|2|3|4|5|6|7|8|9 或更好的写法 整数∷=[+|-]非零数字{数字}|0非零数字∷=1|2|3|4|5|6|7|8|9 数字∷=0|非零数字 PL/0语言是PASCAL语言的子集 同PASCAL 作用域规则(内层可引用包围它的外层定义的标识符),上下文约束, 过程可嵌套定义,可递归调用 子集 数据类型,只有整型 数据结构 ,只有简变和常数 数字最多为14位 标识符的有效长度是10 语句种类 过程最多可嵌套三层 目标代码类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编译程序的总体设计 其编译过程采用一趟扫描方式 以语法、语义分析程序为核心 词法分析程序和代码生成程序都作为一个过程,当语法分析需要读单词时就调用词法分析程序,而当语法、语义分析正确,需要生成相应的目标代码时,则调用代码生成程序。 表格管理程序实现变量,常量和过程标识符的信息的
您可能关注的文档
- 专题三:实验四:验证牛顿运动定律.ppt
- 专题三:鉴赏诗歌规范性答题.ppt
- 专题九第三讲文言文分析综合.ppt
- 专题九民族精神与先进文化.ppt
- 专题二·3伟大的抗日战争.ppt
- 专题二三伟大的抗日战争.ppt
- 专题二写作导学案.pptx
- 专题二六个“为什么”.pptx
- 专题二第一讲计划与战略.ppt
- 专题二列强的入侵与中国人民的反抗斗争.ppt
- 2025年江苏省镇江市-警察招考行政能力测验真题(含答案).pdf
- 2025年设备采购实施方案(共5篇).pdf
- 2025年公共政策分析 期末考试题答案.pdf
- 2025年部编人教版八年级语文下册期末测试卷(可打印).pdf
- 2025年见证取样送检制度及注意事项(广州地区).pdf
- 2022年-2023年必威体育官网网址知识考试教育模拟考试题(含答案) .pdf
- 2023-2024学年度新人教版四年级下册语文教学计划及进度表 .pdf
- 2025年1、民法是调整平等主体的公民之间、法人之间、公民和法人之间财产....pdf
- 2025年12月高等学校英语应用能力考试A级真题及答案.pdf
- 2022学生入团申请书范文8篇 .pdf
最近下载
- 人教版五年级下册数学必背知识.doc VIP
- 2024计算机行业专题研究:英伟达GTC大会发布Blackwell平台,引领加速计算新时代.pdf
- 2024-信息技术-人工智能行业-英伟达GTC大会要点梳理-中信建投-41页.pdf
- 《巡店报告模板》课件.pptx VIP
- 人教版九年级全一册英语全册教案(完整版)教学设计含教学反思.pdf
- 苏教版小学六年级上册数学期末总复习试卷题目.doc VIP
- 2025年吉林省长春市中考数学模拟试卷附答案解析.pdf
- 仙剑奇侠传三图文攻略超级详细-仙剑奇侠传三官方攻略.pdf VIP
- AX-Synth中文说明书.pdf
- 家庭教育心得分享主题班会PPT课件.pptx VIP
文档评论(0)