このアルゴリズムが示すように、間接再帰を削除してから直接再帰を削除することにより、CFG から左再帰を削除しようとしています。
私はこの文法を使用します:
A = A a | A B C | B C | D D
i = 1でj = 1の場合、 A -> A rの形式のすべてのプロダクションを次のように置き換えます。
A -> δ 1 γ | δ 2 γ | .. | δ k γ
したがって、一致する A -> A aを見ると、次のように置き換える必要があります
A -> A a a | A B C a a | B C a | D D a
どちらが間違っていると確信していますか
プロダクション自体に置き換えるときに、プロダクションを置き換える方法について誰かが正しい方向に向けることができますか?
注:また、私は最初のルールだけに固執しているので、簡単にするために他のルールを省略しました
どんな助けでも大歓迎です
[更新]元のギリシャ記号にできるだけ近いものを見つけました。また、おそらくこれに間違った方向でアプローチしていますか。i=1かつj=1の場合、A j -> A a | ABC | 紀元前 | 紀元前 DD、しかし、A j -> BC |を使用する必要があります。DD もしそうなら、私は得るでしょう:
A -> B C A | B C B C | D D A | D D B C | B C | D D
これにより、そのプロダクションでの再帰が排除されます。これはより良い方向ですか?