在为给定语法创建第一组时,我注意到我的算法参考中没有描述的场景。
即,如何使用这样的规则计算非终结符的跟随集。
<exp-list_tail> --> COMMA <exp> <exp-list_tail>
由&lt; ..&gt;包围的表达式是非终结者,COMMA是终端 我最好的猜测是我应该将空字符串添加到跟随集中,但我不确定。
通常情况下,对于非终结符号位于生产规则末尾的情况,您只需计算左侧非终结符的跟随列表,但您可以看到这是一个问题。
答案 0 :(得分:1)
要正确回答这个问题,了解整个语法会很有帮助。但是,这是一个普遍答案的尝试:
以下是计算关注组的算法:
初始化所有关注组到{},除了初始为{$}的S
虽然有变化,但每个A∈V都有:
对于每个Y→αAβ执行:
遵循(A)=跟随(A)∪第一(β)
如果β⇒*ε,也可以:跟随(A)=跟随(A)∪跟随(Y)
请注意,这是一个确定性算法,只会根据您的(整个)语法给出一个答案。
具体来说,我不认为这个特殊规则会影响<exp-list_tail>
的跟随集(可能,但可能不会)。