これは文法です:
S' -> S
S-> aBc|bCc|aCd|bBd
B ->e
C ->e
私はCLRで解析してから、削減/削減の競合が発生しました。次はどうする?解決した問題を以下に添付します。
これは文法です:
S' -> S
S-> aBc|bCc|aCd|bBd
B ->e
C ->e
私はCLRで解析してから、削減/削減の競合が発生しました。次はどうする?解決した問題を以下に添付します。
誰か次のことを教えてください
エラー...競合を修正しますか?
パーサーが e の後に c または d のいずれかを満たす場合、最後の 2 つのプロダクションからでも非常に明確です。
B -> e . {c, d}
C -> e . {c, d}
上記の条件を B または C に縮小する必要があるかどうかを判断するには、単一の先読みでは十分ではありません。
パーサー ジェネレーターは通常、文法で最初に現れるものを採用することで解決しますが、これは必ずしも良いケースではありません。上記の文法では、この解決策が採用された場合、e は常に B に還元されるため、パーサーは bec と aed を解析できません。
競合が発生しないように文法を変更することをお勧めします。文法全体で生成できるのは aec、bec、aed、bed だけです。一意に削減される個別の生産を行うシーケンスで何が優れているかを確認してください。