0

我想为 Haskell 中的正则表达式制作一个解析器组合器。所以我定义了自己的数据类型,并为这个类型做了一个匹配函数。我最近发现了 Text.ParserCombinators。如果我使用parseTest函数,结果类型是IO. 那么如何使用 Text.ParserCombinators 来返回我创建的数据的类型呢?下面是我的代码。

data Reg = Eps
        |Sym Char --caracter
        |Alt Reg Reg --a sau b a|b
        |Seq Reg Reg -- secventa ab  sau chiar paranteza
        |Rep (Int, Maybe Int) Reg   --Star repet on or more time
        |Dif Reg    --not
deriving (Show)
--match function
accept :: Reg -> String ->Bool

accept ( parse term "abcd") "abcd"
ERROR - Type error in application
*** Expression     : accept (parse term "abcd") "abcd"
*** Term           : parse term "abcd"
*** Type           : [Char] -> Either ParseError Reg
*** Does not match : Reg
--term is the Parser function where the grammars is defined
term :: Parser Reg
term = buildExpressionParser ops atom where    
4

1 回答 1

1

正如评论中的 sdcvvc 所指出的,parse它没有应用于足够的参数。

于 2013-01-29T20:55:16.420 回答