page_util_flow(n)           Parser generator tools           page_util_flow(n)



______________________________________________________________________________

NAME
       page_util_flow - page dataflow/treewalker utility

SYNOPSIS
       package require page::util::flow  ?0.1?

       package require snit

       ::page::util::flow start flowvar nodevar script

       flow visit node

       flow visitl nodelist

       flow visita node...

_________________________________________________________________

DESCRIPTION
       This package provides a single utility command for easy dataflow based
       manipulation of arbitrary data structures, especially abstract syntax
       trees.

API
       ::page::util::flow start flowvar nodevar script
              This command contains the core logic to drive the walking of an
              arbitrary data structure which can partitioned into separate
              parts. Examples of such structures are trees and graphs.

              The command makes no assumptions at all about the API of the
              structure to be walked, except that that its parts, here called
              nodes, are identified by strings. These strings are taken as is,
              from the arguments, and the body, and handed back to the body,
              without modification.

              Access to the actual data structure, and all decisions regarding
              which nodes to visit in what order are delegated to the body of
              the loop, i.e. the script.

              The body is invoked first for the nodes in the start-set
              specified via start), and from then on for the nodes the body
              has requested to be visited. The command stops when the set of
              nodes to visit becomes empty. Note that a node can be visited
              more than once. The body has complete control about this.

              The body is invoked in the context of the caller. The variable
              named by nodevar will be set to the current node, and the
              variable named by flowvar will be set to the command of the flow
              object through which the body can request the nodes to visit
              next. The API provided by this object is described in the next
              section, FLOW API.

              Note that the command makes no promises regarding the order in
              which nodes are visited, excpt that the nodes requested to be
              visited by the current iteration will be visited afterward, in
              some order.

FLOW API
       This section describes the API provided by the flow object made
       accessible to the body script of ::page::util::flow.

       flow visit node
              Invoking this method requests that the node n is visited after
              the current iteration.

       flow visitl nodelist
              Invoking this method requests that all the nodes found in the
              list nodelist are visited after the current iteration.

       flow visita node...
              This is the variadic arguments form of the method visitl, see
              above.

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
       dataflow, graph walking, page, parser generator, text processing, tree
       walking

CATEGORY
       Page Parser Generator

COPYRIGHT
       Copyright (c) 2007 Andreas Kupries <andreas_kupries@users.sourceforge.net>




page                                  1.0                    page_util_flow(n)
