こんにちはスタック オーバー フロー メンバーです。
私はコンパイラクラスのために勉強しています。トップダウン パーサーは左再帰を避け、右再帰に変換する必要があることを理解しました。
質問は、
a) トップダウン パーサーが LL に等しく、ボトムアップ パーサーが LR に等しいことを理解していますか?
b) 左再帰は自分自身を呼び出すルールであることがわかりました ex) Expr :== Expr '+' Term | Expr を見つける無限ループを引き起こす項。とにかく、C または Java での入力を考慮するサンプル コードはありますか? ( パーサーやスキャナーのコードはいらない ) 必要なのは、左再帰による無限ループが発生するセンテンシャル形式のコード例です。
c) トップダウン パーサーで右再帰を使用する方法で実際に何が違いますか?
ANS c) バックトラックの必要性をなくす。しかし、他の何か?
ANS b)x - 2 * y
だけでなく、他の何か? これはバックトラックの解析方法で動作するためです。
非左再帰と左再帰の両方を発見した事例。
左再帰文法
A -> Ax
非左再帰文法
A -> Bx
B -> Ay
どちらも無限ループに陥っています。
専門家の皆様、ありがとうございました。