NAME¶
page_util_peg - page PEG transformation utilities
SYNOPSIS¶
package require
page::util::peg ?0.1?
package require
snit
::page::util::peg::symbolNodeOf tree node
::page::util::peg::symbolOf tree node
::page::util::peg::updateUndefinedDueRemoval tree
::page::util::peg::flatten treequery tree
::page::util::peg::getWarnings tree
::page::util::peg::printWarnings msg
::page::util::peg::peOf tree eroot
::page::util::peg::printTclExpr pe
DESCRIPTION¶
This package provides a few common operations to PEG transformations. They
assume a
Normalized PE Grammar Tree as input, see the package
page::util::norm::peg, possibly augmented with attributes coming from
transformations not in conflict with the base definition.
API¶
- ::page::util::peg::symbolNodeOf tree
node
- Given an arbitrary expression node in the AST
tree it determines the node (itself or an ancestor) containing the
name of the nonterminal symbol the node belongs to, and returns its id.
The result is either the root of the tree (for the start expression), or a
definition node.
- ::page::util::peg::symbolOf tree
node
- As ::page::util::peg::symbolNodeOf, but returns the
symbol name instead of the node.
- ::page::util::peg::updateUndefinedDueRemoval
tree
- The removal of nodes in the AST tree can cause
symbols to lose one or more users.
A used by B and C,
B is reachable,
C is not,
so A now loses the node in the expression for C calling it,
or rather, not calling it anymore.
- This command updates the cross-references and which
nonterminals are now undefined.
- ::page::util::peg::flatten treequery
tree
- This commands flattens nested sequence and choice operators
in the AST tree, re-using the treeql object treequery
to run the query determining which nodes to cut.
- ::page::util::peg::getWarnings tree
- This command looks at the attributes of the AST tree
for problems with the grammar and issues warnings. They do not prevent us
from writing the grammar, but still represent problems with it the user
should be made aware of.
The result of the command is a dictionary mapping nonterminal names to their
associated warnings.
- ::page::util::peg::printWarnings msg
- The argument of the command is a dictionary mapping
nonterminal names to their associated warnings, as generated by, for
example, the command ::page::util::peg::getWarnings.
The warnings contained therein are formatted and then printed via the log
command page_info. This means that this command can be used only
from within a plugin managed by the package page::pluginmgr.
- ::page::util::peg::peOf tree
eroot
- This command converts the parsing expression starting at
the node eroot in the AST tree into a nested list. The exact
syntax of this list specified by the package grammar::peg.
- ::page::util::peg::printTclExpr pe
- This command converts the parsing expression contained in
the nested list pe into a Tcl string which can be placed into a Tcl
script. See the package grammar::peg for the exact syntax of
pe.
BUGS, IDEAS, FEEDBACK¶
This document, will undoubtedly contain bugs and other problems. Please report
such in the category
page of the
Tcllib SF Trackers
[
http://sourceforge.net/tracker/?group_id=12883]. Please also report any ideas
for enhancements you may have.
KEYWORDS¶
PEG, page, parser generator, parsing expression grammar, text processing,
transformation
CATEGORY¶
Page Parser Generator
COPYRIGHT¶
Copyright (c) 2007 Andreas Kupries <andreas_kupries@users.sourceforge.net>