[工学]第三章上下文无关文法及分析.pptVIP

  1. 1、本文档共52页,可阅读全部内容。
  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文档。上传文档
查看更多
[工学]第三章上下文无关文法及分析

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 例如:E→E+T|T T→T×F|F F→(E)|i “i+i×i”的推导和分析树为: E E T + T F T × E=E+T E E T + T F T × E=E+T =E+T×F =T+T×F =T+T =T+T×F =… =i+i×i i i i … i i i … =… =i+i×i 解释: 一个串的分析树一般对应着串的多个推导。 分析树抽取出推导的主要特征,同时却将表面的差别按顺序分解开来。 推导不能唯一地表示串的结构,而分析树可以 分析树的定义 文法G中的一个分析树是一个作了标记的树: 树的根节点标记为开始符号 S 每个叶子节点标记为终结符或 ε 每个非叶子节点标记为非终结符 如果一个节点 A ∈ VN 有 n 个孩子,分别标记为 X1,X2,..,Xn(可能为终结符或非终结符), 则有 A-X1X2…Xn ∈P 最左和最右推导 最左推导 最左推导是指推导的每一步中最左的非终结符都要被替换 它对应着分析树的前序编号 例如 exp-exp op exp | (exp) | num op- + | - | * “num+num”的最左推导是: exp=exp op exp=num op exp =num + exp=num+num 1exp 2exp 4exp 3op num + num 最右推导 最右推导是指推导的每一步中最右的非终结符都要被替换。 它对应着分析树的后序编号 “num+num” 的最右推导是: exp=exp op exp=exp op num =exp + num=num+num 1exp 4exp 2exp 3op num + num 最左推导和最右推导对于串的构成是唯一的 它们唯一对应一个分析树 分析树和 推导的关系 每个推导产生一个分析树 多个推导可能产生同样的分析树 最左和最右推导对应唯一地分析树 最左或最右推导时,分析树唯一地表示的语法结构,其他推导不一定 3.3.2 抽象语法树 抽象语法树的必要性 分析树包含了一些与编译器生成可执行代码无关的信息 例如 exp exp exp op num (3) + num (4) + 3 4 Abstract syntax tree 表达式(34-3)*42的分析树和抽象语法树是: 抽象语法树的定义 抽象语法树是实际记号串的抽象表示 包含了转换所需要的所有信息 (精确地表示了串的语义内容) 比分析树更有效的表示形式 分析程序将遍历分析树表示的所有步骤,而仅构成一个抽象语法树 例如 文法描述 statement - if-stmt | other if-stmt - if (exp) statement else-part else-part - else statement |ε exp - 0 | 1 串“if (0) other else other”的分析树和抽象语法树是: statement if-stmt if ( exp ) statement else-part 0 other else statement other if 0 other other 3.4 二义性 一般来说,记号串有一个分析树,可能对应串的多个推导 E=E+T =T+T=T+T×F =…=i+i×i E=E+T =E+T×F =T+T×F=…=i+i×i E E T + T F T × i i i … 串 “i+i×i”的分析树 有些文法有可能存在串有多个分析树(或最左/最右推导) 例如: 整型算术表达式文法: E→E+E | E×E | (E) | I 串 “i×i+i” 有两个不同的语法树: 对应两个最左推导: 1:E ? E+E ? E×E+E ? i×E+E ? i×i+E ? i×i+i 2:E ? E×E ? i×E ? i×E+E ? i×i+E ? i×i+i i E E + E E E × i i E E E × i E E + i i 二义性 如果一个文法存在某个串对应两棵不同的语法树(或有两个不同的最左(右)推导),则说这个文法是二义的。 如何解决二义性 两个解决二义性的基本方法: 设置一个规则,该规则可在每个二义性情况下指出哪一个语法树是正确的。 i E E + E E E × i i 消除二义性规则: 乘法 的优先级高于加法 乘法和 加法 为左结合。 整型算术表达式文法 : E→E+E|E×E|(E)|i 串 “i+i+i” 有两个不

文档评论(0)

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

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

1亿VIP精品文档

相关文档