Provided by: tcllib_1.14-dfsg-1_all bug


       page_util_flow - page dataflow/treewalker utility


       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...



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


       ::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

              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.


       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

       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.


       This document, will undoubtedly contain bugs and other problems.  Please  report  such  in
       the        category        page        of        the        Tcllib       SF       Trackers
       [].   Please  also  report  any  ideas   for
       enhancements you may have.


       dataflow, graph walking, page, parser generator, text processing, tree walking


       Page Parser Generator


       Copyright (c) 2007 Andreas Kupries <>