bionic (3) page_util_flow.3tcl.gz

Provided by: tcllib_1.19-dfsg-2_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 (c) 2007 Andreas Kupries <andreas_kupries@users.sourceforge.net>