parsec

    0

    1答えて

    は、私はHaskellのParsecのライブラリを使用して、この言語のための単純なパーサを書いてい Expr -> Var | Int | Expr Op Expr Op -> + | - | * |/| % | == | != | < | > | <= | >= | && | || Stmt -> Skip | Var := Expr | Stmt ; Stmt | write Expr |

    5

    3答えて

    それは構文解析を停止した後にParsecのからTE残りの入力を取得する方法があります場合、私はそれが成功したか失敗した解析、多分この署名したいずれかの場合には、思っていた:我々が得る parseRemaining :: Stream s Identity t => Parsec s() a -> SourceName -> s -> (s, Either ParseError a) Eithe

    5

    1答えて

    テキストを解析しようとしていますが、区切り記号で区切られた記号のリストを解析する方法を理解できません。リストの 例(スペースで区切られた数字):それは私がリストの後many whitespaceにも読み取ろうとしても、別の数字を予想しているため set A = 1 2 3 4 5; set B =6 7 8 9; set C = 10 11 12 ; 私はsepByを使用している場合は、最

    5

    1答えて

    これが可能かどうかはわかりませんが、Parsecを使用してファイルの文字列を検索しようとしています。サンプルファイル: START (name) junk morejunk=junk; dontcare foo() bar care_about this (stuff in here i dont care about); don't care about th

    9

    1答えて

    ` optional`コンビネータ内部many`コンビネータ:オプションを受け入れパーサー規則は(すなわち潜在的に空である ((a | b | c)* (a | b))? を)文字列。それはacccepts文字列が空でない場合、それはabまたはcパーサの0回以上の繰り返しを通過することによって消費することができますが、最も外側の?オプションのパーサによって受け入れられた文字列がパーサaするかの

    1

    1答えて

    スラッシュの間の単純な式を解析しようとしています。例:/ 1+2*3 /は、7と評価する必要があります。しかし *Test> parse programInBraces "" "{ 1+2*3/4 }" Right 2 、programInSlashes失敗しない: 私は、これはprogramInBraces大丈夫働く module Test where import Text.Pars

    5

    1答えて

    私はハスケルのC言語のパーサーを書く初めです。私はASTのデータ型をダウンしています。私は物事のパーサー側を掘り下げる前に、AST自体に簡単なクエリを書くことでそれを試しています。 私のASTはステートメント(if/elseのような値なし)と式(リテラルまたはバイナリ操作のような値を持つ)の2つのタイプを中心にしています。だから、それは(もちろん大幅に単純化され、)次のようになります。 data

    7

    1答えて

    私は構文解析にParsecを使用するプログラミング言語を書いています。エラーメッセージを報告するために、Parsecのthe Pos moduleのgetPosition関数を使用して、構文木の各要素にそのソースの場所をラベル付けしました。 しかし、それは私が解析した各式の先頭の位置を与えるだけで、ソースコード内の全体の位置を強調することができるように、最初と最後を望みます。 parsecでこのよ

    5

    1答えて

    私はParsecを学びようとしており、簡単な電子メールアドレスを解析しようとしています。 次のコードを試しました。私の予想される出力は、電子メールアドレス全体が文字列として出力されます。しかし、私がコードを実行すると、私は ".com"しか得ることができませんsomeneは何が起こっているか教えてください? {-# LANGUAGE NoMonomorphismRestriction #-}

    0

    2答えて

    言語を解析していて、構文解析中に他のファイル$includeを使用したいと考えています。 マイコード: import Text.ParserCombinators.Parsec import Text.Parsec.Prim (parserZero) import Text.ParserCombinators.Parsec.Char import Control.Monad.Trans i