19
誰かが再帰的降下パーザが左回帰を含む文法で動作できない理由を教えてください。再帰的降下パーザが左回帰を処理できない理由
誰かが再帰的降下パーザが左回帰を含む文法で動作できない理由を教えてください。再帰的降下パーザが左回帰を処理できない理由
は考慮してください。
A ::= A B
同等のコードは、無限再帰を
boolean A() {
if (A()) {
return B();
}
return false;
}
見ていますか?形質転換の一般的な形態である
A ::= (D | E) (B | C)*
:左のいずれかの数字が続く非左再帰的論理和のいずれか興味が誰
A ::= A B | A C | D | E
のように書き換えることができるため
最初の要素のない再帰的な論理和。
アクションコードを改ざんするのはちょっとしたことですが、私もプラグアンドチャグにすることができます。
初めて私はそれを見たことがありますが、通常はAという新しい非終端記号を使用するようにアドバイスを見ました。 –
BNFベースのツールではグループを許可しないので、新しいルール解決策に固執します。パーザー・ジェネレーターもアクション変換を行う必要があるため、私が提案したフォームの一部になっているので、新しいルールなしで動作させるのはずっと簡単です。 – BCS
これは本当に質問に答えません。コメントとしては良いでしょう。 –