[解決済み】LL(0)パーサーというものがあるのですか?
2022-02-16 12:01:42
質問
LL(0)パーサーとLR(0)パーサーの違いを問う質問をどこかで見かけました。LL(0)パーサーというのはあるのでしょうか?もしあれば、どのようにトークンを見ずに解析するのでしょうか?
どのように解決するのですか?
LL(0)パーサーはトークンを見ますが、どのプロダクションを適用するかは決めません。ただ、そのシーケンスが言語に属しているかどうかを判断するだけです。これは、すべての非終端記号は単一の右辺を持たなければならず、再帰は存在してはならないことを意味します。
G == ID name lastname
name == STRING
lastname == STRING
# lexer rules
# -----------
ID == [0-9]+
STRING == <unicode>+
なお、@280Z28 が言っているように、可変長の部分 (
ID
と
STRING
)でなければ、文法は
LL(0)
.
その文法で入力を解析するために適用するプロダクションのシーケンスは、ルックヘッドをゼロにする必要があります。
入力シーケンスの一部がパースされた後に適用できるプロダクションが複数ある場合、決定論のためにルックアヘッドが必要です。
理論的には、文法 が生成します。 その中で、曖昧さ(あるフレーズを導き出す方法が複数あること)は問題ないのです。構文解析では、1つの方法しかないことは意味論(意味)の邪魔になるし、それが私たちの望むところです。
プログラミング言語の解析において、次にどの文法生成物を使うかを知るために必要な情報がルックアヘッドである。
LL(0)言語では、選択肢がないため、入力シーケンスは受け入れられてパースされるか、拒否されるかのどちらかです。
関連
-
[解決済み】LL(0)パーサーというものがあるのですか?
-
[解決済み] シフト/リデュース カップ付きエラー
-
[解決済み] レクサーとパーサーの比較
-
[解決済み】JavaScriptで文字列をfloatに変換する方法は?
-
[解決済み] C言語はそんなに難しくない:void ( *( *f[] ) () ) ()
-
[解決済み] トークナイザー」「パーサー」「レキサー」とは何か、どのような関係にあり、どのように使われるのか、明確な定義をお探しですか?
-
[解決済み] 自由形式の住所/郵便番号をテキストから解析し、コンポーネントに変換する方法
-
[解決済み] パース」の反対語は何ですか?[クローズド]
-
[解決済み] Flex/LexとYacc/Bisonの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン