問題タブ [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.
haskell - 残り物のコンジットシンク
シンクがあり、attoparsec を使用して解析を行いたいと考えています。たまたまPartial
結果が出ます。そこでleftover
、不十分なコンテンツを上流に戻して、後でさらに追加して戻ってくるようにするために使用するかもしれないと考えました。しかし、私が望んでいたように、新しいコンテンツは追加されません。これを解決する方法についての提案をいただければ幸いです。ありがとう!
parsing - Attoparsec ベースのパーサーをより効率的にする
Attoparsec を使用して単純なテキスト STL (標準テッセレーション ライブラリ) パーサーを作成しました。STL にはファセットのコレクションが含まれています。各ファセットには、法線と三角形の頂点が含まれています。一般的な STL ファイルは、サイズが大きくなる可能性があります (~100 Mb 以上)。
STLファイル形式は
パーサーコードはこちらです。完全な実装はSTLReaderで見つけることができます
Meshlabに付属の 'c' パーサーを使用して、このコードのベンチマークを行いました。69Mb スキャンでテストしたところ、meshlab は約 13 秒でジョブを完了しましたが、attoparsec では 22 秒かかりました。そのため、attoparsec を使用すると、Parsec よりも高速に解析できました (parsec では約 36 秒でした) が、まだ長い道のりがあります。
このパーサーをさらに改善するにはどうすればよいですか?
haskell - Attoparsec を使用した Haskell の整数の解析リスト
整数のリストが任意の長さにできる場合、ファイルからカンマ区切りの整数のリストを解析するのに助けが必要です。文字列は "1,2,3,4,5,6,7,8,..." のようになり、作成する必要があるリストは [1,2,3,4,5,6,7, 8、...]。
ファイル形式は次のようになります。
現在、私のパーサーは 1 つの整数しか読み取っていませんが、さらに読み取りを開始する必要があります。takeTill を使用してすべての数値を ByteString に読み込むことができますが、さらに別の文字列を解析する必要があり、正確にいくつの数値が存在するか分からないという同じ問題があります。
これを見つけましたが、ファイルが json ファイルではないため、役に立ちません。
haskell - attoparsec を使用して n 個の 16 進数を解析する
さて、n桁の16進数を解析する必要があり、標準の attoparsec hex parser を停止できないという問題が発生していhexadecimal
ます。
私の最初のアイデアはこれでした:
nHex n = take n *> hexadecimal
しかし、4桁を削除して残りの文字列xDを解析するため、それは機能しません
うまくいく次のアイデアはこれです:
しかし、そのコードの問題は attoparsec ライブラリにあり、速度の問題のために文字のリストを返すことに対して警告し、この16進パーサーは私のプログラム全体のベースです
速度を向上させるための次のアイデアは次のとおりです。
しかし、それは parseOnly を使用した恐ろしいハックのように感じます。より慣用的な高速な方法はありますか?