ここでhttp://slkpg.byethost7.com/llkparse.html FOLLOW_k-Sets が定義されています
「文法における記号の文字列の FOLLOWk セットは、文法で導出可能な何らかのセンテンシャル形式の記号の文字列に続く、文法における k 長の終端記号文字列のセットです」
最初に、リンクの下の例に関する引用があります。文法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 は開始記号であるため、その後ろには何も来ないため、FOLLOW2(S) と書く必要があります。 = \empyset または FOLLOW2(S) = { イプシロン }?