問題タブ [lr]
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.
c++ - 有効な LR(0) アイテムを表示
コンパイラ設計で SLR 解析で有効な LR(0) 項目を表示する C++ プログラムを作成する必要があります。これまで、文法をユーザーからの入力として受け取り、そのクロージャーを見つけることができました。しかし、SLR での goto 実装をさらに進めることができません。文法の有効な LR(0) 項目を表示する方法について、リンクまたはコードを教えてください。
-前もって感謝します
programming-languages - LLパーサーとLRパーサーの制限はありますか?
LLパーサーとLRパーサーの基本的な違いを知っています。また、GLR、SLR、およびLALRはすべてLRパーサーの拡張機能であることも知っています。だから私の質問はもっと詳しく...
LL(*)パーサーとLRパーサーのバリエーションを考えると、一方で記述でき、他方で記述できない言語はありますか?それとももっと簡単に言えば、どちらでも表現できない特徴や特性はありますか?
具体的な例として。LL(*)パーサーを使用して言語を作成する場合、LRパーサーでのみ可能になる(またはその逆の)言語に追加したい機能/プロパティに遭遇することはありますか?
algorithm - LL解析とLR解析の違いは何ですか?
LL 構文解析と LR 構文解析の簡単な例を教えてください。
parsing - k 無限の LR(k) パーサーは、決定論的文脈自由言語に限定されない?
無限先読みを備えた理論上の LR パーサーは、文脈自由文法で記述できる (明確な) 言語を解析できますか?
通常、LR(k) パーサーは決定論的文脈自由言語に制限されています。これは、現在適用できる文法規則が常に 1 つだけ存在する必要があることを意味すると思います。つまり、現在の先読みコンテキスト内では、可能な解析方法は 1 つしか発生しません。「Language Implementation Patterns」という本には、「... パーサーは非決定論的であり、どの選択肢を選択するかを決定できない」と記載されています。先読みセットが重複する場合。対照的に、非決定論的パーサーは、複数の選択肢がある場合は 1 つの方法を選択し、決定ポイントに戻って、ある時点で以前に行われた決定を続行することが不可能な場合は、次の選択肢を選択します。
LR(k) パーサーの定義 (ウィキペディアや Dragon Book など) を読むときはいつでも、「k は先読みトークンの数です」または「k > 1」の場合などを常に読みますが、k が無限になる可能性がある場合は決して読みません。 . 無限の先読みは、成功するまですべての選択肢を試すことと同じではありませんか?
LR(k) パーサーと非決定論的パーサーを (暗黙的に) 区別するために、k は有限であると想定されているのでしょうか?
c# - 算術式の LR 解析
(1+1),1+(a+1) のような式の LR 文法と LR テーブルがあります。
0: E'->E
1: E ->E + T
2: E-> T
3: T -> T * F
4: T-> F
5: F ->( E )
6: F-> ID
1+1 や 1+(1*a)+1 などの式をチェックしようとしましたが、パーサーはこの式が間違っていると言っています。
文法を修正するにはどうすればよいですか?
parsing - LL(1)、LR(1)、LR(0)、LALR(1)文法の例?
いくつかの主要な構文解析アルゴリズム (LL(1)、LR(1)、LR(0)、LALR(1)) の文法を集めたオンラインの優れたリソースはありますか? 私はこれらのファミリーに分類される多くの個々の文法を見つけましたが、誰かが大量の文法例を書き上げた優れたリソースを知りません。
そのようなリソースを知っている人はいますか?
theory - なぜすべてのLL(1)文法がLR(1)なのですか?
LL(1)文法もLR(1)であることは広く知られている事実ですが、これの厳密な証拠はどこにも見つからないようです。証明の概要をいくつか聞いたことがあります(たとえば、LL(1)文法では、一度に1つのトークンから生成が決定されるため、LR(1)文法では、決定前にはるかに多くの入力をスキャンできます)作られています)。しかし、コンパイラに関する2つの教科書を調べ、解析してGoogleですばやく検索した後、この事実のより正式な証明を突き止めることができないようです。
誰かがこの証拠、または少なくともそれを見つける場所を知っていますか?
algorithm - LR(0)とSLR解析の違いは何ですか?
私はコンパイラの概念に取り組んでいますが、少し混乱しています...グーグルで明確な答えを得ることができませんでした。
SLRとLR(0)パーサーは同じですか?そうでない場合、違いは何ですか?
parsing - unar 操作をサポートするために文法を拡張する
私は非常に単純な文法を持っています:
そして、unar操作をサポートするように拡張したいと思います(私見、これは正しい文法ですが、文法、パーサー、レクサーなどでは本当のn00bであるため、間違っている可能性があります):
本当の問題は、解析テーブルを更新しようとしているときに発生します。
問題は、単項演算のサポートを提供するためにこのテーブルをどのように編集すればよいか (記述された文法に基づいて) ですか?
PSとにかく、LR(k)(またはLALR)パーサーを使用してJava(または他のオブジェクト指向言語)で算術式を解析するのを手伝ってくれてとても感謝しています^_^
PS2。この場合、パーサージェネレーターは適していません。
parsing - このLR(1)文法がLALR(1)ではないのはなぜですか?
これは私の宿題ではありません。LALR(1)の文法を理解しようとしています。だから私はこれを見つけました
LRアイテムを作成しましたが、なぜこれがLR(1)文法であり、LALR(1)ではないのか理解できません。
誰か助けてもらえますか?ありがとうございました