grammar::peg::interp - Interpreter for parsing expression grammars
TABLE OF
CONTENTS
SYNOPSIS
DESCRIPTION
THE
INTERPRETER API
KEYWORDS
COPYRIGHT
package require Tcl 8.4
package require grammar::mengine ?0.1?
package require grammar::peg::interp ?0.1?
|
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.
The package exports the following API
LL(k) , TDPL , context-free languages , expression , grammar , matching , parsing , parsing expression , parsing expression grammar , push down automaton , recursive descent , state , top-down parsing languages , transducer , virtual machine
Copyright © 2005 Andreas Kupries
<andreas_kupries@users.sourceforge.net>