Open-source
Here are short descriptions of some of FOSS projects I started a while ago. I use these tools in my work, research and teaching Domain-Specific Languages course.
textX
textX is a meta-language (i.e. a language for language definition) for domain-specific language (DSL) specification in Python inspired by Xtext.
From a single grammar description textX automatically builds a meta-model (in the form of Python classes) and a parser for your language. Parser will parse expressions on your language and automatically build a graph of Python objects (i.e. the model) corresponding to the meta-model.
Read more information here or see the project on GitHub.
parglare
Parglare is a modern approach to old-school parsing algorithms - LR and GLR. It uses integrated scanner (a.k.a scannerless parsing), have an extensive support for debugging, tracing and visualization. For grammar specification a BNF-like notation is used.
Read more information here or see the project on GitHub.
Arpeggio
Arpeggio is recursive descent parser with backtracking and memoization (a.k.a. pacrat parser) for Python. Arpeggio grammars are based on the PEG formalism. Arpeggio’s main use is a foundation for a tool-chain for DSL development but it can be used for all sort of general purpose parsing.
It is used as a parsing tehnology for textX.
Read more information here or see the project on GitHub.
Rustemo
Rustemo is a LR/GLR parser generator for Rust which features a clean separation between its core components: lexers, parsers, and builders. Lexers break an input sequence into tokens. Parsers perform syntax analysis on the tokens recognized by the lexer, while builders are responsible for producing the final output. It is an old-school LR approach with a modern twist. It supports Generalized LR (GLR) parsing as well.
To learn more read the docs or visit the project on GitHub.