- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2 第二章PL编译程序的实现
第二章 PL/0编译程序的实现 第二章 PL/0编译程序的实现 学习目标: 以PL/0语言为例对编译程序的构造得到感性认识和初步了解,对编译程序的实现建立起整体概念。 2.1 PL/0语言 2.2 PL/0编译程序的结构 2.3 PL/0编译程序的词法分析 2.4 PL/0编译程序的语法、语义分析 2.5 PL/0编译程序的目标程序结构和代码生成 2.6 PL/0编译程序的语法错误处理 2.1 PL/0语言 1 PL/0程序示例 2 PL/0的语言的描述 3 PL/0语言:PASCAL语言的子集 1 PL/0程序示例 const A 10; *常量说明部分* var B,C; *变量说明部分* procedure P; *过程说明部分* begin call P; *主程序体* end. 2 PL/0的语言的描述 PL/0语言语法的描述工具是文法: 文法:使得无穷的句子集可以用有穷的规则来描述的工具 终结符:构成文法的单词,是语法成分的最小单位 非终结符:是一个语法成分,在书写语言程序时并不存在,由终结符和非终结符串或终结符串定义的。 文法开始符:通常称第一个非终结符为文法开始符号 文法的描述形式:语法图和EBNF 2.1.1 PL/0语言的语法描述图 2.1.2 PL/0语言文法的EBNF表示 BNF与EBNF的介绍 BNF(BACKUS-NAUR FORM)是根据美国的John W.Backus与丹麦的Peter Naur来命名的。 可以理解为描述程序设计语言语法的语言。 采用BNF可说明哪些符号序列是语法上正确的程序。 BNF与EBNF表示的符号说明 BNF引入的符号: 用左右尖括号括起来的语法成分为非终结符 ∷ 该符号的左部由右部定义 | ‘或’ EBNF引入的符号: 表示花括号内的语法成分可重复 [ ] 表示方括号内的语法成分为任选项 表示圆括号内的成分优先 例子:用EBNF描述: 整数: ∷ [+|-] ∷ 0|1|2|3|4|5|6|7|8|9 不允许以0开头的整数 ∷ [+|-] |0 ∷ 1|2|3|4|5|6|7|8|9 ∷ 0|1|2|3|4|5|6|7|8|9 PL/0语言文法的EBNF表示为: :: . :: [ ][ ] [ ] :: CONST , ; :: :: VAR , ; :: ; ; :: PROCEDURE ; :: | | | | | | | 3 PL/0语言:PASCAL语言的子集 PL/0与PASCAL相同的地方 作用域规则:内层可引用包围它的外层定义的标识符,同一层并列过程的调用关系是先定义的可以被后定义的引用。 过程可以嵌套定义,可递归调用 PL/0是PASCAL的子集 2.2 PL/0编译程序的结构 2.3 PL/0编译程序的词法分析 单词的种类 基本字:也称保留字,如begin,end,var等 运算符:如+、-、*、/、: 、#、 、 等 标识符:字母打头的字母/ 数字串:包括用户定义变量名、常数名、过程名 整常数:数字打头的数字串:如10,89等整数 界符:“,”,“(”, “ )”等 词法分析完成的任务: 滤空格 识别保留字 识别标识符 拼数 拼复合词 即两个字符组成的算符 例如当遇到字符?:?时, 它可能是复合单词?: ?中的?:?, 因此要向前看一个字符 输出源程序 词法分析过程GETSYM所用单元说明: CH:存放当前读取的字符,初值为空。每当读一个新单词时其第一字符已在CH中,每当处理完一个单词时,其后继符已被读到了CH中。 GETCH:取字符过程,由词法分析需要取字符时调用 SYM:存放每个单词的类别,用内部编码形式表示 ID:存放用户定义的标识符的值 NUM:存放用户定义的数 A:一维数组,数组元素为字符,界对[1:10] 2.4 PL/0编译程序的语法、语义分析 语法分析 语义分析 PL/0编译程序语法分析的设计 任务:识别由词法分析给出的单词符号序列是否符合给定的文法规则。 Procedure factor; 因子的递归子程序实现 Begin if sym ident then begin if sym number then begin if sym ‘ ’ then begin getsym;expr; if sym ‘ ’ then getsym else error end else error end end end. 递归子程序法的分析结果: 如果一个单词序列在整个语法分析中,都能逐个得到匹配,直到程序结束符‘.’,这时就说所输入的程序是正确的。 PL/0编译程
您可能关注的文档
最近下载
- 电子对抗原理与技术(第3版)全套PPT课件.pptx
- 冷拼课件教学课件.pptx VIP
- 最新2025年秋开学第一课主题班会PPT课件(含抗战胜利80周年内容).ppt
- 22G101 三维彩色立体图集.docx VIP
- 2024年秋季新北师大版七年级上册数学全册教案设计.docx
- 吴清忠:人体复原工程.pdf VIP
- 川崎 Kawasaki 2022款 Z 400 中文用户手册 使用说明书2021年4月14日印刷.doc VIP
- [北京]冷轧带钢工程薄板酸轧设备基础施工方案.doc VIP
- 全国教学能力比赛《声临其境·影视配音要旨》教案(一等奖).pdf
- (高清版)DB36∕T 713-2013 高速公路红砂岩路基施工技术规范 .pdf VIP
文档评论(0)