質問
私はLR1パーサがどのように機能するかを理解しようとしているが、私は奇妙な問題を思い付いた:どのような文法はイプシロンが含まれている場合は?例えば:私は文法を持っている場合:
S -> A
A -> a A | B
B -> a
これは、起動する方法を明らかです。
S -> .A
A -> .a A
A -> .B
...というように
私は、このような文法のためにそれを行う方法がわからない。
S -> A
A -> a A a | \epsilon
それが正しい行うことです。
S -> .A
A -> .a A a
( A -> .\epsilon )
そして受け入れてDFAにこの状態を作りますか?
すべてのヘルプは本当にいただければ幸いです!
解決
はい、正確に(イプシロン両側のドットのための2つの場所がないなどの空きスペース、と思う)。
競合を減らす/シフトがあるだろう、原因A->a A a
の生産に、LR(0)オートマトンでは、あなたは状態が受け入れることになるだろう。しかしAに減らします。
a
で何か - >削減FOLLOW(A)
) このLR(1)オートマトンでは、先読みを使用してシフトするか軽減するかどうかを決定するであろう
タグの Wikipediaの記事を参照してください。
所属していません StackOverflow