网站大量收购独家精品文档,联系QQ:2885784924

柳青《编译技术》Comp-Cha2.pptVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 2.6 有关文法实用中的一些说明 有关文法的实用限制 在实用中应限制文法中含有如下规则: (1)有害规则 文法中含形如U→U的产生式。 它对描述语言没有必要,且会引起文法的二义性。 (2)多余规则 文法中任何一个句子的推导都用不到的规则。 (3)无用规则 文法中含形如U→V的产生式,即单产生式。 为保证文法G的任一非终结符A在句子推导中出现,必须满足如下两个条件: (1)A必须在某句型中出现,?A?。 (2)必须能够从A推导出终结符号串t。 * * 2.6 有关文法实用中的一些说明 2. 有关文法的二义性 (1)无二义性文法 如果一个文法所产生的每一句子都仅有一棵语法树,则称此文法为无二义性的。 (2)二义性的判定 1962—1963年 Floyd, Contor和 Chomsky证明:上下文无关文法是否具有二义性是不可判定的。 但有些特殊的2型文法[例如LL(1)、LR(0)、 LR(1)等文法]是无二义性的。 一个文法兼有左递归和右递归是导致二义性的常见原因。 Eg. 文法G[E] E→E+E | E*E |(E) | i 是一个二义性文法。 * * 2. 有关文法的二义性 (3)解决二义性 可将二义性文法G 改写为等价的无二义性文法G’ 。 Eg. 上述文法 G[E] 可改写为 G’ [E]: E → E+T | T T → T*F | F F → (E) | i 则 G’ [E] 是无二义性的。 * * 2.6 有关文法实用中的一些说明 有关文法的化简和改造 包括以下几项工作: (1)无用符号和无用产生式的删除。 (2) ?-产生式的消除。 (3)单产生式的消除。 (4)左递归的消除。 * * 2.7 扩展的BNF 前面叙述的表示语规则的形式是Backus和Naur在ALGOL60报告中引入的,称为Backus—Naur Form,(也称Backus—Normal Form),简化为BNF。 为了增加可续性和避免递归形式,引入了扩展的BNF,改为EBNF。 * * 2.7 扩展的BNF EBNF表示的符号说明如下。 ‘ ’:用左右尖括号括起来的中文字表示语法构造成分,或称语法单位,为非终结符。 ‘∷=’:该符号的左部由右部定义,可读作‘定义为’。 ‘|’:表示‘或’,为左部可由多个右部定义。 ‘{ }’:表示花括号内的语法成分可以重复。在不加上下界时可重复0到任意次数,有上下界时为可重复次数的限制。 ‘[ ]’:表示方括号内的成分为任选项。 ‘( )’:表示圆括号内的成分优先。 例:PL/0语言文法的EBNF表示为(例2_6_1) * * 例:PL/0语言文法的EBNF表示为: 程序∷=分程序 分程序∷=[常量说明部分][变量说明部分] [过程说明部分]语句 常量说明部分∷=CONST常量定义{,常量定义}; 常量定义∷=标识符=无符号整数 无符号整数∷=数字{数字} * * PL/0语言文法的EBNF表示 变量说明部分∷=VAR标识符{,标识符}; 标识符∷=字母{字母|数字} 过程说明部分∷=过程首部分程序{;过程说明部分}; 过程首部∷=PROCEDURE标识符; 语句∷=赋值语句|条件语句|当型循环语句 |过程调用语句|读语句|写语句 |复合语句|空 * * 赋值语句∷=标识符:=表达式 复合语句∷=BEGIN语句{;语句}END 条件∷=表达式关系运算符表达式|ODD表达式 表达式∷=[+|-]项{加法运算符项} 项∷=因子{乘法运算符因子} 因子∷=标识符|无符号整数|‘(’表达式‘)’ 加法运算符∷=+|- 乘法运算符∷=*|/ * * 关系运算符∷==|#||=||= 条件语句∷=IF条件THEN语句 过程调用语句∷=CALL标识符 当型循环语句∷=WHILE条件DO语句 读语句∷READ‘(’标识符{,标识符}‘)’ 写语句∷=WRITE‘(’表达式{,表达式}‘)’ 字母∷=a|b|…|X|Y|Z 数字∷=0|1|2|…|8|9 * * 作业 2-1 设英文小写字母集合L={a,b, …, z},数字集合D={0,1, …,9},试问L(L∪D)*中长度不大于3的符号串共有多少个?请列出其中5个有代表性的符号串。 2-2 文法G=({U,V,S},{a,b,c},P,S),其中产生式集合P为: S?Uc|aV U?ab V?bc

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档