問題タブ [ll]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ll - LL文法が左再帰を除外する正式な理由
私は現在、暇なときにドラゴンブックを読んでいます。この本は、文法がLLであると述べているのは、プロダクションA-> a | bの場合に限り、次の2つの条件が当てはまる場合です。
1)FIRST(a)とFIRST(b)は互いに素です。これは、両方がEMPTYを導出できないことを意味します
2)「b」がEMPTYを導出できる場合、「a」はFOLLOW(A)で始まる文字列を導出できません。
LLパーサーは一般に左再帰を処理できないことは知っていますが、文法を作成すると
S-> S(S)| 空、
FIRST(S)= {'('}およびFOLLOW(S)= {EOF}。これは2つのルールのいずれにも矛盾しないようですが、何かが足りませんか?
よろしくお願いします、マイケル
parsing - LR(0) パーサーがあるのに LL(0) パーサーがないのはなぜですか?
私はウィキペディアで両方を読んでいて、LR(0) パーサーは存在しますが、LL(0) パーサーのようなものは存在しないことに気付きました。
私が読んだことから、LL(k)/LR(k) の k は、パーサーが現在作業中の現在の文字を超えて認識できる文字数を意味することを理解しています。
私の質問は、LR(0) が存在するにもかかわらず、LL(0) パーサーなどがないのはなぜですか?
linux - Linux ll 出力の解釈
これは ll コマンドの通常の出力です
この出力がこのようなものかどうかお聞きしたいのですが、
"c" とはどういう意味ですか?
parsing - 文法の作り方 LL(1)
私は次の文法を持っています:
S→aSbS| b S a S | ε
そのための小さなコンパイラを書こうとしているので、LL(1)にしたいと思います。ここで FIRST/FOLLOW の競合が発生しているようです。それを解決するには置換を使用する必要があることはわかっていますが、どうすればよいか正確にはわかりません。これが私の提案する文法ですが、それが正しいかどうかはわかりません:
S-> aSbT | イプシロン
T-> bFaF| イプシロン
F->イプシロン
誰か助けてくれませんか?
grammar - 文法&&LLパーサー
ですから、宿題があり、この文法がLLパーサーで機能しない理由を調べるために2時間以上費やしました。
誰かが私を正しい方向に向けてくれませんか?LLがつまずく可能性がある方法の1つは、ここでは信じられない無限ループに遭遇した場合です。
ありがとう
parsing - LL(1) 解析 -- 再帰的な最初の選択肢を使用した First(A)
次のようなプロダクションに FIRST() ルールを適用するにはどうすればよいですか。
A -> AAb | アブ | s
ここで、A は非終端記号で、b,s は終端記号です。
選択肢 1 と 2 の FIRST(A) は再び A になりますが、FIRST セットを取得するには端末が必要なので、これは FIRST の無限の適用に終わりますか?
parsing - LL(1) 解析テーブルに複数のエントリがありますか?
この文法を考えると:
S → S 1 S 2
S 1 → a | ε
S 2 → ab | ε
したがって、
FIRST(S 1 ) = { a, ε }
FOLLOW(S 1 ) = { a }
これは、解析テーブルで、S 1の行との列に複数の定義があることを意味しますa
か?