Package: tcllib, Version: CVS HEAD
grammar::peg::interp -
Interpreter for parsing expression grammars
package require Tcl 8.4 package require grammar::mengine ? 0.1 ? package require grammar::peg::interp ? 0.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::mengine 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.
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