This a project to explore parsing techniques and related structures like grammars and finite state automata.
The module is divided into the following sections:
- Core
- Recognizers
- Analyzers
- Transformers
- Parsers
- Generators
- Automata
Contains core classes used to model tokens, token strings, production rules, grammars and parse trees.
Contains recognizers, that is, modules that is used to decide whether a given sentence belongs or not to a language defined by a grammar.
Contains grammar analyzers that can report stuff like whether a given grammar has non productive rules/non terminals (and list them), whether the grammar has direct loops and others.
Contains grammar transformers that perform conservative transformations, that is, they preserve the language described by the grammar.
Contains parsers like CYK, LL(0), LL(1), LR (no lookahead).
Contains modules that generate sentences from a language described by a grammar.
Contains finite state automata.