我試圖用Parsec在Haskell中編寫解析器。目前,我有一個程序,可以解析Haskell Parsec遇到的解析器[...]
test x [1,2,3] end
,這是否給出如下
testParser = do {
reserved "test";
v <- identifier;
symbol "[";
l <- sepBy natural commaSep;
symbol "]";
p <- pParser;
return $ Test v (List l) p
} <?> "end"
其中commaSep被定義爲
commaSep = skipMany1 (space <|> char ',')
現在的代碼是對我有某種方式解析類似的說法,具體如下:
test x [1...3] end
作爲Haskell和Parsec的新手,我確信有一些簡單的方法可以做到這一點,但我並不知道。任何幫助,將不勝感激。
再次感謝。
應該週期數是恆定的還是可變的?數字和時段之間以及時段之間是否允許有空格?順便說一句,你的第一個解析器匹配'test x [1,2,3] end';也許這不是你想要的。 – dflemstr 2012-07-17 15:29:53
週期數應該是恆定的,即對於任何情況,[1 ... 3]應該包含正好3個週期。諸如[1 ... 3]之間的空格應該被忽略。希望能夠澄清一下我之後的情況。 – 2012-07-17 15:32:56