构建一个FOLLOW语法集

时间:2014-10-03 07:06:02

标签: compiler-construction set grammar

我有一个删除了左递归的语法,它也被遗忘了。

我已经创建了FIRST集,这是一项非常简单的任务,但构建FOLLOW集是有问题的。我试图找到有用的例子,但没有找到任何可以帮助我的方法。

这是语法:

St是起始符号。

St -> St'
St' -> i S'
E -> i E'
E' -> [ E ] E'
E' -> ε
S' -> = E
S' -> [ E ] = E

相应的FIRST集

E = { i }
E' = { [, ε }
S' = { [, = }
St = { i }
St' = { i }

现在,构建跟随集的规则来自http://www.jambe.co.nz/UNI/FirstAndFollowSets.html非常简单,但我不知道如何正确应用它们。

到目前为止我已经构建的关注集是:

E = {}
E' = {}
S' = {}
St = {$}
St' {$}

但在此之后我不知道如何继续。一些提示是最受欢迎的,我不希望得到完整的解决方案,只是一些提示,所以我可以理解构建跟随设置是如何工作的。

1 个答案:

答案 0 :(得分:2)

关注集规则

  • 首先将$(输入标记的结尾)放在Follow(S)中(S是起始符号) 如果有生产A→aBb,(其中a可以是整个字符串)那么FIRST(b)中除ε之外的所有内容都放在FOLLOW(B)中。

  • 如果有生产A→aB,那么FOLLOW(A)中的所有内容都在FOLLOW(B)

  • 如果有生产A→aBb,其中FIRST(b)包含ε,那么FOLLOW(A)中的所有内容都在FOLLOW(B)中 根据以上规则您的答案是:

    E = { ] }
    
    E' = { ] }
    
    S' = { $ }
    
    St = { $ }
    
    St'= { $ }