- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章pl0编译程序的实现
以PL/0为例学习编译程序实现的基本步骤和相关技术,熟 悉并理解编译程序的基本原理和概念。
2.1 PL/0语言描述
它由世界著名计算机科学家N.Wirth编写 PL/0语言:PASCAL语言的子集,功能简单,结构清晰,可 读性强,具备了一般高级语言的必备部分 它充分体现一个高级语言编译程序实现的基本方法和技术 本书提供了两种形式的PL/0语言的语法描述: 语法图:用语法图描述语法规则的优点是直观、易读 EBNF
PL/0的非形式化描述
数据类型只有整型 标识符的有效长度是10,以字母开始的字母数字串 数最多为14位 作用域规则(内层可引用包围它的外层定义的标识符) 过程无参,可嵌套定义(最多三层),可递归调用 语句类型: 赋值语句,if...then..., while...do..., read, write, call, 复合语句(begin... end), 说明语 句( const..., var..., procedure…) 13个保留字:if, then, while, do, read, write, call, begin, end, const, var, procedure, odd
PL/0程序示例
CONST A=10; VAR B,C; *****RE P; VAR D; *****RE 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.Q的程序体
P的程序体
主程序体
2.1.1 PL/0 语言的语法描述图语法描述图中的符号说明:
A 中文
或
A :表示终结符(构成语言文法的单词,语法
成分的最小单位):表示非终结符(用终结符和非终结符串 或终结符串定义) 通常称第一个非终结符为文法的开始符号。如“程序”
图2.1(a) 程序语法描述图
图2.1(b) 分程序语法描述图
图2.1(c) 语句语法描述图
图2.1(d) 条件语法描述图
图2.1(e) 表达式语法描述图
图2.1(f) 项语法描述图
图2.1(g) 因子语法描述图
2.1.2 PL/0语言文法的EBNF表示BNF(BACKUS-NAUR FORM)是根据美国的John W.Backus与丹麦 的Peter Naur来命名的,它从语法上描述程序设计语言的元语言。采用 BNF就可说明哪些符号序列是对于某给定语言在语法上有效的程序 BNF引入的符号: 用左右尖括号括起来的语法成分为非终结符 ∷= 表示该符号的左部由右部定义; | 表示 ‘或’,左部可由多个右部定义; EBNF引入的符号: { } 表示花括号内的语法成分可重复 [ ] 表示方括号内的语法成分为任选项 ( ) 表示圆括号内的成分优先
PL/0语言文法的EBNF表示: 〈程序〉∷=〈分程序〉. 〈分程序〉∷=[〈常量说明部分〉][〈变量说明部分〉 ][〈过程说明部分〉]〈
语句〉 〈常量说明部分〉∷=CONST〈常量定义部分〉{,〈常
量定义〉}; 常量定义::=标识符=无符号整数 〈无符号整数〉∷=〈数字〉{〈数字〉} 〈变量说明部分〉∷=VAR〈标识符〉{,〈标识符〉};
〈标识符〉∷=〈字母〉{〈字母〉|〈数字〉} 过程说明部分::=过程首部分程序 过程说明部分} 过程首部::=*****RE标识符
语句::=赋值语句|条件语句|当型
循环语句|过程调用语句|读语句|写语句|复合语句|空 赋值语句 ::= 标识符:=表达式 复合语句 ::= BEGIN语句语句}END 条件 ::= 表达式关系运算符表达式
|ODD表达式
表达式 ::=[+|-]项{加法运算符
项} 项 ::= 因子{乘法运算符因子} 因子 ::= 标识符|无符号整数|‘(’ 表达式‘)’
加法运算符 ::= +|- 乘法运算符 ::= *|/ 关系运算符 ::= =|#||=||= 条件语句 ::= IF条件THEN语句 过程调用语句 ::= CALL标识符 当型循环语句 ::= WHILE条件DO语句 读语句 ::= READ (’标识符{,标识符
}‘)’
写语句 ::= WRITE (’表达式{,表达式}‘)’ 字母 ::= a|b|…|X|Y|Z 数字 ::= 0|1|…|8|9
您可能关注的文档
最近下载
- 云南镇沅金矿石浮选试验报告.doc VIP
- 大型载重车辆“油改气”项目方案介绍.pdf VIP
- 四上语文1-8单元高频考点通关检测(8页).pdf VIP
- 水泥化学分析习题及答案.doc VIP
- 2022年南京信息职业技术学院高职单招语文/数学/英语考试题库含答案解析.docx VIP
- 广东省广州市南沙区2023-2024学年八年级上学期期末考试英语试题(含答案).docx VIP
- 平面的基本性质及推论多媒体教学课件.ppt VIP
- 【复旦大学-高级病理生理学学习】_模式识别受体_20200425234131.pdf VIP
- 高中数学《函数的奇偶性》说课稿新人教A版必修1 .pdf VIP
- 膈肌膨升症麻醉病例讨论.ppt VIP
原创力文档


文档评论(0)