問題タブ [left-recursion]
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.
left-recursion - 彼がフォローしている左再帰を削除するにはどうすればよいですか?
こちらが作品です。
今やろう
それは正しい答えでしょうか?つまり、「b」または「c」のいずれかを使用できますか?
context-free-grammar - CFG の左再帰の削除
文法からこの行から左再帰を削除するにはどうすればよいですか?
A -> D | R | r BA n ; | | AA | イプシロン
r、n、および; は終端記号です。D、R、B、および A はすべて非終端記号です。
前もって感謝します
prolog - 言語からすべての単語を生成するProlog dcg
の言語を説明するプロローグに dcg 文法を書き込もうとしています
a^nb^n n>=0
"",ab,aabb,aaabbb itd
私が書いたものはすべて、
そして、私がやりたいことは単語が正しいかどうかをチェックすることだけである限り、それは良いことですが?-phrase(s,X)
、私の言語からすべての単語を生成するプロローグで dcg 文法はどのように見えるべきですか?
prolog - DCGを決定論的に変更する
このグラマを決定論的に変更する方法
バックトラックを避けるためにカットをどこに置くべきかわかりません。
recursion - 左再帰を削除する方法
カリー化された関数呼び出しを許可する文法を作成したいと思います。
あれは:
私の最初の刺し傷はこれでした:
しかし、それは左再帰のために失敗します。
prolog - DCG での左再帰の削除 - Prolog
この文法の左再帰に小さな問題があります。Prologで書こうとしているのですが、左再帰を外す方法がわかりません。
みたいなことを書いたのですが、全然うまくいきません。このプログラムを機能させるために変更するにはどうすればよいですか?
parsing - LL(1) 文法の問題
Mini Java のサブグラマー用に 26 ルールのグラマーがあります。この文法は、非オブジェクト指向であると想定されています。とにかく、私はそれを左因数分解し、左再帰を削除しようとしています。ただし、JFLAP でテストしたところ、LL(1) ではないことがわかりました。私は Aho-Sethi 本のアルゴリズムのすべてのステップに従いました。
ヒントを教えてください。
それぞれ<IDENTIFIER>
が有効な Java 識別子であり<INTEGER-LITERAL>
、単純な整数です。各e
プロダクションはイプシロン プロダクションを表し$
、最初のルールの はファイルの終わりマーカーです。
parsing - 再帰下降パーサー - 左再帰の回避
私は次の作品を持っています
したがって、次のような左再帰があることは明らかです
左再帰は、次のルールを使用して回避できると言われています
ここで左再帰をどのように回避しますか?.関数 A' にはまだ再帰があります。誰でも私にこれを説明できますか.私はこの主題の初心者ですか?
ruby - バックトラックせずにツリートップで左再帰を回避するにはどうすればよいですか?
作業中のこの単純な式パーサーで左再帰を回避するのに問題があります。基本的に、方程式'fxy'を2つの式'fx'と'(fx)y'(暗黙の括弧付き)に解析したいと思います。左再帰とバックトラックを回避しながら、これを行うにはどうすればよいですか?中間ステップが必要ですか?
prolog - DCG パーサー Prolog を記述するために、other の抽象構文のあいまいさを取り除きます
P => プログラム K => ブロック
S => シングルコマンド
C => コマンド
E =>式
B => ブール式式
私 => 識別子
N > 数値
P ::= K.
K ::= 開始 C 終了
C ::= C1; C2 | S
S ::= 私 := E | (B) の場合 S | (B) の場合 S1 でなければ S2 | while (B) do S | (B) まで C を繰り返す | ケイ | Eを印刷する
E ::= − E | E1 + E2 | E1 − E2 | 第1話第2話 | E1 div E2 | E1 mod E2 | (E) | 私 | 私 | N
B ::= E1 = E2 | E1 > E2 | E1 < E2 | E1 != E2 | Bじゃない | B1とB2 | B1またはB2 | (ロ)
プロローグで DCG パーサーを記述できるように、E と B のあいまいさを取り除くことになっています。