問題タブ [recursive-descent]

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 に答える
2662 参照

ruby - Ruby - n 分木に対してそれぞれ再帰的

修正済み: EDIT EDIT を参照

n-ary ツリーに対して独自の再帰的 each を作成するのに問題があります。@elementはノードの値であり、@children接続されたすべての下位ノードの配列です。これは私の方法です:

問題は、下の要素を繰り返すことです。たとえば、これを使用して値 o と 1 つの子 c を持つノードを出力すると、「oc」ではなく「occ」が出力されます。何が起こっているのか本当にわからないので、試みた修正はすべて効果がありませんでした. 何か案は?

編集:これは、ノード値を生成するだけでなく、何らかの形でノード値でそれぞれを呼び出しているためである可能性があると思います。そのため、単一文字の文字列の場合、その文字を生成し、.each呼び出しで再度生成します。

EDIT EDIT: 皆さん、読んでくれてありがとう。問題はこのメソッドではなく、同じクラスの別の to_s にありました。to_s は正しく出力されますが、親ノードが文字列の場合は値が変更されます。私がテストするときはいつでも、いつも to_s を最初に使用していましたが、それを認識していませんでした。これにつきましては申し訳ございません。(私は初心者なので、私自身の質問に答えることはできません)。

0 投票する
5 に答える
883 参照

regex - Perl 正規表現の方言/実装はどのように呼び出されますか?

Perl で「正規表現」と呼ばれる文字列を解析するためのエンジンは、本で「正規表現」という用語で知られているものとは大きく異なります。

それで、私の質問は次のとおりです。Perlの正規表現の実装と、それが古典的なものと実際にどのように、どのように異なるかを説明するドキュメントはありますか(古典とは、通常のDFA / NFAに実際に変換できる正規表現を意味します)、どのようにできます?

ありがとうございました。

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

parsing - 文法問題を解決する実用的な解決策

非プログラマーによって作成される vb6 コード (機能のサブセットのみを使用する) の小さなスニペットがあります。これらはルールと呼ばれます。これらを書いている人にとってはデバッグが難しいので、誰かが一種のアドホックパーサーを書いて、部分式を評価し、それによって問題がどこにあるかをよりよく示すことができるようにしました。

このアドホック パーサーは非常に悪く、実際には機能しません。だから私は本当のパーサーを書こうとしています(私はそれを手で書いているので(vb6バックエンドで理解できるパーサージェネレーターはありません)、再帰的なまともなパーサーを使いたいです)。何でも見つけることができたので、文法をリバースエンジニアリングする必要がありました。(最終的に何かhttp://www.notebar.com/GoldParserEngine.htmlを見つけましたが、その LALR と必要以上に大きい)

VB のサブセットの文法は次のとおりです。

全体として、ここではいくつかの簡単な例を示します。

のように見える

今私の問題は何ですか?

このようなコードがある場合(( true OR false ) AND true)、無限再帰がありますが、本当の問題は (true OR false) AND true(最初の の後( expr )) が のみとして理解されることです(true or false)

パースツリーは次のとおりです。 解析木

では、これを解決する方法。どういうわけか文法を変更するか、実装ハックを使用する必要がありますか?

必要な場合に備えて、何か難しい例を示します。

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

algorithm - 再帰子孫パーサーの各ルールに void 戻り型を使用するのは間違っていますか?

ウィキから引用:

voidルールごとに戻り値の型を使用しており、

その場合、特定のブランチが失敗したか成功したかをどうやって知ることができますか?

IMO、各ルールはブール値の戻り値の型を使用して、このブランチが失敗したか成功したかを示す必要があります。

これは正しいです?

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

c++ - 生産中のオプションの非端末

次の場合の対処方法を知っている人はいますか?

「#」で始まる if-group の後の if-section のすべての非終端記号。この場合、左因数分解は不可能だと思います。両方 (または両方) のオプションの非端末のいずれかを呼び出す必要があるかどうかを識別する「デフォルトのソリューション」はありますか?

ありがとう。

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

c# - ASP.NETMVCの「強力な」関係

現在、再帰的なモデ​​ルがあります(そのプロパティの1つは同じタイプです)。

例えば:

ここで、誰かの親にアクセスしたい場合は、ParentIDを取得し、データベースにクエリを実行して、ページを見つける必要があります。私が欲しいのは、次のことができることです。

どうすればそれを達成できますか?私は次のことを試しました:

エンティティフレームワークは自動的にParentがparentIDにリンクされていると想定するので、それは機能しません。


これが私のコードです。コントローラーのメソッドは次のとおりです。

ビューで:

モデル:

ビューの作成に移動したとき。すべてのページのリストを取得しましたが、それらを作成すると、新しいページのParentプロパティがnullになります。

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

parsing - 再帰下降パーサーのランタイム/スタックスペース分析の優れたソースは何ですか?

再帰下降パーサーの実行時間についてもっと知りたいです。また、再帰下降パーサーが使用するスタックスペース(およびランタイムとスタックスペースの間のトレードオフ)にも興味があります。 いくつかの良い情報源は何ですか?

ウィキペディアの記事を読み、Webを検索しましたが、詳細な情報は見つかりませんでした。

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

haskell - Haskell - 再帰降下パーサー

haskellで再帰降下パーサーを使用する簡単な作業例(コード)を推奨できますか? 私が見つけたすべての情報は、理解するのが難しすぎます。どうも!

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

java - プレースホルダーを使用した単純な Java 再帰降下解析ライブラリ

アプリケーションの場合、算術式と変数を使用して文字列を解析したいと考えています。次の文字列を想像してみてください。

したがって、ここにはプレースホルダーがあり、実際の整数/倍精度値はありません。最初のプレースホルダーを取得し、(データベースクエリなどを介して) 値をプレースホルダーに入れ、次のプレースホルダーに進むことができるライブラリを探しています。

したがって、私が本質的にやりたいことは、ユーザーが変数の実際の値を知らなくても、ドメイン言語で文字列を記述できるようにすることです。そのため、アプリケーションは何らかの「コンテキスト ロジック」に応じて数値を提供し、計算結果を出力します。

私はグーグルで検索しましたが、適切なライブラリが見つかりませんでした。ANTLR を見つけましたが、私のユースケースでは非常に「重い」と思います。助言がありますか?