flatparse-0.1.0.0: bench/Parsec.hs
module Parsec (runSexp, runLongws, runNumcsv) where
import Text.Parsec
import Text.Parsec.ByteString
isLatinLetter :: Char -> Bool
isLatinLetter c = ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')
ws :: Parser ()
ws = skipMany (satisfy \c -> c == ' ' || c == '\n')
open = char '(' >> ws
close = char ')' >> ws
ident = skipMany1 (satisfy isLatinLetter) <* ws
sexp = (open *> skipMany1 sexp <* close) <|> ident
runSexp = parse sexp ""
longw = string "thisisalongkeyword"
longws = skipMany1 (longw *> ws) <* eof
runLongws = parse longws ""
numeral = skipMany1 (satisfy \c -> '0' <= c && c <= '9') >> ws
comma = char ',' >> ws
numcsv = numeral >> skipMany1 (comma >> numeral) >> eof
runNumcsv = parse numcsv ""