Parsing 遵循设定的示例';你不遵守任何规则吗? → asg → 如果是C,那么是E C→ 布尔 E→ 其他 E→ λ
所有小写字母和λ都是端子符号 我需要帮助推导下面这套语法。我通常不会遇到这些问题,我知道这些规则,但当我从我的书中练习这个例子时,这是我唯一能得到的:Parsing 遵循设定的示例';你不遵守任何规则吗? → asg → 如果是C,那么是E C→ 布尔 E→ 其他 E→ λ,parsing,grammar,ambiguous-grammar,Parsing,Grammar,Ambiguous Grammar,所有小写字母和λ都是端子符号 我需要帮助推导下面这套语法。我通常不会遇到这些问题,我知道这些规则,但当我从我的书中练习这个例子时,这是我唯一能得到的: Follow(S) = {$} U Follow(E) Follow(C) = Follow(E) = 根据: 要为所有非终端A计算FOLLOW(A),请应用以下规则,直到无法向任何FOLLOW集合添加任何内容: 在FOLLOW(S)中放置$,其中S是开始符号,$是输入右结束标记 如果有生产⇒ αΒβ,那么第一个(β)中的所有东西,除了ε
Follow(S) = {$} U Follow(E)
Follow(C) =
Follow(E) =
根据:
要为所有非终端A计算FOLLOW(A),请应用以下规则,直到无法向任何FOLLOW集合添加任何内容:
S
是语法中的起始符号,λ
表示空字符串,我们得到:
{$}⊆ 遵循规则1
(第一(E)\{λ})⊆ 遵循规则2/生产规则2
跟随(E)⊆ 按照规则3/生产4进行操作
(首先(然后是se)\{λ})⊆ 按照规则2/2遵循(C)
跟随⊆ 按照规则3/2遵循(E)
首先(然后是se)
只是然后(因为它是终端),所以我们有{then}⊆ 遵循(C)
这是对Follow(C)
的唯一约束,因此满足该约束的最小集合为:
Follow(C) = {then}
因为我们有Follow(E)⊆ 跟随
和跟随⊆ 遵循(E)
,遵循(hah)它们是相等的:
Follow(E) = Follow(S)
终于有了
Follow(S) = {$} ∪ (First(E) \ {λ})
幸运的是,First(E)
很容易,因为E
只有两个产品,其中一个是空的,另一个以终端符号开始:
First(E) = {λ, else}
所以
Follow(S) = {$, else}
及
S后面可以跟E,E的第一组包括else
。C后面可以跟然后
Follow(E) = {$, else}