


grammar::fa::dFinite)automaton operations angrammar::fa::dexec(n)


______________________________________________________________________________

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
       input.   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
       object  and  the  object  uses  a callback to ask for more symbols is a
       trivial 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).



grammar_fa                     0.2                              1





grammar::fa::dFinite)automaton operations angrammar::fa::dexec(n)


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
                     executor 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
              encountered 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
              invokation 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.





grammar_fa                     0.2                              2





grammar::fa::dFinite)automaton operations angrammar::fa::dexec(n)


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       SF       Trackers       [http://source-
       forge.net/tracker/?group_id=12883].  Please also report any  ideas  for
       enhancements you may have for either package and/or documentation.

KEYWORDS
       automaton,  execution,  finite  automaton,  grammar,  parsing,  regular
       expression, 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>




grammar_fa                     0.2                              3





grammar::fa::dFinite)automaton operations angrammar::fa::dexec(n)



























































grammar_fa                     0.2                              4


