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