parsec

    4

    1答えて

    を解析し、私はこのように、カンマで区切られた2つのまたは3つの数字を、扱うことができるパーサを作成することができますのみの数字が重要である number :: Parser Int number = many1 digit >>= return . read <?> "number" numbers = do n1 <- number n2 <- char ':' >>

    3

    2答えて

    異なるタイプの用語に対して2つのパーサーがあります。 a :: Parser A b :: Parser B 私は、これらの用語のシーケンスを表すデータ型を持っています。 data C = C [A] [B] 私の入力は混合用語のシーケンスである場合は、その順序を維持し、B sからA Sを分離するためにc :: Parser Cを書くの良い方法は何ですか? data A = A Char

    4

    1答えて

    私はハスケルのような言葉のための未完成のパーサーでParsecで遊んでいます。 エラーメッセージが表示されない場合でも、正常に動作しているようです。 入力:"foo (bar" エラー:私はそれだけでexpecting operand or ")"を印刷するために得ることができますどのようexpecting letter or digit, operand or ")" ?私は<?>を追加しようと

    4

    2答えて

    複数のパーサーが成功する入力を解析する最適な方法を知りたいと思います。私は最初に失敗した試みと、より熟達したものになることを願う控えめな解決策を概説しました。 たとえば私はlexのしたい「」、「速い」と、独自のデータ構築に次の文章から「キツネ」: "the quick brown fox jumps over the lazy dog". だから、与えられた次の型コンストラクタ: data I

    8

    1答えて

    を後戻りしない: data Cmd = LoginCmd String | JoinCmd String | LeaveCmd String deriving (Show) singleparam :: Parser Cmd singleparam = do cmd <- choice [string "leave", string "login"

    2

    1答えて

    私はparsec Haskellライブラリを使用しています。私は、次のような文字列を解析したい : [[v1]][[v2]] xyz[[v1]][[v2]] [[v1]]xyz[[v2]] など 私は唯一の値v1とv2を収集し、データ構造にこれらを格納するために興味深いです。 私は次のコードで試してみました:入力プログラムは次の出力を返し、正常に動作"[[v1]][[v2]]"であれば

    2

    1答えて

    私はまだParsecを使って快適にしようとしていますが、ツールボックスにゆっくりと取り組んでいます。 私は私が解析する必要があるファイルを持っているとき、私は自分自身を文字列としてでファイルを読み込み、その後、パーセクにコンテンツを渡す見つける: problem <- readFile input case runParser myParser() input problem of

    1

    1答えて

    Parsecライブラリを使用してHaskellでPascal言語パーサーを開発しています.Parsec.Tokenクラスで定義されたトークンを再定義する必要があります。それの Speekingは、ここに私の場合です: 私はstringLiteralトークンが一致している方法を変更する必要があります。デフォルトの定義では、それは何かbetween char '"'(see this)ですが、私はbe

    8

    3答えて

    私はparsecで作業していましたが、コードのデバッグに問題があります。たとえば、ghciでブレークポイントを設定することはできますが、どれだけの入力が消費されたか、そのようなことを確認する方法はわかりません。 parsecコードのデバッグに役立つツールやガイドラインはありますか?

    1

    3答えて

    私はHaskell Parsecライブラリを使用した文字列解析用にこのパーサを持っています。私の言語で myStringLiteral = lexeme ( do str <- between (char '\'') (char '\'' <?> "end of string") (many stringChar) ; return