問題タブ [parse-recdescent]

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

perl - Parse::RecDescent を使用してネストされた括弧で文字列を解析する

Parse::RecDescent括弧式と単項演算子を解析できるパーサーを作成しようとしています?

expressionルールが左再帰的であるため、パーサーを作成すると、これまでのところ失敗しています。

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

perl - Parse::RecDescent 文法が期待どおりに機能しない

STRING、PARAMS、VARIABLE、および FUNCNAME だけが動作しました。FUNCTION に問題があるようですが、表示されません。

何か助けはありますか?ところで私の目標はこれです:

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

perl - Parse::RecDescent によるデータの収集

ステートメントのコレクションである文字列 (30,000 以上) のリストがあります。論理的にParse::RecDescentは、文字列を解析してデータを収集するために使用するツールですが、文法仕様の構築について理解できません。

次のコードは、祝福されたノードの大きなリストを作成していますが、より有用なデータ構造を実際に作成する方法がわかりません (私が欲しいのはYear, Vol&Iss値だけです)

余談ですが、ループで置換が不要になるように文法ステートメントを作成するにはどうすればよいですか?

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

perl - Parse::RecDescent による空白が重要な解析 (例: HAML、Python)

Parse::RecDescentでHAML ( haml.info ) を解析しようとしています。Haml を知らない場合、問題は Python の構文解析と同じです。構文のブロックはインデント レベルによってグループ化されます。

非常に単純なサブセットから始めて、いくつかのアプローチを試しましたが、P::RD の貪欲性または再帰的順序のいずれかをよく理解していないと思います。ハムルを考えると:

私が持っている最も単純な文法は次のとおりです (上記のスニペットには不要な部分があります)。

問題はblock定義にあります。上記のように、次のテキストは正しくキャプチャされますが、テキストはキャプチャされません。

reject上記の 2 行目 (最初のルールの行)を削除すると、blockすべてがキャプチャされますが、インデントに関係なく、最初のブロックがすべての行を丸呑みするため、もちろん正しくグループ化されません。

また、先読みアクションを使用して検査$textし、他のいくつかのアプローチを試してみましたが、うまくいきませんでした。

誰でも(a)上記が機能しない理由、および/または(b)perlアクション/拒否を使用しないアプローチがあるかどうかを説明できますか? インデント内のスペースの数を取得して、それを次の行のスペース数の補間された先読み条件で使用しようとしましたが、補間構文を正しく取得することはできませんでした (矢印演算子が必要なため)。

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

perl - Parse::RecDescent : ネストされた算術式を解析していますか?

現在、これを使用して算術式を解析しています。

単純な式では機能しますが、ネストされたブラケット式は処理できません。ネストされた式を処理できるように拡張/変更する方法。

たとえば、これは機能します:

しかし、これは機能しません:

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

perl - ファイル全体の批評家を無効にする - Parse::RecDescent プリコンパイル済みパーサー & PerlCritic/Tidyall

健全性チェックからエラーを取り除こうとしています [コードを git リポジトリにプッシュすると、perltidy& critic... をtidyallハンドラーとして使用してコードをチェックするフックがあります。]

私が抱えている特定の問題は、事前にコンパイルされた文法パーサーに関するものです....そして、これは私が飛び込んで修正したいものではありません(申し訳ありません-それは私の快適ゾーンの外です)

## no criticファイルの先頭にシンプルを追加すると、

戻ってくる

でも

で戻ってきます

私はtidyall.iniファイルでこれを修正できることを知っています:

....しかし、よりクリーンなソリューションが必要だと思います。

tidyall(または、なぜ同じように批判しないのcriticですか?)

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

perl - Parse::RecDescent と文法

Parse::RecDescent を使用して次の文法を定義しました

次のケースを処理したい:

X = 2 -> 2 を出力する必要があります

X = "2" -> 2 を出力する必要があります

x = '2' -> 2 を出力する必要があります

しかし、上記の文法は異なる結果を提供します:

x=2 の場合、解析に失敗します

x="2" の場合 -> "2" を出力します

for x ='2' -> pring '2'

上記の文法を変更して、上記の 3 つのケースすべてで 2 を出力する、つまり引用符を削除するアイデア

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

perl - Parse::RecDescent と引用符付きの演算子

私は次のようなものを持っています:

私は定義しました:

しかし、上記の条件を解析する方法に問題がありますか?