問題タブ [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 投票する
2 に答える
136 参照

haskell - pipes-attoparsec の型チェックの問題

pipes-attoparsec を試してみましたが、うまくいきませんでした。

比較的単純なコード (と思われるもの) では、Void と X の間に型の不一致があるようです。ライブラリで読んだことから(これはある時点で型の同義語になるということです)、型エラーを解釈する方法がわかりません。

テストコード:

これにより、次のエラーが発生します。

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

haskell - Data.Attoparsec.ByteString は「ゼロ コピー」を使用しますか?

たとえば、takeWhileを取ります。内部的にはspanを使用します。

それは入力バイト文字列を参照するだけということですか? おそらくそうではありませんが、もしそうなら、これを達成する方法はありますか?

動機となるユースケースは、メモリにマップし、マップされたメモリを指すバイト文字列を抽出したい大きな (> 2GB) ファイルです。

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

haskell - Haskell Attoparsecでタブまたは改行までtakeTillを使用するにはどうすればよいですか? (ブール式の問題)

私は最初の Haskell プログラムを書いています。このプログラムは通常の CSV ファイルを解析しますが、多くの問題に直面しています。これは、私の構文の経験不足に起因するものと思われます。

現在、コードは 1 つのレコードを正常に解析しますが、最後のレコードでは、パーサーが改行を取り上げるため、後続の行のレコードを処理しません。

私の提案する解決策は、fieldData 仕様にチェックを追加して「takeTill タブまたは改行」をチェックすることですが、これを行う方法がわかりません。

現在のコード:

試み:

Haskell でブール条件を構築する方法について根本的な誤解があると感じており、助けを求めています。たとえば、 ghci で実行でき、let fun x = (x == 'a' || x == 'b')さまざまな文字にうまく一致するため、関数で使用する場合、明らかに何かが欠けています。

あるいは、これは正しいアプローチですか?これが問題に取り組む正しい方法でない場合は、「正しい」方法へのポインタをいただければ幸いです。

以下の完全なコード:

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

haskell - attoparsec で改行を除く空白をスキップする

Attoparsecは、関数を提供しますskipSpace

この関数は、使用可能なすべての空白を消費します。

andskipSpaceNoNewline以外の空白をスキップする関数を実装するにはどうすればよいですか?\n\r\n

注:この質問は、Q&A スタイルで回答されているため、意図的に研究努力を示していません。

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

haskell - Attoparsec で yahoo 履歴 csv を解析する方法

私はhaskellの初心者です、attoparsecでオープン配列、高配列などにパースする方法

エラーメッセージ:

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

parsing - Attoparsec を使用したメモリ不足

attoparsec で簡単なパーサーを作ろうとしています。生産規則は次のようなものです。

だから、私が取得しようとしているのは、ブロックはリテラル ? で始まり、その後にトークンが続き、その後に > が続き、その後に一連のインラインが続きます。

インラインは、foo という形式のシーケンスか、単なるプレーン テキストのいずれかです。

メモリを爆発的に使用していますが、それを回避するためにパーサーを因数分解する方法がわかりません。私が書いているパーサーのポイントは、それらの「トークン」を引き出すことです。これが私の実装です:

私には、これはプロダクション ルールの LL パーサーへの非常に簡単な変換のように見えます。難しさは、インラインのプロダクションを表現する方法がわからないことだと思います。「任意の」テキストであるはずですが、hiddenInline が見つかるとすぐに解析を停止する必要があります。