私はParsecを使ってHaskellにパーサを書き込もうとしています。現在、私はいくつかの方法が私のためにそこにあるHaskell Parsec Parser for Encountering [...]
test x [1,2,3] end
commaSepが
今commaSep = skipMany1 (space <|> char ',')
として定義されて
testParser = do {
reserved "test";
v <- identifier;
symbol "[";
l <- sepBy natural commaSep;
symbol "]";
p <- pParser;
return $ Test v (List l) p
} <?> "end"
を次のようにこれが与えられていたコードを解析できるプログラムを持っています同様の文を解析するために、具体的には:
test x [1...3] end
ハスケルとParsecには新しいことがあるので、私は気づいていない、これを行うためのすばらしい簡潔な方法があると確信しています。どんな助けもありがとう。
もう一度おねがいします。
期間の数は一定か可変であるべきですか?数字とピリオドの間、ピリオドの間にはスペースが許されていますか?ちなみに、最初のパーサーは 'test x [1、、2、,, 3] end'にマッチします。多分それはあなたが望むものではありません。 – dflemstr
期間の数は一定でなければなりません。つまり、[1 ... 3]はどの場合でも正確に3つの期間で構成する必要があります。間にある空白は[1 ... 3]のように無視する必要があります。うまくいけば、私はもう少し後のことを明確にします。 –