Documentation generated from fossil trunk
Interpreter for parsing expression grammars
package require Tcl 8.4 package require grammar::mengine ? 0.1 ? package require grammar::peg::interp ? 0.1.1 ? ::grammar::peg::interp::setup peg ::grammar::peg::interp::parse nextcmd errorvar astvar
This package provides commands for the controlled matching of a character stream via a parsing expression grammar and the creation of an abstract syntax tree for the stream and partials.
It is built on top of the virtual machine provided by the package grammar::me::tcl and directly interprets the parsing expression grammar given to it. In other words, the grammar is not pre-compiled but used as is.
The grammar to be interpreted is taken from a container object following the interface specified by the package grammar::peg::container. Only the relevant parts are copied into the state of this package.
It should be noted that the package provides exactly one instance of the interpreter, and interpreting a second grammar requires the user to either abort or complete a running interpretation, or to put them into different Tcl interpreters.
Also of note is that the implementation assumes a pull-type handling of the input. In other words, the interpreter pulls characters from the input stream as it needs them. For usage in a push environment, i.e. where the environment pushes new characters as they come we have to put the engine into its own thread.
http://sourceforge.net/tracker/?group_id=12883. Please also report any ideas for enhancements you may have for either package and/or documentation.
grammar, expression, push down automaton, state, parsing expression, parsing expression grammar, context-free languages, parsing, transducer, LL(k), TDPL, top-down parsing languages, recursive descent, virtual machine, matching