Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 遵循设定的示例';你不遵守任何规则吗? → asg → 如果是C,那么是E C→ 布尔 E→ 其他 E→ λ_Parsing_Grammar_Ambiguous Grammar - Fatal编程技术网

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集合添加任何内容:

  • 在FOLLOW(S)中放置$,其中S是开始符号,$是输入右结束标记
  • 如果有生产⇒ αΒβ,那么第一个(β)中的所有东西,除了ε,都放在后面的(B)中
  • 如果有生产⇒ αΒ或生产a⇒ αΒβ,其中第一个(β)包含ε(即β⇒ε) ,则FOLLOW(A)中的所有内容都在FOLLOW(B)中
  • 假设
    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}