@hackage peggy0.3.2
The Parser Generator for Haskell
Installation
Dependencies (7)
- ListLike >=3.1 && <3.2
- base >=4 && <5
- hashtables >=1.0 && <1.1
- haskell-src-meta >=0.5
- monad-control >=0.3 && <0.4
- mtl >=2.0 Show all…
Dependents (4)
@hackage/msgpack-idl, @hackage/acme-everything, @hackage/binary-file, @hackage/computational-algebra
Package Flags
build-example(off by default)
Peggy: A Parser Generator of Parsing Expression Grammer (PEG)
About
This is an yet another parser generator of Parsing Expression Grammer (PEG) which is:
- Simple
- Concise
- Fast
- Modern
Usage
You can find a recent stable release in Hackage DB. You can install this as following instruction:
$ cabal update
$ cabal install Peggy
Why should you use Peggy?
Haskell has commonly used parser generators, one of them are Alex/Happy. But I think Alex/Happy are not good in these points:
- Generates regacy codes
Alex uses only too basic libraries. It does not use monad-transformers, iteratee, ListLike, Text, and so on.
- Tradisional Regexp/CFG based parser
Parsec has no good error recovery.
unnun, kannun...
...
Quick Start
Here is an example of parsing arithmetic expressions.
{-# QuasiQuotes #-}
{-# Language FlexibleContexts #-}
import Text.Peggy
[peggy|
exp :: Double
= exp "+" fact { $1 + $2 }
/ exp "-" fact { $1 - $2 }
/ fact
fact :: Double
= fact "*" term { $1 * $2 }
/ fact "/" term { $1 / $2 }
/ term
term :: Double
= "(" exp ")"
/ number
number ::: Double
= ([1-9][0-9]*) { read $1 }
|]
main :: IO ()
main =
print . parse exp =<< getContents