Skip to content
A parser toolkit
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
test Parser suite: Skip tests that are known to fail Jul 4, 2019
.gitignore Add coverage support Jun 2, 2019
Gemfile Initial implementation of JavaScript backend Jul 4, 2019 Add README/LICENSE May 31, 2019
README.adoc Cleanup: Jul 3, 2019
Rakefile Add Rakefile/Gemfile May 31, 2019


Glush: A parser toolkit

Glush is a versatile parser toolkit based on Glushkov’s construction algorithm:

  • 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.

  • Supports matching UTF-8 characters.

  • Reads EBNF grammars.

  • Flexible operator precedence.

  • Usable as a parser combinator library in Ruby.

  • Licensed under 0BSD.

Planned features:

  • Documentation

  • Ambiguity error reporting

  • Generating JavaScript/C/Go parser

Current status:

  • Not ready for production. Glush is mainly interesting if you like to explore parser algorithms.

  • The core of the algorithm is complete and is working quite nicely.

  • There’s some fundamental features (e.g. operator precedence handling) that needs to be completed before the API can be fully decided.

  • Most of the planned features are trivial.

You can’t perform that action at this time.