自上而下的语法分析.pptVIP

  • 2
  • 0
  • 约4.93千字
  • 约 44页
  • 2018-09-04 发布于江苏
  • 举报
自上而下的语法分析

第4章 自上而下的语法分析 4.1 带回溯的自上而下分析法概述 从文法的开始符号出发进行推导,最终推出确定的输入串(由单词种别构成的源程序)。 4.1 带回溯的自上而下分析法概述 从根结点出发,试图用一切可能的办法,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。 4.1 带回溯的自上而下分析法概述 ㈠分析过程概述 例已知文法G: S→xAy A→**|* 和输入串α=x*y。 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 ⑥因S的第三个子结和指示器P所指的符号一致,故α是一个句子。 显然上述分析过程本质上是一个试探过程,是反复使用不同产生式谋求匹配输入串的过程。 4.1 带回溯的自上而下分析法概述 ㈡问题和困难 ①对于左递归文法定义的语言,不能采用自上而下的语法分析法。 例已知左递归文法G:S→Sb∣a和输入串α=ab,其分析过程如下所示: 4.1 带回溯的自上而下分析法概述 4.1 带回溯的自上而下分析法概述 试图用非终结去推导匹配输入串,而推导所得到的子树第一个子结是该非终结符本身,这样就陷入了死循环。 4.1 带回溯的自上而下分析法概述 ②存在虚假匹配,回溯不可避免。 ③编译程序的语法分析和语义分析通常是同时进行的。由于回溯,编译程序所做的一大堆语义分析工作必须推倒重来。 4.1 带回溯的自上而下分析法概述 ④当选用所有的不同候选组合,都不能为输入串建立一棵语法树,那么输入串存在语法错误。这种分析法最终只能告知输入串不是文法的一个句子,而无法告知输入串错在何处。 ⑤带回溯的自上而下分析法实际上是一种穷尽一切可能的试探法,因此效率很低,这种分析法几乎没有实用价值。 4.2 直接左递归的消除 直接左递归消除方法 假定关于非终结符P的规则为 P→Pα|β 其中,β不以P开头。可以把关于P的规则变换为如下形式: P→βP P→αP|ε 由于二者推导出的句型均为βαn(n≥0),故上述变换是等价的。 4.2 直接左递归的消除 例文法G E→E+T|T T→T*F|F F→(E)|i|x|y 经消除直接左递归后变成 E→TE E→+TE|ε T→FT‘ T→*FT|ε F→(E)|i|x|y 4.3 不带回溯的自上而下分析法的基本原理 设文法G有产生式 A→α1|α2|…|αn ㈠带回溯的自上而下的分析法 采用试探法,对于α1、α2直至αn逐一试探。 4.3 不带回溯的自上而下分析法的基本原理 ㈡不带回溯的自上而下的分析法 在推导时,根据面临的输入符号去找出A的那个唯一正确的候选式。 ①引入候选式α的first集定义 ②根据定义,求出每个候选式αi的first集。 4.3 不带回溯的自上而下分析法的基本原理 ③根据当前输入符号,选择候选式进行推导。 ④进一步考虑(A→ε) ⑤引入非终结符follow集定义 ⑥修改分析算法 4.4 提取左因子 ㈠实例引入 例定义无符号整数的文法 N→DN|D D→0|1|2|3|4|5|6|7|8|9|0 就是这样一种情形,first(DN)∩first(D)={D}。 4.4 提取左因子 ㈡解决方法 提取左因子,引进ε产生式,将文法改造为G。 N→DN N→N|ε D→0|1|2|3|4|5|6|7|8|9|0 ㈢提取左因子一般规则 4.5 first集和follow集 4.5.1 first集的定义及构造算法 ㈠first集定义 α是文法G的任一符号串(包括候选式),α∈(VT∪VN)* first(α)={a∣α ? a……,a∈VT} 若α ? ε,则规定ε∈first(α)。 4.5 first集和follow集 ㈡文法符号first集构造算法 ①终结符的first集为终结符本身。 ②观察每个产生式,若有X→a……,其中a∈VT,则a∈first(X);若X→ε,则ε∈first(X)。 ③观察每个产生式,若有X→Y……,其中Y∈VN,则将first(Y)中的非ε元素(记为first(Y)/ε)加到first(X)中。 4.5 first集和follow集 考虑更一般情况,X→Y1Y2…Yi…Yn,其中Y1、Y2、…Yi-1∈VN。 l 若first(Y1)中含有ε,则将first(Y2)/ε加到first(X)中,否则终止计算。 l若first(Y1)和first(Y2)中含有ε,则将first(Y3)/ε加到first(X)中,否则终止计算。 l?若first(Y1)、first(Y2)、…first(Yi-

文档评论(0)

1亿VIP精品文档

相关文档