問題タブ [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.
parsing - LR(0) パーサーの後置演算子と右結合演算子
前置演算子と後置演算子の両方を使用して言語を解析できる LR(0) パーサーを構築することは可能ですか? たとえば、 + (足し算) と ! を使った文法があるとします。通常の優先順位の (階乗) 演算子、次に 1+3! 1 + 3 である必要があります。= 1 + 6 = 7 ですが、確かにパーサーが LR(0) の場合、スタックに 1+3 があった場合、シフトではなく減少しますか?
また、正しい連想演算子は問題を引き起こしますか? たとえば、2^3^4 は 2^(3^4) である必要がありますが、パーサーがスタックに 2^3 を持っている場合、どのようにして削減またはシフトを知るのでしょうか?
これが不可能な場合、おそらく文法を変更して適切な場所に括弧を追加することにより、LR(0) パーサーを使用する方法がまだありますか?
bnf - LR lex /パーサーにBNFですでに使用されている端末のサブセットを再利用することに何か問題がありますか?
私はまだ頭をすべてに巻きつけているので、私の用語を許してください。私は最初のパーサーをまとめようとしており、文法を構築するためにできる限り多くの例を見つけようとしています。非ターミナルが複数のプロダクションを取得する多くの状況を見てきました
これは書くのと同じです
私が読んだすべてのことから、これは完全に問題ありません。私が探しているのは次のとおりです
注意が必要なことはありますか?LRパーサーの注文は正しいですか? 私は現在学校に通っていないので、これは正確には宿題ではありませんが、これは将来受講するコースであることがわかっているので、そのように扱うことができます。
parsing - イプシロン遷移を伴う左再帰LR(0)アイテムのクロージャとは何ですか?
私がこの文法を持っているとしましょう:
アイテムの閉鎖とは何と見なされますA: • B 'a'
か?
言い換えれば、クロージャを理解するときにイプシロン遷移をどのように処理しますか?
lr - VUGen (Loadrunner) で https アプリケーションを記録できません
IE8 LR11 プロトコル: HTTP/HTML アプリケーション:https
VUGen (loadrunner 11) で https:// アプリケーションを記録しようとすると、記録できず、サーバーに接続していないことを意味する「Internet Explorer で Web ページを表示できません」というエラー メッセージが表示されます。ブラウザで手動で開くとアプリケーションは正常に動作しますが、問題は記録中のみです。
誰か助けてくれませんか?この問題を解決するのを手伝ってください。
ありがとう、KP
parsing - LR(0) パーサーはどのようにして状態 0 を離れることができますか?
私はウィキペディアの説明を少なくとも十数回読んだことがありますが、LR(0) パーサーがどのように状態 0 を離れるかについて、いまだに混乱しています。
'0'
パーサーは、初期状態 ( ) だけを含むスタックから開始します。[0]
パーサーが認識する入力文字列の最初のシンボルは です'1'
。
...しかし、これは私には意味がありません。なぜなら、入力シンボルを見ることは先読みを実行することになりますが、定義により、LR(0)パーサーは先読みを実行できないからです。
パーサーが状態 0 の場合、まだシフトしていないため、スタックにシンボルがありません。
LR(0) パーサーであるため、先読みも実行できません。
では、どのようにテーブルを使用して、状態 0 からどの状態にシフトまたは縮小するかを判断するのでしょうか?
parsing - コンパイラが「シフト/シフト」競合を起こせないのはなぜですか?
私は現在コンパイラについて勉強しています.LR(0)で理解しているように、「シフト/リデュース」または「リデュース/リデュース」の競合が発生する場合がありますが、「シフト/シフト」の競合は不可能です! 「シフト/シフト」競合が発生しないのはなぜですか?
parsing - 構文解析:LL(3)にはあるが、LR(2)にはない文法
LL(3)がLR(2)のサブセットではないことを証明しようとしています。
直感的には簡単ですが、そのような文法を見つけることに直感を向けることはできません。
手を貸していただけませんか。助けてくれてありがとう
parsing - ウィキペディアの FOLLOW() セットの LR(1) 解析の例は間違っていますか?
何が起こっているのか誤解しているのか、ウィキペディアの説明が間違っているのかわかりません。
ウィキペディアは次のように述べています。
FOLLOW(k,B)
項目セットk
と非終端記号の は、 の後にが続くB
すべての項目の次のセットの和集合です。K
'•'
B
文法の例は次のようになります。
彼らは、LR(0) アイテム セット 0 が次のようになっていることを発見しました。
つまりFOLLOW(0,T)
、アイテム セット 0 内のすべてのアイテムの次のセットの和集合であり、'•' の後に が続きT
ます。
彼らの論理を適用すると、「'•' が後に続くアイテム セット 0 のアイテムT
」は、実際には次の 2 つのアイテムであることがわかります。
[E → • T]
[T → • T + n]
ただし、ここで行き詰まります
。2 番目のフォロー セットには、シンボル が含まれています。これは)
、アイテム[E → • ( E )]
が を生成できるためです。[E → • ( T )]
)
ただし、ウィキペディアは次のように述べていFOLLOW(0,T) = { $, '+' }
ます。
私は何を間違っていますか?
compiler-construction - LR パーサーの GOTO 関数とイプシロン
私はコンパイラの構造を学ぼうとしていて、SLR パーサーに関する Dragon Book の章を読んだところです。そこで、簡単な文法を作成し、パーサーを手作業でコーディングすることにしました。文法は次のようになります。
e
空文字列の生成はどこにありますか。
StackOverflow に関する別の質問によると、開始状態の項目は次のようになります。
しかし、GOTO 関数はどのように見えるでしょうか。私はそれを知っていGOTO( '(' ) = *some state with A -> (.A)A*
ますが、私は本当に頭を包むことができませんGOTO(e)
. パーサーが空の文字列を見ることは、実際には意味がありません。そうですか?
よろしくお願いします!
マイケル