問題タブ [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.
perl - Parse::RecDescent を使用してネストされた括弧で文字列を解析する
Parse::RecDescent
括弧式と単項演算子を解析できるパーサーを作成しようとしています?
。
expression
ルールが左再帰的であるため、パーサーを作成すると、これまでのところ失敗しています。
perl - Parse::RecDescent 文法が期待どおりに機能しない
STRING、PARAMS、VARIABLE、および FUNCNAME だけが動作しました。FUNCTION に問題があるようですが、表示されません。
何か助けはありますか?ところで私の目標はこれです:
perl - Parse::RecDescent によるデータの収集
ステートメントのコレクションである文字列 (30,000 以上) のリストがあります。論理的にParse::RecDescent
は、文字列を解析してデータを収集するために使用するツールですが、文法仕様の構築について理解できません。
次のコードは、祝福されたノードの大きなリストを作成していますが、より有用なデータ構造を実際に作成する方法がわかりません (私が欲しいのはYear
, Vol
&Iss
値だけです)
余談ですが、ループで置換が不要になるように文法ステートメントを作成するにはどうすればよいですか?
perl - Parse::RecDescent による空白が重要な解析 (例: HAML、Python)
Parse::RecDescentでHAML ( haml.info ) を解析しようとしています。Haml を知らない場合、問題は Python の構文解析と同じです。構文のブロックはインデント レベルによってグループ化されます。
非常に単純なサブセットから始めて、いくつかのアプローチを試しましたが、P::RD の貪欲性または再帰的順序のいずれかをよく理解していないと思います。ハムルを考えると:
私が持っている最も単純な文法は次のとおりです (上記のスニペットには不要な部分があります)。
問題はblock
定義にあります。上記のように、次のテキストは正しくキャプチャされますが、テキストはキャプチャされません。
reject
上記の 2 行目 (最初のルールの行)を削除すると、block
すべてがキャプチャされますが、インデントに関係なく、最初のブロックがすべての行を丸呑みするため、もちろん正しくグループ化されません。
また、先読みアクションを使用して検査$text
し、他のいくつかのアプローチを試してみましたが、うまくいきませんでした。
誰でも(a)上記が機能しない理由、および/または(b)perlアクション/拒否を使用しないアプローチがあるかどうかを説明できますか? インデント内のスペースの数を取得して、それを次の行のスペース数の補間された先読み条件で使用しようとしましたが、補間構文を正しく取得することはできませんでした (矢印演算子が必要なため)。
perl - Parse::RecDescent : ネストされた算術式を解析していますか?
現在、これを使用して算術式を解析しています。
単純な式では機能しますが、ネストされたブラケット式は処理できません。ネストされた式を処理できるように拡張/変更する方法。
たとえば、これは機能します:
しかし、これは機能しません:
perl - ファイル全体の批評家を無効にする - Parse::RecDescent プリコンパイル済みパーサー & PerlCritic/Tidyall
健全性チェックからエラーを取り除こうとしています [コードを git リポジトリにプッシュすると、perltidy
& critic
... をtidyall
ハンドラーとして使用してコードをチェックするフックがあります。]
私が抱えている特定の問題は、事前にコンパイルされた文法パーサーに関するものです....そして、これは私が飛び込んで修正したいものではありません(申し訳ありません-それは私の快適ゾーンの外です)
## no critic
ファイルの先頭にシンプルを追加すると、
戻ってくる
でも
で戻ってきます
私はtidyall.ini
ファイルでこれを修正できることを知っています:
....しかし、よりクリーンなソリューションが必要だと思います。
tidyall
(または、なぜ同じように批判しないのcritic
ですか?)
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 を出力する、つまり引用符を削除するアイデア
perl - Parse::RecDescent と引用符付きの演算子
私は次のようなものを持っています:
私は定義しました:
しかし、上記の条件を解析する方法に問題がありますか?