do 記法を使えば連続してマッチするパーサを作ることが出来ます(連接)。
> :m Text.ParserCombinators.Parsec > parseTest (char 'a') "abc" -- > 'a' > parseTest (do{char 'a';char 'b'}) "abc" -- > 'b' > parseTest (do{a<-char 'a';b<-char 'b';return [a,b]}) "abc" -- > "ab" > parseTest (do{a<-char 'a';b<-char 'b';s<-string "hello";return ([a,b]++s)}) "abhello" -- > "abhello"
<|> 演算子を使うとどちらかにマッチする(選択)パーサを作ることが出来ます。
> parseTest (string "abc"<|> string "hello") "hello" -- > "hello" > parseTest (string "abc"<|> string "hello") "abc" -- > "abc" > parseTest (do{str <- string "abc"<|> string "hello";return str}) "abc" -- > "abc"