Glush is a versatile parser toolkit:
-
Generates JavaScript parsers.
-
Usable as a parser combinator library in Ruby.
-
Parses LL/LR grammars in linear time.
-
Parses all context-free grammars (even the most ambiguous ones) in worst-case cubic time.
-
Scannerless: Works directly on characters (no lexer needed).
-
Streamable, push-based API: You give it one token at a time; fail-fast supported.
-
Reads EBNF grammars.
-
Flexible operator precedence.
-
Licensed under 0BSD.
Glush is, as of late 2019, under active development with changes being made to the core algorithm in the v2 branch. The code in the master branch is usable, but has known deficiencies. For now it’s recommended to wait until the new implementation stabilizes and as such there is limited documentation and examples.