[英]Building a FOLLOW set of a 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' {$}
但是在此之后我不知道如何进行。 一些技巧将是最受欢迎的,我不希望获得此问题的完整解决方案,只是一些技巧,这样我就可以了解构建跟踪集的工作方式。
跟随集规则
首先将$(输入标记的末尾)放在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'= { $ }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.