問題タブ [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 に答える
704 参照

python - Lisp ライクな構文の再帰的解析

次の形式で行を解析しようとしています:

OP は論理ゲート (AND、OR、NOT) の記号であり、評価したいものは何かです。

探している出力は次のようなものです。

条件自体が dict/list のペアになる場合があります (ネストされた条件)。これまでのところ、次のようなことを試しました:

他の方法も試しましたが、この再帰全体に頭を悩ませることはできないので、ここでいくつかのポインターを取得できるかどうか疑問に思っています.Webを見回して、再帰降下解析に関するいくつかのものを見つけましたが、チュートリアルはすべて試していました必要以上に複雑なことをするために。

PS: 既存の python ライブラリでこれを行うことができることはわかっていますが、それを行うことで何を学ぶことができますか?

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

python - ラテックスの単純な拡張の解析: 文法、再帰降下、pyParsing?

ラテックス構文の小さな拡張をしたいと思います。
この解析作業を回避するための純粋なラテックスの方法があり、私はそれらを知っています。
この質問の目標は、次の解析問題を解決することです。

などのキーワードがいくつかあるので、新しいキーワードに変換したいと考えていますep。 それらは入れ子にすることができます。 oldFunction

theoremのように、コンテンツを囲む「タブ」一貫性のあるキーワードがあります。
このタブで構成されるキーワークはネストできます。

また、前の行のように、キーワード\ep\theoremキーワードを混在させることもできます。

次に、他のすべてのラテックス構造がありますが、私は触れずにそのままにしておきます。

pyParsing とcodeTalkerを調べます。
codeTalker は文脈自由文法です。記述文法が文脈自由であるかどうかはわかりません。
pyParsing はそれを行うことができます。ドキュメントを調べますが、適用方法がわかりません。
解析の問題に遭遇したのはこれが初めてです。

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

python - Python と PLY を使用した再帰降下パーサー

非常に基本的な質問で申し訳ありませんが、ここで本当に苦労しています。再帰降下パーサーを作成する必要があります。私は Python で作業しており、PLY を使用しています。私の文法は次のとおりです。

< リスト > → (< シーケンス >) | ()

< シーケンス > → < リスト要素 > , < シーケンス > | < リスト要素 >

< リスト要素 > → < リスト > | 番号

それはこのように見えるでしょうか?私は道を外れていますか?最終的な目標は、リストをデータ構造に読み込み、それを出力することです。

完全な解決策が何であるか疑問に思っている人がいたら、すぐに投稿します。

0 投票する
6 に答える
23311 参照

c# - json.netを使用してjsonの再帰降下を行うには?

json.net を使用して json ファイルを解析しようとしています。ファイルは次のようになります

Title 属性を持つすべてのオブジェクトを処理するこの構造を再帰しようとしています。JTokenしかし、私は、、、、について混乱しJPropertyJContainerJValueますJObject。ソース コードを読んでもあまり賢くはならず、どのサンプルも役に立ちません。に沿ったものが欲しい

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

clojure - Clojure の再帰降下パーサー

Clojure を使用してエキスパート システムを作成しています。テキスト ファイルからルールを読み取り、そこから clojure 関数を作成するための再帰降下パーサーを開発する必要があります。テキストファイルが私の文法で問題ないかどうかをチェックする関数を作成しました。これにより、関数名、数値、システムの事実の名前、算術演算子、論理演算子などの要素を含む文字列のリストが得られます。それが私の文法がどのように見えるかです:

そして、それが文法をチェックするための私の関数です:

ここで、上記の関数が提供する文字列のリストから clojure 関数を作成したいと思います。それを行う方法はありますか?

更新 ルールとそのハードコードされたバージョンの例を次に示します。

( ROC > 100 ) >> 購入

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

java - 再帰的な適切な解析のエラー

私は、与えられた BNF 文法を使用して、再帰的な適切な解析に取り組んでいました。C++ で作成することはできましたが、Java が苦手で、C++ からコードをミラーリングしようとしました。

これまでのところ、これは私のセットアップで、次を含む入力ファイルから読み取ります

最初の文字列を読み取って出力を返すようですが、その後、メイン、A、E、T、F、PI、および C でエラーが発生します。これがエラーです。

繰り返しますが、私はJavaが苦手で、ミラーリングしようとすると、この笑になりました。

誰かが私がどこで間違ったのかを理解するのを手伝ってくれるなら、これがコードです ありがとう

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

parsing - 構文解析と意味解析

構文解析と意味解析がどのように機能するのか疑問に思っています。

インタプリタのレクサーと文法の構築を終了しました。

次に、この文法の再帰降下 (トップダウン) パーサーを実装します。

たとえば、次の文法があります。

だから私はそれを次のようにコーディングしました(Javaで):

Int、String、Boolean の 3 つのデータ型があるとします。各データ型の値は異なるため (例: ブール値のみの true または false)、データ型に正しく適合するかどうかをどのように判断できますか? 私のコードのどの部分がそれを決定しますか?

私はコードをどこに置くのだろうかと思っています:

構文解析と意味解析は同時に行われますか? または、最初に構文解析を終了してから意味解析を行う必要がありますか?

私は本当に混乱しています。助けてください。

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