此处http://slkpg.byethost7.com/llkparse.html定义了FOLLOW_k-Sets
“FOLLOWk的一串字符串 语法中的符号是一组k长度的终端符号串 可能跟随某些符号串的语法 可以在语法中推导出的句子形式“
首先,我对链接下的示例有一个概念,那里是Grammar 4.2
A --> a <Baa> a a
A --> b <Bba> b a
<Baa> --> b
<Baa> -->
<Bba> --> b
<Bba> -->
据说:
FIRST2 ( A ) = { aa, ab, bb }
FIRST2 ( <Baa> ) = { epsilon }
FIRST2 ( <Bba> ) = { epsilon }
FOLLOW2 ( <Baa> ) = { aa }
FOLLOW2 ( <Bba> ) = { ba }
但我问自己为什么不
FIRST2 ( <Baa> ) = { epsilon, b }
FIRST2 ( <Bba> ) = { epsilon, b }
因为例如也可以导出单个b。
此外还有语法
S -> X
X -> aX
X -> aY
Y -> epsilon
我不确定集合
FOLLOW2(S)
是空的,{epsilon}还是{a,aa},因为这些字符串是可派生的,或者它是S之后的重要内容,因为S是startsymbol,它后面没有任何东西,但是我应该写FOLLOW2 (S)= \ empyset或FOLLOW2(S)= {epsilon}?
答案 0 :(得分:0)
对于任何k,FOLLOWk(S)都是空的,因为根本没有任何东西可以跟随S.我不知道你的意思是'因为这些字符串是可导出的',但是因为它们无法遵循S它无论如何都是无关紧要的。