私はコンパイラの構造を学ぼうとしていて、SLR パーサーに関する Dragon Book の章を読んだところです。そこで、簡単な文法を作成し、パーサーを手作業でコーディングすることにしました。文法は次のようになります。
S -> A
A -> (A)A
A -> e,
e
空文字列の生成はどこにありますか。
StackOverflow に関する別の質問によると、開始状態の項目は次のようになります。
S -> .A
A -> .(A)A
A -> .e,
しかし、GOTO 関数はどのように見えるでしょうか。私はそれを知っていGOTO( '(' ) = *some state with A -> (.A)A*
ますが、私は本当に頭を包むことができませんGOTO(e)
. パーサーが空の文字列を見ることは、実際には意味がありません。そうですか?
よろしくお願いします!
マイケル