@hackage snack0.4.0.0
Strict ByteString Parser Combinator
Categories
License
CC0-1.0
Maintainer
mordae@anilinux.org
Links
Versions
Installation
Tested Compilers
Dependencies (4)
- base >=4.13 && <5
- bytestring >=0.10.12
- bytestring-lexing >=0.5
- text >=2.0 Show all…
Dependents (0)
snack
Strict ByteString Parser Combinator
- Simple. Feel free to contribute.
- Fast. Sometimes faster then Attoparsec.
- ASCII. Good enough for IETF formats.
- Also Text. But quite slower.
Example:
import Data.ByteString (ByteString)
import qualified Data.ByteString.Parser.Char8 as BSP
parseList :: BSP.Parser [ByteString]
parseList = (token `BSP.wrap` BSP.skipSpace) `BSP.sepBy` BSP.char ','
where token = BSP.takeWhile isToken
isToken c = inRange 'a' 'z' c ||
inRange 'A' 'Z' c ||
inRange '0' '9' c ||
c == '_' || c == '-'
main :: IO ()
main = do
putStrLn $ show $ BSP.runParser parseList "monkey, wrench, bananas"
putStrLn $ show $ BSP.runParser parseList "^quux"
putStrLn $ show $ BSP.runParser (parseList <* BSP.endOfInput) "^quux"
-- Will output:
-- Success ["monkey","wrench","bananas"] ""
-- Success [""] "^quux"
-- Failure ["end of input"] "^quux"