rain-1.github.io

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.