Yet another Tcl Interpreter
Yeti does the same job for Tcl that yacc or bison do for C. You can specify a grammar in a form similar to the Backus-Naur Form (BNF), and define scripts that are executed whenever a rule is matched.
After all rules have been added, Yeti dumps code for a [incr Tcl] class that implements the parser. This parser uses a deterministic state machine computed from the rules. This has the advantage of using only linear runtime and memory for parsing, but the disadvantage that it is not possible to update the parser after parsing has started. It is common usage to generate a parser once at package installation time, and to store the parser in a file, from where it is then sourced.
Parsers need a scanner to their job. The purpose of a scanner is to read tokens (terminals) from an input source. A scanner generator called Ylex is included in the Yeti package; after adding rules, it also dumps code for a scanner class.
Yeti is written in Tcl. It requires Tcl 8.x, [incr Tcl] 3.x. The parser generator also requires the struct module from tcllib; this module is not needed to run generated scanners and parsers.
Yeti is released under BSD license without any warranties.
For those who didn't get the joke, the name of the package is a pun on both yacc (which stands for Yet another C Compiler and sounds like Yak, an animal) and bison (again an animal).