megaparsec

    3

    1答えて

    私はソースコードファイルを変更するプログラムを書いています。ファイルを解析し(megaparsecなど)、Abstract Syntax Tree ASTをUniplateなどで変更し、できるだけ変更を加えずにファイルを再生成する必要があります(スペースやコメントなどを保存するなど)。 ので、ASTは例えば、スペースが含まれている必要があります data Identifier = Identifi

    0

    1答えて

    私はそれをしようと理解して、私はfoo (x) = 1を解析することができますが、私はfoo x = 1 parseExpr "foo x = 1" Left (line 1, column 10): unexpected end of input expecting digit, "," or "=" を解析することはできません。このパーサ module SimpleParser wh

    1

    1答えて

    私はそのような文字列があります:***、**(*)*、****(**(**)*)** をそして、私はそのようなデータ構造にそれを解析したい:Sが* ある data Tree = Node [S] Tree Tree | Empty(*は、任意の文字にそれを意味するものではありません私は(私はmegaparsecを使用しますが、それはparsec習慣的に非常によく似ている)パーサを構築しようとしただ

    2

    1答えて

    練習として、私はEBNF/ABNF文法をMegaparsecで解析しようとしています。私は端末やオプション機能のような簡単なものを持っていますが、私は選択肢に苦しんでいます。 S ::= 'hello' ['world'] IDENTIFIER LITERAL | 'test'; そして、このコード:この文法では unexpected '|' expecting "IDENTIFIER",

    3

    1答えて

    私は大学プロジェクトのプログラミング言語を解析するためにmegaparsecを使用します。しかし、私は、複数のエラーを報告する方法を見つけることを探しました。 リカバリについて知りましたが、this号が表示されましたが、別の場所でエラーが発生するケースは見つかりませんでした。このJavaコードで例えば :ERROR1「期待タイプをライン3列10で」 「行5列22にセミコロンを欠けている」とERRO

    3

    1答えて

    Megaparsecを使用して、これと同様のテキストをHaskellで解析したいとします。 # START SKIPと# END SKIPを解析するテキストのブロックの開始と終了をマーク # START SKIP def foo(a,b): c = 2*a # Foo return a + b # END SKIP 、。 skipBlockCommentと比較すると、パ

    0

    2答えて

    私はParsecと解析したい行ベースのテキスト形式を持っています。行はポンド記号で始まり、コロンで区切られたキー値のペアを指定するか、前のタグで記述されたURLです。ここで が短い例です:簡単にするため #foo:bar #faz:baz https://example.com #foo:beep https://example.net 、私はString、すべてを保存するつもりです。

    1

    1答えて

    私はmegaparsecの小さなパーサ書いた: scとシンボルと semiParserはチュートリアルからです module App (main) where import Control.Monad (void) import Text.Megaparsec import Text.Megaparsec.String import qualified Text.Megaparsec.L

    0

    1答えて

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

    -1

    1答えて

    私は(例えば)の種類を行うかを理解することはできません eol平均: eol :: (MonadParsec e s m, Token s ~ Char) => m String または、より良いです、私はText.Megaparsec.Textでeolを使用する方法を理解しておらず、Text.Megaparsec.Stringではありません。 Real World HaskellのParse