問題タブ [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 - パーセクで適切なケースフォールディングを行う方法
で適切なケースフォールディングを行う方法はありますか( fromParsec
のように動作するパーサーが必要だとします)。大文字と小文字を区別しない解析を行うコードは、を使用しますが、適切な大文字と小文字の区別はありません。だから私はこれがまったく可能かどうか戸惑っています。stringCI
Data.Attoparsec.Text
Text.Parsec.Token
char (toLower c) <|> char (toUpper c)
haskell - 入力がバッファ サイズより大きい場合、attoparsec-iteratee が機能しない
シンプルな attoparsec ベースのpdf パーサーがあります。iteratee を使用するまでは問題なく動作します。入力のサイズがバッファ サイズを超えた場合。
入力:
したがって、パーサーは iteratee なしで動作し、十分に大きなチャンクで動作しますが、小さなチャンクでは動作しません。iteratee のバグ?attoparsec-iteratee で?私のコードでは?回避策はありますか?私にとって本当に喫緊の課題です。
ありがとう。
haskell - attoparsec パーサーに IO を適切に追加するには?
attoparsec パーサーでトレース/デバッグを行いたいと考えています。これは最小限の[ない]動作例です:
パーサーで IO アクションを使用するにはどうすればよいですか?
haskell - Haskell での Karva 表記の解析
Karva 表記法は、遺伝子発現プログラミングで数式を表すために使用されます。
ここを参照してください http://www.gene-expression-programming.com/Tutorial002.asp
オフザ遺伝子を読み取り、ノードを左から右、上から下に埋めて、発現ツリーを作成します。
たとえば、"+*+1+2*3456" で演算子 ( +, * ) と端子 (1,2,3,4,5,6) を使用すると、39 と評価されます。
attoparsec (または parsec) を使用して haskell でこれを行うにはどうすればよいですか?
haskell - Attoparsec:括弧で囲まれた用語をスキップしますか?
mongoDBへのインポートに適した5列目のJSONを使用して大きなTSVファイルを作成しようとしています。特に、トップレベルとトップレベルのキーフィールドのみを_idに変更したいと思います。これは私がこれまでに持っているものです、それはうまくいくようですが遅いです:
プロファイラーによると、時間の58.7%がブラケットで、19.6%がkeyTo_idで、17.1%がメインで費やされています。
確かに、角かっこが一致する場合、角かっこで囲まれた用語を変更せずに返すより良い方法はありますか?
attoparsec-conduitを簡単に調べましたが、そのライブラリの使用方法がわからず、これが使用できる種類のものであるかどうかさえわかりません。
編集:コードを更新しました。データはopenlibrary.orgからのものです。例:http ://openlibrary.org/data/ol_dump_authors_latest.txt.gz
parsing - Attoparsec パーサーを消費せずに成功させるにはどうすればよいですか (parsec lookAhead のように)
私は簡単な attoparsec パーサーを作成して、aspx ファイルを調べてすべてのスタイル属性を削除しましたが、>
消費せずにマッチングを成功させる方法がわからない部分を除いて、正常に動作しています。
ここに私が持っているものがあります:
私はそれが部分的に私がeverythingButStylesでmanyTillをどのように使用しているかを理解していますstyleWithoutQuotes
.私はちょうどやっlookAhead ">"
たでしょうが、attoparsecではそれができません。
haskell - Attoparsec パーサーで IO Bool のチェックを簡素化しようとしています
ネットワーク パケットの attoparsec パーサーの一部である以下のコードを単純化しようとしていますが、それを行うための適切な方法を見つけられません。
atEnd :: IO Bool
解析するものが他にあるかどうかを判断するための への呼び出しから始まります。IO からアンラップしてから if ステートメントで使用するよりも適切な使用方法を見つけることはできませんがatEnd
、モナド内で bool をチェックする簡単な方法が必要なようです。コードは次のとおりです。
意図はNothing
、ペイロードがない場合に戻りJust A.Value
、有効な JSON ペイロードがある場合に戻り、無効なペイロードがある場合にパーサーが失敗することです。
最終的に作成される Packet レコードは次のとおりです。
haskell - Text が適切と思われる場所で、ライブラリ設計者が ByteString を使用するのはなぜですか?
私のアプリで作業していると、Aeson が UTF8 入力をデコードしないという問題に遭遇しました。Parser ByteString
さらに深く掘り下げると、問題の原因と思われる Attoparsec に依存していることがわかりました。しかし、それは私がここで尋ねていることではありません。
JSONはバイナリファイルではなく、読み取り可能なテキストであり、UTF8文字が含まれている可能性があるため、ByteString
私には明らかなように、適切な場所を使用している人を見たのはそれだけではありません。Text
だから私は何かが欠けていて、選択する正当な理由があるByteString
のか 、Text
それともラテン語以外の文字セットをあまり気にしない大多数の人々によって引き起こされた悪いライブラリ設計の広範な現象なのか疑問に思っています.
haskell - 失敗すると予想されるのに、attoparsec で部分的な結果が表示されるのはなぜですか?
attoparsec のこの動作には少し混乱しています。
Fail をトリガーするために追加の文字が必要なのはなぜですか?
最初の「x」に遭遇するとすぐに失敗するべきではありませんか?
parsing - Haskell カスタム データ型の解析
ここで提供されているHaskell Koansを試してみました: https://github.com/roman/HaskellKoans
カスタム代数データ型の解析を含む最後の 2 つの公案に行き詰まっています。最初は次のとおりです。
Atom
代数データ型を解析してアサーションを渡すことができるように、変数パーサーをどのように定義できますか?