Provided by: tcllib_1.21+dfsg-1_all bug

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, and the package it describes,  will  undoubtedly  contain  bugs  and  other
       problems.    Please   report   such   in   the   category  page  of  the  Tcllib  Trackers
       [http://core.tcl.tk/tcllib/reportlist].  Please also report any ideas for enhancements you
       may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments can
       be made by going to the Edit form of the ticket immediately after its creation,  and  then
       using the left-most button in the secondary navigation bar.

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>