Skip to content
/ graco Public

A EBNF-based generator of table-driven top-down parsers of LL(k) grammars featuring predictable & configurable conflict resolution mechanism, ANYTOKEN support, retargetable back-end, etc.

License

Notifications You must be signed in to change notification settings

vovkos/graco

Repository files navigation

Graco

Abstract

Graco (stands for "GRAmmar COmpiler) is a EBNF-based generator of table-driven top-down parsers of LL(k) grammars. It was created as a parser generator for the Jancy programming language. Jancy features safe pointer arithmetics, spreadsheet-like reactive programming, the async-await paradigm, built-in regex-based lexer/scanner generator, and many other features. It is used as the scripting engine of the all-in-one programmable terminal/sniffer/protocol analyzer IO Ninja.

Notable Features

  • ANYTOKEN support;
  • Predictable & configurable conflict resolution mechanism;
  • Automatic error recovery via user-defined synchornization token sets;
  • Retargetable back-end (via Lua string templates);
  • All actions and grammar rule choises are efficient table-driven jumps;
  • External tokenization loop;
  • Convenient syntax for grammar rule actions, arguments, and return values.

About

A EBNF-based generator of table-driven top-down parsers of LL(k) grammars featuring predictable & configurable conflict resolution mechanism, ANYTOKEN support, retargetable back-end, etc.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published