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 に答える