dexec(3)



grammar::fa::dexec(3tFinite automaton operations and ugrammar::fa::dexec(3tcl)

______________________________________________________________________________

NAME
       grammar::fa::dexec - Execute deterministic finite automatons

SYNOPSIS
       package require Tcl  8.4

       package require snit

       package require grammar::fa::dexec  ?0.2?

       ::grammar::fa::dexec daName fa ?-any any? ?-command cmdprefix?

       daName option ?arg arg ...?

       daName destroy

       daName put symbol

       daName reset

       daName state

       cmdprefix error code message

       cmdprefix final stateid

       cmdprefix reset

       cmdprefix state stateid

______________________________________________________________________________

DESCRIPTION
       This  package provides a class for executors constructed from determin-
       istic finite automatons (DFA). Executors are objects which are given  a
       string  of symbols in a piecemal fashion, perform state transitions and
       report back when they enter a final state, or find an error in the  in-
       put.  For the actual creation of the DFAs the executors are based on we
       have the packages grammar::fa and grammar::fa::op.

       The objects follow a push model. Symbols are pushed into the  executor,
       and  when something important happens, i.e. error occurs, a state tran-
       sition, or a final state is entered this will be reported via the call-
       back  specified  via  the option -command. Note that conversion of this
       into a pull model where the environment retrieves messages from the ob-
       ject  and the object uses a callback to ask for more symbols is a triv-
       ial thing.

       Side note: The  acceptor  objects  provided  by  grammar::fa::dacceptor
       could  have been implemented on top of the executors provided here, but
       were not, to get a bit more performance (we avoid a  number  of  method
       calls and the time required for their dispatch).

API
       The package exports the API described here.

       ::grammar::fa::dexec daName fa ?-any any? ?-command cmdprefix?
              Creates  a  new deterministic executor with an associated global
              Tcl command whose name is daName. This command may  be  used  to
              invoke  various operations on the executor. It has the following
              general form:

              daName option ?arg arg ...?
                     Option and the args determine the exact behavior  of  the
                     command.  See  section EXECUTOR METHODS for more explana-
                     tions.

                     The executor will be based on  the  deterministic  finite
                     automaton stored in the object fa. It will keep a copy of
                     the relevant data of the FA in its own storage, in a form
                     easy  to  use  for  its  purposes.  This  also means that
                     changes made to the fa after the construction of the  ex-
                     ecutor will not influence the executor.

                     If any has been specified, then the executor will convert
                     all symbols in the input which are unknown to the base FA
                     to that symbol before proceeding with the processing.

EXECUTOR METHODS
       All executors provide the following methods for their manipulation:

       daName destroy
              Destroys  the automaton, including its storage space and associ-
              ated command.

       daName put symbol
              Takes the current state of the executor and the symbol and  per-
              forms  the  appropriate state transition. Reports any errors en-
              countered via the command callback, as well as entering a  final
              state of the underlying FA.

              When an error is reported all further invokations of put will do
              nothing, until the error condition has been cleared via  an  in-
              vokation of method reset.

       daName reset
              Unconditionally  sets  the  executor into the start state of the
              underlying FA. This also clears any  error  condition   put  may
              have encountered.

       daName state
              Returns  the  current state of the underlying FA. This allow for
              introspection without the need to pass data  from  the  callback
              command.

EXECUTOR CALLBACK
       The  callback  command  cmdprefix  given  to an executor via the option
       -command will be executed by the object at the global level, using  the
       syntax described below. Note that cmdprefix is not simply the name of a
       command, but a full command prefix. In other words it may contain addi-
       tional fixed argument words beyond the command word.

       cmdprefix error code message
              The  executor  has  encountered an error, and message contains a
              human-readable text explaining the nature of the  problem.   The
              code  on  the  other hand is a fixed machine-readable text.  The
              following error codes can be generated by executor objects.

              BADSYM An unknown symbol was found in the input. This can happen
                     if and only if no -any symbol was specified.

              BADTRANS
                     The  underlying FA has no transition for the current com-
                     bination of input symbol and state. In other  words,  the
                     executor  was  not  able  to compute a new state for this
                     combination.

       cmdprefix final stateid
              The executor has entered the final state stateid.

       cmdprefix reset
              The executor was reset.

       cmdprefix state stateid
              The FA changed state due to a transition.  stateid  is  the  new
              state.

EXAMPLES
BUGS, IDEAS, FEEDBACK
       This  document,  and the package it describes, will undoubtedly contain
       bugs and other problems.  Please report such in the category grammar_fa
       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 out-
       put 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
       automaton,  execution,  finite automaton, grammar, parsing, regular ex-
       pression, regular grammar, regular languages,  running,  state,  trans-
       ducer

CATEGORY
       Grammars and finite automata

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

tcllib                                0.2             grammar::fa::dexec(3tcl)

Man(1) output converted with man2html
list of all man pages