parsing libraries in racket scheme
This page is aimed at helping answer the question
What parser library should I use in racket scheme?
At the moment I recommend racket-peg. (by me) https://docs.racket-lang.org/peg/index.html
This information was compiled in Jan 22 2018.
Packaged
| NAME | parser-tools-lib |
|---|---|
| AUTHORS | Scott Owens |
| LOC | 5885 |
| NOTE | this is part of racket |
| SYNTAX | s-exp based yacc or CFG |
| DEPS | none |
| EXAMPLES | https://github.com/racket/parser-tools/tree/master/parser-tools-lib/parser-tools/examples |
| NAME | combinator-parser |
|---|---|
| AUTHORS | Kathy Gray |
| LOC | 1959 |
| NOTE | Deprecated “We recommend using either parser-tools/yacc or other parsing packages such as parsack or ragg.” |
| SYNTAX | combinators |
| DEPS | parser-tools-lib |
| EXAMPLES | https://github.com/takikawa/combinator-parser/blob/master/combinator-parser/examples/combinator-example.rkt |
| NAME | parsack |
|---|---|
| AUTHORS | stchang |
| LOC | 1984 |
| NOTE | |
| SYNTAX | monadic notation |
| DEPS | none |
| EXAMPLES | https://github.com/stchang/parsack/tree/master/parsack/examples |
| NAME | megaparsack |
|---|---|
| AUTHORS | Alexis King |
| LOC | 782 |
| NOTE | http://docs.racket-lang.org/megaparsack/differences-from-parsack.html |
| SYNTAX | monadic notation |
| DEPS | none |
| EXAMPLES | https://github.com/lexi-lambda/megaparsack/blob/master/megaparsack-parser/megaparsack/parser/json.rkt |
| NAME | ragg |
|---|---|
| AUTHORS | dyoo, clements, mb |
| LOC | 4222 |
| NOTE | A design goal is to be easy for beginners to use |
| SYNTAX | EBNF |
| DEPS | parser-tools-lib |
| EXAMPLES | https://github.com/jbclements/ragg/tree/master/ragg/examples |
| NAME | brag |
|---|---|
| AUTHORS | dyoo, matthew butterick |
| LOC | 10288 |
| NOTE | used in the book beautiful racket |
| SYNTAX | s-exp and YAML-like |
| DEPS | br-parser-tools |
| EXAMPLES | https://github.com/mbutterick/brag/tree/master/brag/brag/examples |
| NAME | sparse |
|---|---|
| AUTHORS | esco ricky |
| LOC | 899 |
| NOTE | this is for recognizing s-expression languages |
| SYNTAX | s-expressions |
| DEPS | none |
| EXAMPLES | http://docs.racket-lang.org/sparse/index.html#%28part._.Example%29 |
| NAME | derp-3 |
|---|---|
| AUTHORS | clements, michael adams |
| LOC | 996 |
| NOTE | based on “Parsing with Derivatives”. Seems to lack documentation. |
| SYNTAX | production rules |
| DEPS | none |
| EXAMPLES | It seems to implement a python parser but I cannot find it. |
| NAME | binary-class |
|---|---|
| AUTHORS | kalimehtar |
| LOC | 701 |
| NOTE | for binary data |
| SYNTAX | lisp struct definitions |
| DEPS | none |
| EXAMPLES | http://docs.racket-lang.org/binary-class/index.html#%28part..Binary_class__.Base_system%29 |
Unpackaged
Some parser code which works(?) in racket that is not packaged. May be beta.
- http://tech.labs.oliverwyman.com/blog/2008/07/01/ometa-for-scheme/ (10 years old)
- https://github.com/kazzmir/Pegs (8 years old)
- https://github.com/vkz/ometa-racket (4 years old)
- https://github.com/epsil/gll (2 years old)
- https://github.com/orlandohill/waxeye (3273 lines of rkt)
- https://github.com/szabba/peg this code looks good
- http://git.savannah.gnu.org/cgit/guile.git/tree/module/ice-9/peg ice-9 peg in guile scheme.
- https://epsil.github.io/gll/ looks good
End
Please feel welcome to edit this page by submitting a pull request.