- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译程序的设计原理与实现 如何让计算机 认识、理解 和 执行 高级程序设计语言 ? 第 2 章 形式语言基础 (2) 2.1 形式语言是符号串集合 2.2 形式语言是由文法定义的 2.3 主要语法成分的定义 2.4 两类特性文法 2.5 文法变换方法 2.6 关于形式语言的分类问题 【内容提要】 ※ 上节课主要内容回顾: ⒈ 文法 是规则集合,四元组:G(Z)=(VN, VT, Z, P) ⒉ 文法所定义的语言: ⒊ 文法应用示例: ⑴ 简单语言的文法构造: ① 无符号整数文法:G(N): N - dN | d 2.3 主要语法成分的定义 Ⅰ.直接推导( = ): xAy = x?y 即:指用产生式的右部符号串替换左部非终结符。 加推导( ): ? β Ⅱ.直接归约( ): x?y xAy 加归约( ): ? β ※ 实用中最常见的两种运算: 最左推导( )—每次推导皆最左非终结符优先; 最左归约( )—每次归约皆最左可归约串优先。 文法运算示例: 【例2.8】 算数表达式文法: 给定一个符号串 i+i*i : 2.3 主要语法成分的定义(续1) 2.3.2 句型、句子和语法树 2.3 主要语法成分的定义(续2) ※ 句型、句子和语法树示例: 【例2.10】 算术表达式 文法: ⑴ 证明 (T/F+F)*i 是一个句型(表达式型); ⑵ 画出该句型的语法树。 ※ 句型 (T/F+F)*i 的语法树构造: 【注】关于语法树: 子树 :以任何具有分支的结点为根所形成的树,称为原树的子树。 简单子树 :仅具有单层分支的子树。 2.3.3 短语、简单短语和句柄 【例2.11】图2.2为一个中文句型的语法树: 短 语 -- 他哥哥名短,喜欢看动短,书名词, 喜欢看书动短,他哥哥喜欢看书句子 简单短语 -- 他哥哥,喜欢看,书 句 柄 -- 他哥哥(最左边的简单短语!) 2.3 主要语法成分的定义(续3) 2.3.3 短语、简单短语和句柄 ※短语、简单短语和句柄示例 【例2.12】图2.3为一个算术表达式(型)的语法树: 句型: E+F-T/F*i 短语: E+F-T/F*i,E+F,F,T/F*i,T/F,i 简单短语: F,T/F,i 句柄: F ※ 一类典型的综合例题: 【例2.13】G(S): S-aAcBe ; A-Ab|b ; B-d 2.4 两种特性文法1 2.4.1 递归文法 2.4 两种特性文法2 2.4.2 二义性文法 练习题 【习题2.5】解释下列词语: ① 句型;句子;语法树。 ② 短语;简单短语;句柄。 ③ 递归文法,直接左递归性,直接右递归性。 ④ 二义性文法。 【习题2.6】 P36_9,10 ; 【习题2.7】 P133_1,2; 谢谢收看! 再见 ※ 递归文法示例 【例2.15】 G(Z): Z - aAbB | cZ A - bBc | ? B - BbAc |a ∵ Z - cZ ∴ 直接右递归性; B - BbAc ∴ 直接左递归性; A =bBc = bBbAcc 即 A =+ ?A? ∴ 具有递归性 ( ?≠? 且 ?≠? 又称为A具有自嵌套性) ∴ 可以统称文法G(Z)具有递归性。 基本图形库 * * L(G)={ x | Z x,x∈VT* } = + I -? A|? A-? A|dA|? ⑵ 求解文法所定义的语言(或句子)方法: 形式语言是符号串集合且由文法定义! ① 正规方程组迭代求语言(如 标识符文法) 直接由定义求解句子(如 算术表达式文法)。 ② 标识符文法:G(I): d(数字), ?(字母) 文法有两种基本运算:推导,归约。 星推导( ): α β 加推导 算符 设 x, y∈(VN+VT)*, A-?∈P = * = * (当且仅当?=?1=?2=…=β) 即:指一步或一步以上的直接推导运算。 (当且仅当?=β或?=?1=?2=…β) 即:指零步或零步以上的直接推导运算。 直接推导 算符 星推导 算符 = +
文档评论(0)