Parsec.Token:reservedOp
module Main where import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Token import Text.ParserCombinators.Parsec.Language lexer :: TokenParser () lexer = makeTokenParser(javaStyle) run :: Show a => Parser a -> String -> IO () run p input = case (parse p "" input) of Left err -> do{ putStr "parse error at " ; print err } Right x -> print x
で、
Prelude> :l 20081127_parsec00.hs Compiling Main ( 20081127_parsec00.hs, interpreted ) Ok, modules loaded: Main. *Main> :t reservedOp reservedOp :: forall st. TokenParser st -> String -> CharParser st () *Main> run (reservedOp lexer "+") "+" () *Main> run (reservedOp lexer "+") "" Loading package parsec ... linking ... done. parse error at (line 1, column 1): unexpected end of input expecting "+" *Main> run (reservedOp lexer "+") "a" parse error at (line 1, column 1): unexpected "a" expecting "+" *Main> run (reservedOp lexer "+-") "+-" () *Main> run (reservedOp lexer "+-") "+" parse error at (line 1, column 1): unexpected end of input expecting "+-"