4自顶向下的语法分析技术推荐.ppt

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

例子(1) 将文法 S → Sa S → b 改为非左递归文法 * 答案 S → bS’ S’ →aS’| ε * 练习 【复旦大学】将文法G[S] S → Sa|Nb|c N → Sd|Ne|f 改为无左递归的文法 * 确定的自顶向下分析技术 实现方法 递归子程序法 对每一个语法成分(用非终结符号代表)构成相应的分析子程序,以完成该非终结符所对应的语法成分的分析和识别任务。遇到该语法成分时,调用该程序。语法成分之间不可避免会含有递归,所以分析子程序间也会有递归调用。 * 子程序 子程序又分为 简单子程序(不调用任何子程序) 嵌套子程序(调用其它子程序;但不调用它本身) 递归子程序(直接或间接调用它自身) * 递归分析的思想 递归下降分析器编译思想是简单的,从识别符号开始,在语法规则支配下进行语法分析,它逐个扫视源程序中的所有字符,根据文法和当前输入字符预测到下一个语法成份U时,便确定U为目标,并调用分析和识别U的子程序,在分析U的过程中,又有可能确立其它(或自身)子目标并调用相应子程序,如此继续下去。因此把这种分析方法称为面向目标的分析方法,在此又称它为预测分析方法。 ? * 例子:递归子程序法 文法 S → (A)|aAb A →eA’|dSA’ A’ →dA’| ε 判断某输入字符串是否符合该文法,构造识别程序 算法思路 步骤1:判断该文法是否是LL1文法 步骤2:对非终结符编写3个过程P(S)、P(A)、P(A’) * P(S) S → (A)|aAb A →eA’|dSA’ A’ →dA’| ε * P(A) S → (A)|aAb A →eA’|dSA’ A’ →dA’| ε * P(A’) S → (A)|aAb A →eA’|dSA’ A’ →dA’| ε * 练习 词法分析和语法分析都是对字符串进行识别,二者有何区别? * 答:在词法分析和语法分析中,都是对输入符号串进行识别。但词法分析的输入符号串是一个单词,而语法分析的输入符号串是一个句子或者说是一个程序。为讨论方便采用小写字母来表示终结符号,但一定要明白在词法分析中,小写字母表示组成单词的一个个字符;而在语法分析中,小写字母表示组成程序的一个个单词。从识别方式来说,词法分析和语法分析都是对输入符号串结构的识别,但由于单词和程序的结构有所区别,所以具体的识别方法不一样。 * 练习 自上而下的语法分析方法会带来的主要问题有( )、 ( )。 * 动物破产 回想当年,哥也是住豪宅的 * 动物破产 什么?我破产了?对不起,我震惊的厥过去了! * 动物破产 神啊,让这个世界遗忘我吧,我还不起钱了! * 动物破产 为今之计,只有卖了豪宅,改住贫民巷了 * 动物破产 往事不堪回首啊,我怎么会破产呢 * 动物破产 我不听!别再说了! * 动物破产 就让我这样默默死去吧! * 动物破产 那样坐着藤椅玩着线球的美好日子一去不复返了 * 自顶向下的语法分析技术 计算机科学系 李静 语法分析 阶段 自词法分析后,编译过程的第二个阶段 任务 对单词序列进行分析,识别出合适的语法单位 方法分类 自顶向下 自底向上 * 自顶向下分析方法 概念 从开始符号出发,看能否推导出待检查的符号串,如果能,则表明此符号串是该文法的句型或句子,否则就不是。 能否从根结点出发向下生长出一棵语法树,其叶结点组成的句子恰好为输入字符串。 分类 不确定的自顶向下分析方法 确定的自顶向下分析方法 * 例子:不确定的自顶向下分析 G[S]: S→aAbc|aB A→ba B→beB|d 输入串:abed是否是该文法的句子 * 特点 不确定的自顶向下分析 出现回溯现象 效率低 编程复杂 * 例子:确定的自顶向下分析 G[S]: S→aBc|bCd B→eB|f C→dC|c 输入串:aefc是否是该文法的句子 * 例子 文法G[S]: S → aA|d A → bAS| ε 判断W=abd * 特点 确定的自顶向下分析 不会出现回溯现象 效率高 编程简单 * 怎样才能采用确定的自顶向下分析? 怎样才能采用确定的自顶向下分析? LL1文法 相关概念 * 首符号集 设有G=(VN, V T,P,S)是上下文无关文法 产生式:A→α FIRST(α)={a| α?*aβ} 例子 A→Bp|Ct B→r C→9|23 FIRST(Bp)={?} * 练习 已知文法G[S]: S → eT|RT T → DR| ε R → dR| ε D → a| bd 则: FIRST(S)= FIRST(T)= FIRST(R)= FIRST(D)= * 后跟符号集 设有G=(VN, V T,P,S)是上下文无关文法 产生式:S→μAβ FOLLOW(A)={a| a ∈FIRST(β)} 例子 A→dBCt B→r

文档评论(0)

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

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

1亿VIP精品文档

相关文档