Parsec.Combinator:between
ほぼ、まんま
module Main where import Text.ParserCombinators.Parsec braces = between (char '{') (char '}') 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
で、
*Main> run (braces letter) "{a}" 'a' *Main> run (braces letter) "{ }" parse error at (line 1, column 2): unexpected " " expecting letter *Main> run (braces (many1 letter)) "{a}" "a" *Main> run (braces (many1 letter)) "{abc}" "abc"