問題タブ [attoparsec]

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

performance - attoparsec 巨大なファイルの読み取りでメモリ使用量が多い

ファイルの内容を行ごとに解析するための多くのアプローチを試しましたが、現時点では機能しておらず、実行すると大量のメモリ (16GB 以上) を使用します。

これは、解析したいファイルのサブセットですhttp://lpaste.net/144719

次の 3 種類のエラーが必要です。

1) バックトレースのエラー (複数行、最初の行は 3))
2) もう 1 行の単一エラー
3) 単一行エラー

これが私の現在のコードです:

最初の問題は、パーサーが何も解析していないことです。2 つ目の問題は、16GB の RAM を使用していることです。どうすれば私のアプローチを改善できますか?

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

haskell - attoparsec で特定の文字で終わらない識別子を解析する

私は attoparsec パーサーを書いて、測定単位の統一コードが a と呼ぶものを解析するのに行き詰まってい<ATOM-SYMBOL>ます。これは、数字で終わらない特定のクラス (そのクラスには 0 ~ 9 のすべての数字が含まれる) の最長の文字シーケンスであると定義されています。

したがって、何も消費せずに失敗したいので、消費しfoo27て返したい入力があるとします。foo237bar26237bar19

takeWhile1or takeTillorからこれを構築する方法がわかりませんscanが、おそらく明らかな何かが欠けています。

更新:これまでの私の最善の試みは、完全に数字であるシーケンスを除外することができたことです

それを変更して、最後の文字がすべて数字ではなく数字であるかどうかをテストしようとしましたが、一度に1文字ずつバックトラックするようには見えません。

更新 2:

ファイル全体はhttps://github.com/dmcclean/Dimension-attoparsec/blob/master/src/Numeric/Units/Dimensional/Parsing/Attoparsec.hsにあります。これは、 https://github.com/dmcclean/Dimensionprefixesからのブランチに対してのみビルドされます。

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

haskell - 多分結果を伴う Attoparsec オプションのパーサー

次のようなAttoparsecパーサーがあります。

このパーサーをオプションにしたいのでJust txt、パーサーが一致するかどうかを返す関数Nothing、つまり署名の関数を取得します。

これどうやってするの?

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

haskell - Conduit と Attoparsec: 解析エラーによる予期しない終了

しばらく前に書いたログ ファイル パーサーをコンジットに変換しようとしていますが、問題が発生しています。質問とは関係ないので、パーサー自体の詳細を単純化します。次のようなログ ファイルがあります。

したがって、解析コードは非常に簡単です。

ここまでは順調ですね。コンジットでこれを実装する方法は次のとおりです。

実行するmainと、次の出力が得られます。

私がやりたいように、ファイルの次の行を解析し続けるのではなく、パイプラインがこの時点で終了する理由を理解するのに苦労しています。のドキュメントを読むとData.Conduit.Attoparsec、これはまさにユースケースconduitParserEitherが設計されたようです。

アップデート

@Fabian によると、それはconduitParserEither私がここで望んでいたものではなかったことがわかりました。parseEntryこれが私がやりたかったことの定義です:

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

parsing - attoparsec で不要なテキストをスキップする方法

これに似たメールを解析したい

しかし、この電子メールのすべての情報は必要ありません。「差出人」、「件名」、およびメッセージ自体のみ。このようなメッセージを解析するにはどうすればよいですか? より具体的には、不要なデータをスキップするにはどうすればよいですか?

ここに私がこれまでに持っているコードがあります

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

parsing - エスケープ文字を許可する文字列の高速解析?

エスケープ文字を含む可能性のある文字列を解析しようとしています。例を次に示します。

上記のパーサーは を作成しString、それを にパックしTextます。attoparsec が提供する効率的な文字列処理のための関数を使用して、上記のようなエスケープで文字列を解析する方法はありますか? のようstringscan、、、、runScanner_takeWhile...

のようなものを解析すると、"one \"two\" \[three\]"が生成されone "two" [three]ます。

更新

@epsilonhalbe のおかげで、自分のニーズに最適な一般化されたソリューションを見つけることができました。[..]次の関数は、".."(..)、 などの一致するエスケープ文字を検索しないことに注意してください。また、無効なエスケープ文字が見つかった場合は\、リテラル文字として扱います。