parsec

    1

    1答えて

    私はparsecを使用して、次のパーサを書くことをしようとしている: manyLength :: forall s u m a. Monad m => ParsecT s u m a -> ParsecT s u m Int manyLength p = go 0 where go :: Int -> ParsecT s u m Int

    0

    1答えて

    私はparsecライブラリを試していますが、この基本的なタスクをどのように処理するかはわかりません。 data Foo = A | AB と私は文字列「」Aとして解析すると、「B」ABたい: は、私は次があるとします。私はこれを行う場合: parseA :: parser Foo parseA = do reserved "a" return A parseA

    0

    1答えて

    私はC/C++/javaソースファイルを読み込み、ファイル全体に対して一連の変換を実行しようとしています。最初のフェーズは文字列を削除し、2番目のフェーズはコメントを削除します。 各フェーズで文字列をいずれかの文字列に変換すると、(どちらの意味でも)それらを一緒にバインドして、変換のパイプラインを作りたいと思います。ファイル全体これはかなり一般的な要件のようです。 import Text.Pars

    3

    1答えて

    私はAttoparsecを使用していますが、これはデフォルトでバックトラックしています。ただし、次の行: parseOnly (string "foo" *> many1 anyChar <* string "bar") "fooxxxbar" はで失敗します。 Left "not enough input" だから、なぜでしょうか? many1 anyCharが3文字(xxx)のみを解析

    0

    2答えて

    私はハスケルで解析するのが本当に新しいですが、ほとんど意味があります。 私は主に、より良い解析を学ぶためにテンプレートプログラムを構築しています。テンプレートは{{ value }}表記で値を補間できます。 {{ value }} This is normal Text {{ expression }} 私はtemplateFromFile "./template.txt"を使用して、

    3

    1答えて

    私はHaskellを初めて使っています。私は、Parsecを使ってJSONパーサーを書くことを試みています。これはほとんどうまくいっています。リストやオブジェクトを比較的小さなコードで解析することもできます。しかし、JSONのために私はまた 整数(おそらく符号付き)(おそらくは例えば、「3.4E-8」として科学的表記法を使用して) フロート 例えば付き文字列のようなプリミティブを解析する必要があり

    0

    1答えて

    私は新しい関数parse :: String - > Stmを書く必要があります。 Parsecはすでに解析関数を持っているので、parseが私のラッパー関数を返すように修飾されたparsecをインポートするはずです。 ラッパー関数は、入力文字列をParsecの解析関数に解析し、返されたモナドから結果をアンパックする必要があります。これは私のラッパー関数のコードです。 parseが呼び出されたとき

    -3

    1答えて

    は、私がfllowingコマンド print (Parsec.parse (Parsec.many (Parsec.choice [Parsec.letter,Parsec.spaces ,(Parsec.char ','), Parsec.digit])) "" "hello1 , byebye2 ,") を試してみましたが、コンソールにエラーが 私はこの問題を解決するかどうかはわかりません

    2

    1答えて

    次のパーサーは、任意の入力に対して無限ループを入力します。 data Ast = Number Int | Identifier String | Operation Ast BinOp Ast deriving (Show, Eq) data BinOp = Plus | Minus deriving (Show, Eq, Enum) n

    3

    2答えて

    でリストのリストに複数行の解析: a b c f e d 私はライン内のシンボルのそれぞれにマッチし、リストのリストにすべてを解析します以下のような: [[A, B, C], [D, E, F]] 行うために、私は次のことをしようとしたこと: import Control.Monad import Text.ParserCombinators.Parsec import