自顶向下语法分析方法

合集下载

语法分析-自顶向下分析

语法分析-自顶向下分析
例 S::=aABbcd|ε A::=ASd|ε B::=SAh|eC|ε C::=Sf|Cg|ε 求此文法的每一个非终结符号的FIRST集。
解: FIRST(S)=FIRST(aABbcd)∪FIRST(ε) ={a}∪{ε}={a,ε} FIRST(A)=FIRST(ASd)∪FIRST(ε) ={a,d}∪{ε}={a,d,ε} FIRST(B)=FIRST(SAh)∪FIRST(eC) ∪FIRST(ε) ={a,d,h}∪{e}∪{ε}={a,d,h,e,ε} FIRST(C)=FIRST(Sf)∪FIRST(Cg) ∪FIRST(ε) ={a,f}∪{a,f,g}∪{ε}={a,f,g,ε}
4.1自顶向下的分析方法(P61)
开始符号 输入符号串
自顶向下的分析方法就是从文法的开始符号出发,按最左推导方式向下推导,试图推导出要分析的输入串。即:
开始符号 输入符号串
自底向上的分析方法从输入符号串开始,按最左归约方式向上归约到文法的开始符号。即:
+ 归约 ←
自底向上
文法符号的FIRST集合构造方法:
对于文法中的符号X∈V,其FIRST(X)集合可反复应用下列规则计算,直到其FIRST(X)集合不再增大为止: 若X为终结符,则将X加入FIRST(X)集合中。 若X为非终结符,且具有形如X→aα的产生式(a∈Vt),或具有形如X→ε的产生式,则把a或ε加进FIRST(X)。 设X为非终结符且有形如X→Y1Y2…Yk的产生式,若Y1∈Vn,则把FIRST(Y1)中的一切非ε符号加进FIRST(X);对于一切2≤i≤k,若Y1,Y2,…,Yi-1均为非终结符号,且ε∈FIRST(Yj),1≤j≤i-1,则将FIRST(Yi)中的一切非ε符号加进FIRST(X);但若对一切1≤i≤k,均有ε∈FIRST(Yi),则将ε符号加进FIRST(X)。

第5章-自顶向下语法分析方法

第5章-自顶向下语法分析方法
第5章 自顶向下语法分析方法
语法分析的主要工作: 是识别由词法分析给出的单词序列是否是给定的
正确句子(程序)。
பைடு நூலகம்语法分析常用的方法: 自顶向下的语法分析和自底向上的语法分析两大
类。
自顶向下分析思想
自顶向下的方法: 从文法的开始符号(设为〈程序〉)开始进行分析,
逐步推导的往下构造语法树,使其树叶正好构造出所给 定的源程序串(输入串)。
例5.1若有文法G[S]:
S → pA S → qB
A → cAd A→a
若有输入串w = pccadd.
考察自顶向下的推导过程。
解:推导过程为:
S pA pcAd pccAdd pccadd 其相应的语法树见右图:
S pA
cAd c Ad
a
这个文法的特点:
[1]每个产生式的右部都由终结符号开始。 [2]如果两个产生有相同的左部,那么它们的右部由不同的终 结符开始。
FOLLOW(A)的元素。
因此当文法中含有形如: A→α和 A→β的产生式时,其中 A∈VN ,α,β∈V*,当α和β不同时推导出空串时,设α * ε,β\ * ε, 则当FIRST(α) ∩(FIRST(β)∪FOLLOW(A))=φ时,对于非终结符 A的替代仍可唯一地确定候选。
定义5.3:
定义选择符集合SELECT如下: 对于给出上下文无关文法的产生式
自顶向下方法的关键: 是在推导过程中确定的选择候选式的问题。
自顶向下的主要思想: 从开始符出发导出句型并一个符号一个符号地与
给定输入串 (终结符串)进行匹配。如果全部匹配成功, 则表示开始符号可推导出给定的终结符串。因此判定 给定终结符号串是正确句子。
自顶向下的缺点:

第4章 自顶向下的语法分析

第4章 自顶向下的语法分析

6
分析中出现的问题2:回溯问题
从各种可能的选择中随机挑选一种, 并希望它是正确的。 如果以后发现它是错误的,必须退 回去,再试另外的选择这种方式称为回 溯。 回溯代价极高,效率很低。
7
在自上而下的分析方法中如何选择使 用哪个产生式进行推导? 假定要被替换的最左非终结符号是B, 且有n条规则:B→A1|A2|…|An,那么如何 确定用哪个右部去替代B? 从文法的开始符号出发,如何根据当前 的输入符号(单词符号)唯一地确定选用哪 个产生式替换相应非终结符往下推导,或构 造一棵相应的语法树。
8
§4.2 FIRST和FOLLOW集合的构造
9
例1:输入串w=pccadd是否是合法的句子?
G:S→pA|qB A→cAd|a B→dB|b
S=>pA=>pcAd=>pccAdd=>pccadd 总结:本题中对于一个非终结符,存在若干 个候选式,即产生式形如:P→α1|α2|……|αn 每个候选式的第一个字符都是终结符, 且都不相同。这时可直接选用与当前输入符 号相同的那个候选式来替换P。
42
3. 若X为一非终结符,则查分析表M。 若M[X,a]中为A—产生式,将A自栈 顶弹出,将产生式右部符号串按逆序逐 一推入栈中;当产生式为A时,则只将 A→ε弹出即可。若M[X,a]中为空,则调 用出错处理程序。
43
算法实现
当前字符匹 配成功。 要对栈顶的 非终结符进 行替换。
44
初始化
注意一 定要逆 序入栈。
48
49
通过表4-9可以看到,每个非终结符对应 产生式的各个候选式的交集如下:
可以验证,此文法是LL(1)文法。
50
递归下降语法分析程序如下:

《编译原理》课后习题答案第5章

《编译原理》课后习题答案第5章

《编译原理》课后习题答案第5章《编译原理》课后习题答案第5章.pdf《编译原理》课后习题答案第5章.pdf第5章自顶向下语法分析方法第1题对文法G[S] S→a|∧|(T) T→T,S|S(1) 给出(a,(a,a))和(((a,a),∧,(a)),a)的最左推导。

(2) 对文法G,进行改写,然后对每个非终结符写出不带回溯的递归子程序。

(3) 经改写后的文法是否是LL(1)的?给出它的预测分析表。

(4) 给出输入串(a,a)#的分析过程,并说明该串是否为G的句子。

答案:(1) 对(a,(a,a)的最左推导为:S(T) (T,S) (S,S) (a,S) (a,(T)) (a,(T,S)) (a,(S,S)) (a,(a,S)) (a,(a,a))对(((a,a),∧,(a)),a) 的最左推导为:S(T) (T,S) (S,S) ((T),S) ((T,S),S) ((T,S,S),S) ((S,S,S),S) (((T),S,S),S) (((T,S),S,S),S) (((S,S),S,S),S) (((a,S),S,S),S) (((a,a),S,S),S) (((a,a),∧,S),S) (((a,a),∧,(T)),S)(((a,a),∧,(S)),S)《编译原理》课后习题答案第5章.pdf《编译原理》课后习题答案第5章.pdf(((a,a),∧,(a)),S) (((a,a),∧,(a)),a)(2) 改写文法为:0) S→a 1) S→∧ 2) S→( T ) 3) T→S N 4) N→, S N 5) N→ε非终结符FIRST集FOLLOW集S {a,∧,(} {#,,,)} T {a,∧,(} {)} N {,,ε} {)}对左部为N的产生式可知:FIRST (→, S N)={,} FIRST (→ε)={ε} FOLLOW (N)={)}由于SELECT(N →, S N)∩SELECT(N →ε) ={,}∩ { )}= 所以文法是LL(1)的。

软件工程 编译原理 第五章 自顶向下的语法分析方法

软件工程 编译原理 第五章 自顶向下的语法分析方法
PROCEDURE T; BEGIN F;T END PROCEDURE T; IF SYM=‘*’ THEN BEGIN ADVANCE; F;T END;
例:文法G(E):
E→TE E→+TE | T→FT PROCEDURE F; T→*FT | IF SYM=‘i’ THEN ADVANCE F→(E) | i ELSE 对应的递归下降子程序为: IF SYM=‘(’ THEN
其中不以P开头。
可以把P的规则等价地改写为如下的非直接左递归 形式: 左递归变 P→P 右递归 P→P|
一般而言,假定P关于的全部产生式是 P→P1 | P2 | … | Pm | 1 | 2|…|n 其中,每个都不等于,每个都不以P开头 那么,消除P的直接左递归性就是把这些规则改写 成:
第5章 自顶向下的语法分析方法
语法分析的作用是识别由词法分析给出 的单词符号序列是否是给定文法的正确句 子(程序)。 目前语法分析常用的方法有: 1、自顶向下(自上而下)分析 2、自底向上(自下而上)分析
5.3非LL(1)文法到LL(1)文法的等价转换
确定的自顶向下分析要求给定语言的文法必
须是 LL(1)形式。然而,不一定每个语言都是 LL(1)文法,对一个语言的非LL(1)文法是否能变
换为等价的LL(1)形式以及如何变换是我们讨论
的主要问题。由LL(1)文法的定义可知若文法中 含有左递归或含有左公共因子,则该文法肯定不 是LL(1)文法,因而,我们设法消除文法中的左 递归,提取左公共因子对文法进行等价变换。
1、提取公共左因子
若文法中含有形如:A→αβ|αγ的产生式,这导 致了对相同左部的产生式其右部的FIRST集相交, 也就是 SELECT(A→αβ)∩SELECT(A→αγ) ≠ φ ,不满足 LL(1)文法的充分必要条件。

自顶向下的语法分析

自顶向下的语法分析

自顶向下的语法分析语法分析是语言学中一个重要的领域,它主要研究语言的结构,特别是句子的结构和语义。

自顶向下的语法分析是一种常用的语法分析方法,也称为“顶向句法”或“句法下行”。

它被定义为根据语言的上层构造来推断下层构造的一种策略。

自顶向下的语法分析的基本思想是,从一个句子的最顶层(或最外层)开始,从上而下逐层分解它,直至分解出个别单词或元素为止。

它通常利用语言语法的上下文无关性原则。

它允许类似于模糊推理,从而可以利用语言树结构来推测表达的额外信息和更深层次的意思。

自顶向下的语法分析的过程通常如下:首先,通过自动识别技术,识别语料中句子的成分,这是一个可以自动完成的过程;其次,从句子的最顶层,开始依次断出句子结构的层次,这是一个人工完成的过程;最后,根据推测出的层次,分析句子语义,并做出相应的判断。

自顶向下的语法分析也可用来处理句子中的歧义。

它也可用于处理复杂句子,比如复合句、从句等。

除此之外,它还可以处理冗余句,比如重复、拖尾等,从而进一步分解语句。

自顶向下的语法分析是一种非常有效的方法,也是计算机语言处理的基础。

近年来,随着计算机的发展,自顶向下的语法分析技术得到了进一步的改进和发展,应用于更多的领域,如自然语言处理、机器翻译、人机对话、智能搜索、智能问答等。

自顶向下的语法分析不仅可以用于机器理解,而且还可以用于人类理解。

它可以帮助人们更快、更全面地理解句子的结构,也可以加深人们对语言抽象类概念的理解。

此外,它还可以帮助学生和教师更有效地学习和教学,更好地掌握文法的规则,更好地掌握语言的抽象概念,并培养学生的语言素养。

自顶向下的语法分析方法确实具有重要的理论和实用价值,但它也存在一些缺点。

不同语言有不同的语法规则,而自顶向下的语法分析方法假定语言具有一些共同的规则,而这种规则可能不一定适用于所有语言。

此外,自顶向下的语法分析也不太灵活,往往不能很好地处理复杂的语句,也容易受到歧义的影响。

总的来说,自顶向下的语法分析是一种有效的语法分析方法,它不仅可以用于计算机语言处理,而且可以用于人类理解,帮助人们更好地理解语言结构,也可以加强人们对语言抽象概念的理解,有利于学习和教学。

编译原理(3)语法_4(自顶向下语法分析:LL(1)分析法)

编译原理(3)语法_4(自顶向下语法分析:LL(1)分析法)
2first集确定了每一个非终结符在扫描输入串时所允许遇到的输入符号及所应采用的推导产生式集确定了每一个非终结符在扫描输入串时所允许遇到的输入符号及所应采用的推导产生式该非终结符所对应的产生式中的哪一个候选式33自顶向下的语法分析式中的哪一个候选式3follow集是针对文法中形如a这样的产生式的即在使用这样的产生式的即在使用a的产生式进行推导时面临输入串中哪些输入符号时有一空字的产生式进行推导时面临输入串中哪些输入符号时有一空字即匹配而不出错
课本例题3.8 第二步:计算非终结符的FOLLOW集合
G[E]: E→TE' E'→ + TE' | ε T→FT' T'→*FT' | ε F→(E) | i ③由E→TE' 知FOLLOW(E) ⊂ FOLLOW(E' ), 即FOLLOW(E' ) = {),#}; 由E→TE ' 且E ' → ε知FOLLOW(E)FOLLOW(T),即 FOLLOW(T) = {+,),#};
特别是当Y1~Yk均含有ε产生式时,应把ε也加到FIRST(X)中。
课本例题3.8 第一步:计算非终结符的FIRST集合 例3.8 试构造表达式文法G[E]的LL(1)分析表,其中: G[E]: E→TE' E'→ + TE' | ε T→FT' T'→*FT' | ε F→(E) | i
[解答] 首先构造FIRST集,步骤如下: ① FIRST(E') = {+, ε}; FIRST(T') = {*, ε}; FIRST(F) = {(, i}; ② T→F… 和E→T…知:FIRST(F) ⊂ FIRST(T) ⊂ FIRST(E) 即有FIRST(F) = FIRST(T) = FIRST(E) = {(,i}。

自顶向下的语法分析

自顶向下的语法分析

自顶向下的语法分析自顶向下的语法分析是指一种从上至下地分析文法的方法,它的分析处理过程将从最高层的语法约束开始,并以不断的递归方式来拆解语法结构,直到最底层的语言符号细节为止。

这种从上而下的语法分析方法主要以文法规则为基础,特别是非确定的文法规则,它们描述了一系列可能的文法分析解决方案。

自顶向下的语法分析可以用于解决自然语言处理问题,其中包括机器翻译、自动问答、语义分析等。

在自然语言处理中,自顶向下的语法分析可以提供有用的线索,帮助我们建立起自然语言与其他形式的信息之间的对应关系,使之能够按照特定的语义规则进行理解和解释。

另外,自顶向下的语法分析可以帮助我们建立起文本与自然语言之间的框架,用以理解文本的结构组合、词语的意义及句子的表达方式,以及表达者如何把握文本的实际内容。

自顶向下分析会包括一些基本步骤,其中最主要的是首先分析出句子的语法结构。

除此之外,还需要对语法结构进行句法编码,以便识别各个句子的具体结构、词性分类、词语语义,以及句子的整体表达意义。

基于自顶向下的语法分析,可以提出一些结构性的文法抽象,以便更好地分析文本。

如果我们对文本分析进行抽象,可以找出共性的结构,从而使得文本的语义分析和翻译更加准确和快速。

此外,自顶向下分析还可以帮助我们构建一些文法模型,这些模型可以更加精确地描述语言,以及句子或文本在特定环境下的用法。

自顶向下的语法分析还可以在语言学习中使用,它可以用来帮助语言学习者更好地理解语言及其结构。

从句法的角度看,学习者可以把句子分解为一系列的结构性单元,从而使他们更容易地理解其中的语法结构、句子的表达和词语的意义,以及句子或文本在特定环境下的用法。

由于自顶向下的语法分析在自然语言处理中有着重要的应用,因此,在研究者和工程师们经常采用它来开发一些有用的应用程序,帮助人们更好地理解自然语言,提高自然语言处理的效率。

然而,自顶向下的语法分析也有一些缺点,例如从复杂的结构性内容中提取出有用的信息和线索可能会很困难,并且需要大量的数据来适配各种不同的语言形式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉理工大学计算机科学系陈天煌
5.1
确定的自顶向下分析思想
例5.1若有文法G[S]: S → pA S S → qB A → cAd A p A→a 若有输入串w = pccadd. c A d 考察自顶向下的推导过程。 解:推导过程为: c A d pccAdd pccadd pA pcAd S a 其相应的语法树见右图: 这个文法的特点: [1]每个产生式的右部都由终结符号开始。 [2]如果两个产生式有相同的左部,那么它们的右部由不同的 终结符开始。 显然对于这样的推导中完全可以根据当前的输入符号决定选择 哪个产生式往下推导。因此分析过程是唯一的。 武汉理工大学计算机科学系陈天煌
小 结:
从上述推导过程中我们可以在第二步到第三步的推 导中,即abAS abS时,因当前面临输入符号为d,而 最左非终结符A的产生式右部的开始集合都不包括d,但 有ε,因此对于d的匹配自然认为只能依赖于在可能的推 导过程中A的后面的符号。所以这时选用产生式A →ε 往 下推导,而当前A后面的符号为S,S产生式右部的开始 符号包括了d,所以匹配。 由此可以看出,当某一非终结符的产生式中含有空产 生式时,它的非空产生式右部的首符号集两两不相交, 并与在推导过程中紧跟该非终结符右边可能出现的终结 符集也不相交,则仍可构造确定的自顶向下分析。为此 可定义一个文法符号的后继符集合为: (定义5.2)
武汉理工大学计算机科学系陈天煌
(三) 求FOLLOW(A)的算法(A∈ VN): (a)对文法开始符号S,令# ∈ FOLLOW(S). (b)若B→α Aβ 是一个产生式,则令FIRST(β)-{ε} 属于FOLLOW(A); (c) 若B→αA是一个产生式,或B→αAβ是一个产生 式且有ε∈FIRST (β),则令FOLLOW(B)是 FOLLOW(A)的子集。即把FOLLOW(A)的所有元素 加入到FOLLOW(B)中。 (d)反复使用(b)直到每个非终结符的 FOLLOW集合 不再增加为止。
小结: 在上述推导过程中,对于产生式中相同左部含有 非终结符打头的右部时,在推导中选用哪个产生式是 不能直接知道的。
对输入串W=ccap为输入串时,其第一个当前输入 符号为c,这时从S出发选择S → Ap,还是选择S →Bq。 其根据是要知道 A或B它们是否能推导以c打头的符号 串,即它们的首符集是什么。若c是Ap的首符集的元素, 且不在Bq的首符集中,则选择S →Ap往下推导。反之, 若c在Bq的首符集中,不在Ap的首符集中,则选择S →Bq往下推导。其它情况为不确定推导或出错。 因此,有必要在推导前求出每个文法符号的首符集。
即: FIRST(α)是从α出发推导出的所有符号串首终结
符或可能的ε构成的集合。
武汉理工大学计算机科学系陈天煌
关于文法G2[S]: S Ap S Bq A a A cA B b B dB
文法 G2中,关于S的两个产生式虽然都以非终结 符开始,但它们右部符号串可以推导出首符集合互不 相交,因此可根据当前的输入符号是属于哪个产生式 右部的首符号集合而决定选择相应产生式进行推导。 因此是确定的自顶向下分析。
武汉理工大学计算机科学系陈天煌
(四) 求SELECT(A→α)的算法: (a)求FIRST(α);
(b)若ε∈FIRST(α),则令SELECT(A→α)=FIRST(α)
否则求FOLLOW(A), 并令SELECT(A→α)= (FIRST(α)-{ε})∪FOLLOW(A). 例:有文法:E→TE' E'→+TE' |ε T→FT' T'→*FT' |ε F→i | ( E ) 求其三种集合。
则 FIRST(X)=FIRST(y1)∪FIRST(y2)∪….∪FIRST(yn)∪{ε}
反复使用上述(b)~(d) 步天煌
(二)求 FIRST(α)的算法(α= x1 x2 …. xn): 1.若n=0,即α=ε,则令FIRST(α)={ε}; 2.否则,对1≤i≤n,求FIRST(xi) 3.若n=1,则令 FIRST(α)=FIRST(x1); 4.若n≥2且对一切j=1,2,….,i-1都有ε∈FIRST(xj). 则令FIRST(xi )-{ε} FIRST(α),其中2≤i≤n; 若对一切 j=1,2,…,n都有ε∈FIRST(xj),则令ε∈FIRST(α) 或:1.把FIRST(x1)中所有非ε元素加入到FIRST(α)中,即 FIRST(α )=FIRST(x1)-{ε }; 若FIRST(x1)包含有ε,则把FIRST(x2)的所有非ε元素加入到 FIRST(α)中,即FIRST(α)=FIRST(α)∪ (FIRST(x2)-{ε}); 若FIRST(x1)和FIRST(x2)都包含有 ε,则把FIRST(x3)的所有 非ε元素加到FIRST(α)中;…… 照此方法继续,一直到考察到xn。 2.若FIRST(xi ),i= 1,2,…,n;即每个FIRST(xi )中都有ε。则将ε加 到FIRST(α)中。特别地, 若 α=ε ,则FIRST(α)={ε}.
(d)若 X∈VN, y1, y2,…..yi都∈VN,且有产生式X→ y1 y2…..yn, 当y1, y2,…..yi-1 都 * ε时,(其中1≤i≤n),则FIRST(y1)-{ε},
FIRST(y2 )-{ε},….,FIRST(yi-1 ) -{ε},FIRST(yi)都包含在 FIRST(X)中。 (e)当(d)中所有yi * ε(i= 1,2,….,n),
武汉理工大学计算机科学系陈天煌
定义5.2:
设G=(VN , VT ,P,S)是上下文无关文法,A∈VN的后继符集合为: FOLLOW(A)={a|S * μAβ且a∈VT ,a∈ FIRST(β), μ∈VT*,β∈V*} 或 FOLLOW(A)={a | S * …Aa… ,a∈VT} 特别地,若S * …A,则#∈FOLLOW(A) (这里#不是文法中的符号,而一个特别的表示输入串的结束符 或称句子括号如 #输入串#) 表示:所有在句型中紧挨着A后面出现的终结符或#均是 FOLLOW(A)的元素。 因此当文法中含有形如: A→α和 A→β的产生式时,其中 A∈VN ,α,β∈V*,当α和β不同时推导出空串时,设α * * ε, \ ε,β 则当FIRST(α) ∩(FIRST(β)∪FOLLOW(A))=φ时,对于非终结符 A的替代仍可唯一地确定候选。
自顶向下方法的关键: 是在推导过程中如何确定的选择候选式的问题。
自顶向下的主要思想: 从开始符出发导出句型并一个符号一个符号地与 给定输入串 (终结符串)进行匹配。如果全部匹配成功, 则表示开始符号可推导出给定的终结符串。因此判定 给定终结符号串是正确句子。
武汉理工大学计算机科学系陈天煌
自顶向下的缺点:
在推导过程中,如果对文法不做限制。那么产生 式的选择成为无根据的,只好一一去试所有可能的产 生式,直至成功为止。这种方法的致命弱点是不断地 回溯,大大影响速度。 所以自顶向下分析法又分为确定的和不确定的两种: 确定的分析方法需对文法有一定的限制,但由于 实现方法简单,直观,便于手工构造或自动生成语法 分析器,因此仍是目前常有的方法之一。 不确定的方法即回溯的分析方法。这种方法实际 上是一种穷举的试探方法,因此效率低,代价高,因 此极少使用。
例5.2: 若有文法G2[S]:
S Ap S S Bq p A a A A cA B b c A B dB 若有输入串w = ccap。 A c 考察自顶向下的推导过程。 a 解:自顶向下的推导过程为: S Ap cAp ccAp ccap 其相应的语法树见右图: 这个文法的特点: [1]产生式的右部不全是由终结符号开始。 [2]如果两个产生式有相同的左部,它们的右部由不同的终结 符或非终结符开始。 [3]文法中无空产生式。 武汉理工大学计算机科学系陈天煌
武汉理工大学计算机科学系陈天煌
5.2 LL(1)文法的判别
定义5.4:一个上下文无关文法是LL(1)文法的充分必要条件是每个 非终结符A的两个不同产生式,A →α ,A →β ;满足 SELECT(A →α ) ∩ SELECT(A →β )= Ф 。 其中, α、 β 不能同时 * ε。 当一个文法是LL(1)文法时,则该文法一定能够采用确定的 自顶向下的分析方法进行分析。
武汉理工大学计算机科学系陈天煌
解:
例:有文法:E→TE' E'→+TE'|ε FIRST(E)=FIRST(T)=FIRST(F)={i, ( } FIRST(E')={+,ε} T→FT' FIRST(T')={*,ε} T'→*FT'|ε FOLLOW(E)=FOLLOW(E')={ ),#} F→i| (E) FOLLOW(T)=FOLLOW(T')={+,),#} 求其三种集合。 FOLLOW(F)={*,+,),#} SELECT(E→TE')=FIRST(T)={i,( } SELECT(E'→+TE')=FIRST(+TE')={+} SELECT(E'→ε)=(FIRST(ε)-{ε})∪FOLLOW(E')={),#} SELECT(T→FT')=FIRST(F)={i,(} SELECT(T'→*FT')=FIRST(*FT')={*} SELECT(T'→ε )=(FIRST(ε)-{ε}) ∪FOLLOW(T')={+,),#} SELECT(F→i)=FIRST(i)={i} SELECT(F→(E))=FIRST(i) ={(}
第5章 自顶向下语法分析方法
语法分析的主要工作: 是识别由词法分析给出的单词序列是否是给定的 语法上正确的句子(程序)。
语法分析常用的方法: 自顶向下的语法分析和自底向上的语法分析两大 类。
相关文档
最新文档