## org.opencyc.uml.interpreter
Class Interpreter

    java.lang.Object
      |
      +--org.opencyc.uml.interpreter.Interpreter

public class Interpreter
extends java.lang.Object

Interprets a UML StateMachine.

Author:
  Stephen L. Reed

  Copyright 2001 Cycorp, Inc., license is open source GNU LGPL.

  the license

  www.opencyc.org

  OpenCyc at SourceForge

  THIS SOFTWARE AND KNOWLEDGE BASE CONTENT ARE PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENCYC ORGANIZATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND KNOWLEDGE BASE CONTENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Field Summary
`protected java.util.HashMap` `activeStates` a dictionary associating active states with tree nodes in the active state configuration
`protected java.util.HashMap` `allStates` a dictionary associating states with tree nodes in the all states configuration
`protected javax.swing.tree.DefaultTreeModel` `allStatesConfiguration` The state configuration of all states, which is a tree consisting of a top state at the root down to individual simple states at the leaves.
`protected Event` `currentEvent` the current event
`protected CycAccess` `cycAccess` the cyc access instance
`static int` `DEFAULT_VERBOSITY` The default verbosity of this object's output.
`protected org.apache.commons.collections.UnboundedFifoBuffer` `eventQueue` the event queue
`protected ExpressionEvaluator` `expressionEvaluator` an expression evaluator
`protected boolean` `isTerminated` indicates that the state machine has terminated
`protected java.util.ArrayList` `selectedTransitions` The list of selected transitions for firing.
`protected javax.swing.tree.DefaultTreeModel` `stateConfiguration` The (active) state configuration, which is a tree consisting of a top state at the root down to individual active simple states at the leaves.
`protected StateMachine` `stateMachine` the state machine
`protected StateMachineFactory` `stateMachineFactory` the state machine factory used to create and destroy events
`protected koala.dynamicjava.interpreter.TreeInterpreter` `treeInterpreter` TreeInterpreter that interprets java source code statements.
`protected int` `verbosity` Sets verbosity of this object's output.

Constructor Summary
`Interpreter()` Constructs a new Interpreter object.
`Interpreter(StateMachine stateMachine, CycAccess cycAccess)` Constructs a new Interpreter object given a state machine to interpret given the state machine to interpret
`Interpreter(StateMachine stateMachine, CycAccess cycAccess, int verbosity)` Constructs a new Interpreter object given the state machine to interpret.

Method Summary
`protected boolean` `currentEventEnables(Transition transition)` Determines whether the given transition can be triggered by the current event.
`java.lang.String` `displayAllStatesConfigurationTree()` Returns an indented string representation of the all states configuration tree.
`java.lang.String` `displayStateConfigurationTree()` Returns an indented string representation of the active state configuration tree.
`void` `enqueueEvent(Event event)` Adds an event to this state machine's event queue.
`protected void` `eventDispatcher()` Selects and dequeues event instances from the event queue for processing.
`protected void` `eventProcessor()` Processes dispatched event instances according to the general semantics of UML state machines and the specific form of this state machine.
`protected void` `fireSelectedTransitions()` Fires the selected transitions and runs the associated actions to completion.
`protected void` `formAllStatesConfiguration()` Forms the all states configuration for this state machine.
`protected void` `formAllStatesConfigurationFrom(State state, javax.swing.tree.DefaultMutableTreeNode parentNode)` Recursively forms the all states configuration from the given state and tree node.
`protected void` `formInitialStateConfiguration()` Forms the initial (active) state configuration for this state machine.
`protected void` `formStringTree(javax.swing.tree.DefaultMutableTreeNode stateTreeNode, int nestingDepth, java.lang.StringBuffer stringBuffer)` Recursively builds the indented string representation of the given state configuration tree.
`javax.swing.tree.DefaultMutableTreeNode` `getActiveStateConfigurationTreeNode(State state)` Returns the tree node associated with the given state in the active configuration state tree.
`java.util.HashMap` `getActiveStates()` Gets the dictionary of active states.
`javax.swing.tree.DefaultMutableTreeNode` `getActiveStatesRootedAt(State state)` Returns the Tree at the given active state.
`Event` `getCurrentEvent()` Gets the current event.
`State` `getParentState(State state)` Returns the parent state of the given state, or null if given the top state.
`StateMachine` `getStateMachine()` Gets the state machine
`StateMachineFactory` `getStateMachineFactory()` Gets the state machine factory used by this interpreter for event creation and destruction.
`protected java.lang.Object[]` `getStatesFromRootTo(State state)` Returns the list of states from the root down to the given state in the all states configuration tree.
`koala.dynamicjava.interpreter.TreeInterpreter` `getTreeInterpreter()` Gets the tree interpreter which interprets java statements
`int` `getVerbosity()` Gets the verbosity of this object's output.
`protected void` `initialize()` Initializes this object.
`protected void` `internalTransition(Transition transition)` Interprets the given internal transition.
`void` `interpret()` Interprets the state machine.
`static void` `main(java.lang.String[] args)` Executes the Interpreter application.
`protected void` `selectTransitions(java.util.Iterator transitions)` Selects transitions from the given state transition iterator.
`void` `setStateConfiguration(javax.swing.tree.DefaultTreeModel stateConfiguration)` Sets the active state configuration to the given configuration tree
`void` `setStateMachine(StateMachine stateMachine)` Sets the state machine
`void` `setVerbosity(int verbosity)` Sets verbosity of this object's output.
`void` `terminate()` Terminates the interpretation of the state machine.
`protected void` `transitionEnter(Transition transition)` Transitions into a state with the given transition.
`protected void` `transitionExit(Transition transition)` Transitions from a state with the given transition.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_VERBOSITY

    public static final int DEFAULT_VERBOSITY

  The default verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input.

### verbosity

    protected int verbosity

  Sets verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input.

### eventQueue

    protected org.apache.commons.collections.UnboundedFifoBuffer eventQueue

  the event queue

### currentEvent

    protected Event currentEvent

  the current event

### stateMachine

    protected StateMachine stateMachine

  the state machine

### allStatesConfiguration

    protected javax.swing.tree.DefaultTreeModel allStatesConfiguration

  The state configuration of all states, which is a tree consisting of a top state at the root down to individual simple states at the leaves. States other than the leaf states are composite states, and branches in the state configuration are concurrent composite states.

### allStates

    protected java.util.HashMap allStates

  a dictionary associating states with tree nodes in the all states configuration

### stateConfiguration

    protected javax.swing.tree.DefaultTreeModel stateConfiguration

  The (active) state configuration, which is a tree consisting of a top state at the root down to individual active simple states at the leaves. States other than the leaf states are composite states, and branches in the state configuration are concurrent composite states.

### activeStates

    protected java.util.HashMap activeStates

  a dictionary associating active states with tree nodes in the active state configuration

### selectedTransitions

    protected java.util.ArrayList selectedTransitions

  The list of selected transitions for firing. Each of these has an active source state, a matching trigger event and a guard expression which evaluates true.

### treeInterpreter

    protected koala.dynamicjava.interpreter.TreeInterpreter treeInterpreter

  TreeInterpreter that interprets java source code statements.

### expressionEvaluator

    protected ExpressionEvaluator expressionEvaluator

  an expression evaluator

### cycAccess

    protected CycAccess cycAccess

  the cyc access instance

### stateMachineFactory

    protected StateMachineFactory stateMachineFactory

  the state machine factory used to create and destroy events

### isTerminated

    protected boolean isTerminated

  indicates that the state machine has terminated

Constructor Detail

### Interpreter

    public Interpreter()

  Constructs a new Interpreter object.

### Interpreter

    public Interpreter(StateMachine stateMachine,
                       CycAccess cycAccess)
                throws java.io.IOException

  Constructs a new Interpreter object given a state machine to interpret given the state machine to interpret
  Parameters:
    `stateMachine` - the state machine to interpret
    `cycAccess` - the Cyc access instance

### Interpreter

    public Interpreter(StateMachine stateMachine,
                       CycAccess cycAccess,
                       int verbosity)
                throws java.io.IOException

  Constructs a new Interpreter object given the state machine to interpret.
  Parameters:
    `stateMachine` - the state machine to interpret
    `cycAccess` - the Cyc access instance
    `verbosity` - indicates the verbosity of the interpreter's diagnostic output - 9 = maximum, 0 = quiet

Method Detail

### initialize

    protected void initialize()
                       throws java.io.IOException

  Initializes this object.

### main

    public static void main(java.lang.String[] args)

  Executes the Interpreter application.
  Parameters:
    `args` - ignored

### terminate

    public void terminate()

  Terminates the interpretation of the state machine.

### interpret

    public void interpret()

  Interprets the state machine.

### formAllStatesConfiguration

    protected void formAllStatesConfiguration()

  Forms the all states configuration for this state machine.

### formAllStatesConfigurationFrom

    protected void formAllStatesConfigurationFrom(State state,
                                                  javax.swing.tree.DefaultMutableTreeNode parentNode)

  Recursively forms the all states configuration from the given state and tree node.
  Parameters:
    `state` - the given state to be placed into the all states configuration
    `parentNode` - the parent tree node in the all states configuration tree

### formInitialStateConfiguration

    protected void formInitialStateConfiguration()

  Forms the initial (active) state configuration for this state machine.

### eventProcessor

    protected void eventProcessor()

  Processes dispatched event instances according to the general semantics of UML state machines and the specific form of this state machine. Selects the transitions from active source states which are triggered by the current event.

### selectTransitions

    protected void selectTransitions(java.util.Iterator transitions)

  Selects transitions from the given state transition iterator.
  Parameters:
    `transitions` - the given state transition iterator

### currentEventEnables

    protected boolean currentEventEnables(Transition transition)

  Determines whether the given transition can be triggered by the current event.
  Parameters:
    `transition` - the given transition
  Returns:
    whether the given transition can be triggered by the current event

### eventDispatcher

    protected void eventDispatcher()

  Selects and dequeues event instances from the event queue for processing.

### fireSelectedTransitions

    protected void fireSelectedTransitions()

  Fires the selected transitions and runs the associated actions to completion.

### internalTransition

    protected void internalTransition(Transition transition)

  Interprets the given internal transition.
  Parameters:
    `transition` - the given internal transition

### transitionExit

    protected void transitionExit(Transition transition)

  Transitions from a state with the given transition.
  Parameters:
    `transition` - the given transition

### transitionEnter

    protected void transitionEnter(Transition transition)

  Transitions into a state with the given transition.
  Parameters:
    `transition` - the given transition

### enqueueEvent

    public void enqueueEvent(Event event)

  Adds an event to this state machine's event queue.
  Parameters:
    `event` - the event to add to this state machine's event queue

### getStateMachine

    public StateMachine getStateMachine()

  Gets the state machine
  Returns:
    the state machine

### setStateMachine

    public void setStateMachine(StateMachine stateMachine)

  Sets the state machine
  Parameters:
    `stateMachine` - the state machine

### getVerbosity

    public int getVerbosity()

  Gets the verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input. 0 --> quiet ... 9 -> maximum diagnostic input.
  Returns:
    the verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input

### setVerbosity

    public void setVerbosity(int verbosity)

  Sets verbosity of this object's output. 0 --> quiet ... 9 -> maximum diagnostic input.
  Parameters:
    `verbosity` - 0 --> quiet ... 9 -> maximum diagnostic input

### getCurrentEvent

    public Event getCurrentEvent()

  Gets the current event.
  Returns:
    the current event

### getActiveStatesRootedAt

    public javax.swing.tree.DefaultMutableTreeNode getActiveStatesRootedAt(State state)

  Returns the Tree at the given active state.
  Parameters:
    `state` - the given active state
  Returns:
    the sub tree of active states rooted at the given active state

### getStatesFromRootTo

    protected java.lang.Object[] getStatesFromRootTo(State state)

  Returns the list of states from the root down to the given state in the all states configuration tree.
  Parameters:
    `state` - the given state
  Returns:
    the list of states from the root down to the given state in the all states configuration tree

### getActiveStateConfigurationTreeNode

    public javax.swing.tree.DefaultMutableTreeNode getActiveStateConfigurationTreeNode(State state)

  Returns the tree node associated with the given state in the active configuration state tree.
  Parameters:
    `state` - the given state
  Returns:
    the tree node associated with the given state in the active configuration state tree

### getTreeInterpreter

    public koala.dynamicjava.interpreter.TreeInterpreter getTreeInterpreter()

  Gets the tree interpreter which interprets java statements
  Returns:
    the tree interpreter which interprets java statements

### displayAllStatesConfigurationTree

    public java.lang.String displayAllStatesConfigurationTree()

  Returns an indented string representation of the all states configuration tree.

### displayStateConfigurationTree

    public java.lang.String displayStateConfigurationTree()

  Returns an indented string representation of the active state configuration tree.

### formStringTree

    protected void formStringTree(javax.swing.tree.DefaultMutableTreeNode stateTreeNode,
                                  int nestingDepth,
                                  java.lang.StringBuffer stringBuffer)

  Recursively builds the indented string representation of the given state configuration tree.
  Parameters:
    `stateTreeNode` - the current tree node
    `nestingDepth` - the nesting depth
    `stringBuffer` - the buffer containing the partially completed string representation of the state configuration tree

### getParentState

    public State getParentState(State state)

  Returns the parent state of the given state, or null if given the top state.
  Parameters:
    `state` - the given state
  Returns:
    the parent state of this state, or null if given the top state

### getStateMachineFactory

    public StateMachineFactory getStateMachineFactory()

  Gets the state machine factory used by this interpreter for event creation and destruction.
  Returns:
    the state machine factory used by this interpreter for event creation and destruction

### getActiveStates

    public java.util.HashMap getActiveStates()

  Gets the dictionary of active states.
  Returns:
    the dictionary of active states

### setStateConfiguration

    public void setStateConfiguration(javax.swing.tree.DefaultTreeModel stateConfiguration)

  Sets the active state configuration to the given configuration tree
  Parameters:
    `stateConfiguration` - the given configuration tree, or null if terminating the state machine