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

第5章aa2008J.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章aa2008J

自顶向下的语法分析 5.1 语法分析概述 tu1.10.doc 本章讨论在词法分析之后应当进行的工作,词法分析把例如以下“字符串”,组成若干“单词”。 begin b:=a+c*c; if b0 then y:=1 else y:=0 end 词分并不能解决:这是一个正确的复合语句吗?if打头的个语句是合法的如果语句吗?词分无此能力。这类任务是由语法分析程序来解决的。语法分析的任务:分析由词法分析给出的单词(tokens)序列,看它是否是符合语言语法规则的正确句子(程序)根据语法规则把“单词”序列分解成为各类语法单位,如语句、表达式、程序等。 本章主要讨论: 递归子程序方法 预测分析方法 LL(1)文法。如何完成这种任务呢?有各种方法达到这个目的。语分方法 递归子程序方法 确定的- 预测分析方法 语 自顶向下 法 分 不确定的:带回溯的方法 析 直接的自底向上分析 方 简单优先方法 法 自底向上- 算符优先分析 高阶优先分析 限界上下文分析 状态矩阵方法 转换矩阵方法 LR(0)方法 LR方法 SLR(1)方法 LR(1)方法 LALR(1)方法 我们只讨论的方法。. 不确定的自顶向下分析方法() 这是一种直接的自顶向下分析。↓的思想:对任何输入串,试图用一切可能的方法,从文法的开始符号出发,自上而下地为输入串建立一棵语法树,或者说为输入串寻找一个最左(右)推导。这种分析过程实质上是一种试过程,是逐次使用不同产生式谋求匹配输入串的问题。 例是一文法S→ x A y (1) A→ * * (2) A→ * (3) 注意,该文法的(2)、(3)两条规则右部的头符号是相同的。我们推一下x*y这个串。 S x A y * * 注意,这里有意先使用规则(2)。 x*已被认为正确,但输入串的下一符号是y,规则(2)中则为*。此时不能认为错了(不能断定x*y不是正确的符号串)。 改用(3)条规则,得到: S x A y * 这就正确了。 这种回头换一个规则去试的情况,称为回溯。 再看分析x**y,此时先使用规则(3),有: x A y * 又不能真正匹配,故再试一条规则,得到: S x A y * * 就正确了。 这里的问题是产生了虚假匹配。反映到真正的编译程序中,这种回溯代价太大,要抹去已做工作,非常麻烦,而且必须做标记,以便能够“回去”。例设有文法: T→T,sT→s 其中,T ∈VN, Vt ,s ∈Vt 这里没有出现右部头符号相同的规则,但却是有左递归的规则。 T T , s T , s T , s T , s …… …… 不知道何时T→ s规则递归子程序法通常是一个规则的非终符对应一个递归子程序。本例是: tu5.1.doc 在试图用T去匹配输入符号串时,我们会发现,在没有吃进任何输入符号的情况下,我们又得重新要求T去进行新匹配。这就走不下去了,死递归了。对于回溯而言,很难报出

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档