問題タブ [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.

0 投票する
1 に答える
100 参照

left-recursion - 彼がフォローしている左再帰を削除するにはどうすればよいですか?

こちらが作品です。

今やろう

それは正しい答えでしょうか?つまり、「b」または「c」のいずれかを使用できますか?

0 投票する
1 に答える
302 参照

context-free-grammar - CFG の左再帰の削除

文法からこの行から左再帰を削除するにはどうすればよいですか?

A -> D | R | r BA n ; | | AA | イプシロン

r、n、および; は終端記号です。D、R、B、および A はすべて非終端記号です。

前もって感謝します

0 投票する
3 に答える
1123 参照

prolog - 言語からすべての単語を生成するProlog dcg

の言語を説明するプロローグに dcg 文法を書き込もうとしています
a^nb^n n>=0
"",ab,aabb,aaabbb itd

私が書いたものはすべて、

そして、私がやりたいことは単語が正しいかどうかをチェックすることだけである限り、それは良いことですが?-phrase(s,X)、私の言語からすべての単語を生成するプロローグで dcg 文法はどのように見えるべきですか?

0 投票する
1 に答える
327 参照

prolog - DCGを決定論的に変更する

このグラマを決定論的に変更する方法

バックトラックを避けるためにカットをどこに置くべきかわかりません。

0 投票する
1 に答える
313 参照

recursion - 左再帰を削除する方法

カリー化された関数呼び出しを許可する文法を作成したいと思います。

あれは:

私の最初の刺し傷はこれでした:

しかし、それは左再帰のために失敗します。

0 投票する
4 に答える
2252 参照

prolog - DCG での左再帰の削除 - Prolog

この文法の左再帰に小さな問題があります。Prologで書こうとしているのですが、左再帰を外す方法がわかりません。

みたいなことを書いたのですが、全然うまくいきません。このプログラムを機能させるために変更するにはどうすればよいですか?

0 投票する
2 に答える
1246 参照

parsing - LL(1) 文法の問題

Mini Java のサブグラマー用に 26 ルールのグラマーがあります。この文法は、非オブジェクト指向であると想定されています。とにかく、私はそれを左因数分解し、左再帰を削除しようとしています。ただし、JFLAP でテストしたところ、LL(1) ではないことがわかりました。私は Aho-Sethi 本のアルゴリズムのすべてのステップに従いました。

ヒントを教えてください。

それぞれ<IDENTIFIER>が有効な Java 識別子であり<INTEGER-LITERAL>、単純な整数です。各eプロダクションはイプシロン プロダクションを表し$、最初のルールの はファイルの終わりマーカーです。

0 投票する
1 に答える
217 参照

parsing - 再帰下降パーサー - 左再帰の回避

私は次の作品を持っています

したがって、次のような左再帰があることは明らかです

左再帰は、次のルールを使用して回避できると言われています

ここで左再帰をどのように回避しますか?.関数 A' にはまだ再帰があります。誰でも私にこれを説明できますか.私はこの主題の初心者ですか?

0 投票する
1 に答える
280 参照

ruby - バックトラックせずにツリートップで左再帰を回避するにはどうすればよいですか?

作業中のこの単純な式パーサーで左再帰を回避するのに問題があります。基本的に、方程式'fxy'を2つの式'fx'と'(fx)y'(暗黙の括弧付き)に解析したいと思います。左再帰とバックトラックを回避しながら、これを行うにはどうすればよいですか?中間ステップが必要ですか?

0 投票する
2 に答える
608 参照

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 のあいまいさを取り除くことになっています。