問題タブ [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-そこから情報を取得する
私はPerlでParse::RecDescentパーサーを使用していますが、そこから情報を取得するのに最もひどい時間を過ごしているようです。オンラインですぐに入手できる情報には、重要な例がないようです。
コードは次のとおりです。
これが出力です
入力ファイルは正しく解析されます。
「stuff」、「stuff2」をキーとするハッシュを出力する必要があります。
考え?
編集:
edit2:念のため、Merge_hash_refs。:-)
perl - Parse::RecDescent 正規表現での変数の補間
私は Parse::RecDescent 文法に取り組んでおり、特定の人間が読める一連のルールを読み取り、コンピューターにとってはるかに読みやすいファイルを吐き出します。
トークンの 1 つは「キーワード」のリストです。約 26 の異なるキーワード。これらは時間の経過とともに変化する可能性があり、複数のコードによって参照される可能性があります。したがって、キーワードのようなものをデータ ファイルに保存してロードしたいと考えています。
Parse::RecDescent の機能の 1 つは、正規表現で変数を補間する機能であり、私はそれを使用したいと考えています。
概念実証としていくつかのコードを書きました。
これは正しく機能しました。それを実装するためにメインプログラムに移動したとき、私は次のように書きました。
この時点で、 P::RD: からこのエラーを受け取りましたERROR (line 18): Invalid event: Was expecting /($dataarrstr)/
。
どうしてか分かりません。ここで私を助けるのに役立つアイデアはありますか?
編集:これはスコープの問題ではありません-私はそれを試しました. m{...} 構文も試しました。
perl - PerlのParse::RecDescentスレッドは安全ですか?
Parse::RecDescentで作成されたパーサーを使用するWebアプリケーションがあります。アプリケーションのいくつかの部分でパーサーオブジェクトが必要です。パーサーはかなりのメモリを消費するため、これまでパーサーオブジェクトをシングルトンとして扱ってきました。これは、一度に1つの式のみが同じオブジェクトによって解析されるため、純粋なCGI環境でうまく機能します。ただし、同じオブジェクトパーサーが一度に複数の文字列を解析している環境で実行している場合でも、これが機能するかどうかはわかりません。
たとえば、FastCGIでアプリケーションを実行しようとすると、2つのリクエストが同じパーサーオブジェクトを使用して異なる文字列に解析する場合に問題が発生する可能性がありますか?
必要に応じて、パーサーがシングルトンではなくなるようにアプリケーションを変更できますが、現在のソリューションの方が単純なので、使用したくありません。
perl - Parse::RecDescent による印刷と連結
独自の文法を開発するために、P::RD チュートリアルの文法をテストしています。文字列宣言を出力し、その前に「$」を追加する方法がわかりません。たとえば、「STRING sDir」は「$sDir」と出力する必要があります。$string =~ s/STRING /\$/ を実行するだけで十分簡単ですが、割り当てがある場合はどうでしょうか? 例えば。"STRING sDir = aNewDir".
文法はこちら
正規表現で十分だと思い始めていますが、「STRING、foo、bar」などのカンマ区切りの宣言用に複雑なものを作成する方法を知りたいです -> $foo; $バー;
perl - 同じ文法の異なるファイルを解析し、ファイル間の類似性を計算する
たくさんの ACPI ソース言語ファイルがあり、それらの間のファイル間の類似性を計算したいと考えています。Perl の Parse::RecDescent のようなものを使用することを考えましたが、行き詰まっています:
1) ACPI Grammar (www.acpi.info/DOWNLOADS/ACPIspec40a.pdf) を Parse::RecDescent が理解できるものに翻訳する 2) 解析された 2 つのファイルを比較するためのメトリックを用意する
何か案は?
perl - ドキュメントからテーブルを抽出するには、Parse::RecDescentまたはRegexp::Grammarsを使用する必要がありますか?
perlで解析したい大きなプレーンテキストドキュメントがたくさんあります。各ドキュメントには、ほとんどが英語の段落が含まれており、各ドキュメントにはいくつかのプレーンテキストが表に記されています。
テーブル構造を説明する文法を作成しましたが、Parse::RecDescentまたはRegexp::Grammarsを使用してテーブルを抽出するのが最適かどうかわかりません。
最初はParse::RecDescentに傾倒しましたが、それぞれの中に埋め込まれた抽出したいいくつかのテーブルを見つけるために、無視したいドキュメントテキストの90%をどのように処理するかが文法でわかりません。資料。
おそらく、一致するものが見つかるまでドキュメント全体で表現を「プル」できるように、Regexp :: Grammarsが必要ですか?
ありがとう
perl - Parse::RecDescent パース サブネーム
モジュール Parse::RecDescent を使用
し、コードで perl サブネームをキャッチする文法を構築しようとしています
https://gist.github.com/1595532
動作しない文法 get_sub: NOWORD TEST NOWORD
'>test1$' で ? (変数 $perl_code1 )
perl - Parse::RecDescentのパフォーマンスの問題
Parse :: RecDescentを使用して、CiscoIOSACLの行を解析しています。ACLは大規模ネットワークのエッジルーターで使用されるため、政府によって設定されたほぼ8kの回線が含まれています。これらの各行をループして、値をハッシュに入れています。8k回線ですが、まだ14秒以上回線の解析に費やしていますか?これは合理的に聞こえますか?それは私には非常に遅いようです。ハッシュと別のデータ構造を使用するためのオーバーヘッドはありますか?
サンプル入力:(これらの約8kまたは同様のもの)
これが私のパーサー全体です:
perl - Parse::RecDescentパーサーの1行および複数行のコメントをすべてスキップする方法
Parse :: RecDescentで、C ++ / Javaスタイルのコメントを効果的に無視するにはどうすればよいですか?これには、単一行('//'行末まで)と複数行(/ここまでのすべて/)が含まれます。