edu.rice.cs.dynamicjava.interpreter
Class StatementEvaluator

java.lang.Object
  extended by koala.dynamicjava.tree.visitor.AbstractVisitor<StatementEvaluator.Result>
      extended by edu.rice.cs.dynamicjava.interpreter.StatementEvaluator
All Implemented Interfaces:
Visitor<StatementEvaluator.Result>

public class StatementEvaluator
extends AbstractVisitor<StatementEvaluator.Result>

Evaluates the given statement, assumed to have been processed by the StatementChecker without any errors. Exceptions that occur during interpretation are wrapped in EvaluatorExceptions; these, in turn, are wrapped in WrappedExceptions so that they can be thrown within visitor methods. Changes in control flow are signalled by throwing StatementEvaluator.ControlFlowExceptions.


Nested Class Summary
static class StatementEvaluator.BreakException
           
static class StatementEvaluator.ContinueException
           
static class StatementEvaluator.ControlFlowException
           
static class StatementEvaluator.LabelControlException
           
static class StatementEvaluator.Result
          Wraps an RuntimeBindings and an optional value.
static class StatementEvaluator.ReturnException
           
 
Constructor Summary
StatementEvaluator(RuntimeBindings bindings, Options opt)
           
 
Method Summary
 StatementEvaluator.Result evaluateSequence(java.lang.Iterable<? extends Node> nodes)
           
 StatementEvaluator.Result visit(AssertStatement node)
          Visits an AssertStatement
 StatementEvaluator.Result visit(BlockStatement node)
          Visits a BlockStatement
 StatementEvaluator.Result visit(BreakStatement node)
          Visits a BreakStatement
 StatementEvaluator.Result visit(ClassDeclaration node)
          Visits a ClassDeclaration
 StatementEvaluator.Result visit(ConstructorDeclaration node)
          Visits a ConstructorDeclaration
 StatementEvaluator.Result visit(ContinueStatement node)
          Visits a ContinueStatement
 StatementEvaluator.Result visit(DoStatement node)
          Visits a DoStatement
 StatementEvaluator.Result visit(EmptyStatement node)
          Visits an EmptyStatement
 StatementEvaluator.Result visit(ExpressionStatement node)
          Visits an ExpressionStatement
 StatementEvaluator.Result visit(ForEachStatement node)
          Visits a ForEachStatement
 StatementEvaluator.Result visit(ForStatement node)
          Visits a ForStatement
 StatementEvaluator.Result visit(IfThenElseStatement node)
          Visits a IfThenElseStatement
 StatementEvaluator.Result visit(IfThenStatement node)
          Visits a IfThenStatement
 StatementEvaluator.Result visit(ImportDeclaration node)
          Visits an ImportDeclaration
 StatementEvaluator.Result visit(InterfaceDeclaration node)
          Visits a InterfaceDeclaration
 StatementEvaluator.Result visit(LabeledStatement node)
          Visits a LabeledStatement
 StatementEvaluator.Result visit(MethodDeclaration node)
          Visits a MethodDeclaration
 StatementEvaluator.Result visit(PackageDeclaration node)
          Visits an PackageDeclaration
 StatementEvaluator.Result visit(ReturnStatement node)
          Visits a ReturnStatement
 StatementEvaluator.Result visit(SwitchStatement node)
          Visits a SwitchStatement
 StatementEvaluator.Result visit(SynchronizedStatement node)
          Visits a SynchronizedStatement
 StatementEvaluator.Result visit(ThrowStatement node)
          Visits a ThrowStatement
 StatementEvaluator.Result visit(TryStatement node)
          Visits a TryStatement
 StatementEvaluator.Result visit(VariableDeclaration node)
          Visits a VariableDeclaration
 StatementEvaluator.Result visit(WhileStatement node)
          Visits a WhileStatement
 
Methods inherited from class koala.dynamicjava.tree.visitor.AbstractVisitor
defaultCase, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StatementEvaluator

public StatementEvaluator(RuntimeBindings bindings,
                          Options opt)
Method Detail

evaluateSequence

public StatementEvaluator.Result evaluateSequence(java.lang.Iterable<? extends Node> nodes)

visit

public StatementEvaluator.Result visit(PackageDeclaration node)
Description copied from class: AbstractVisitor
Visits an PackageDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ImportDeclaration node)
Description copied from class: AbstractVisitor
Visits an ImportDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ClassDeclaration node)
Description copied from class: AbstractVisitor
Visits a ClassDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(InterfaceDeclaration node)
Description copied from class: AbstractVisitor
Visits a InterfaceDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ConstructorDeclaration node)
Description copied from class: AbstractVisitor
Visits a ConstructorDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(MethodDeclaration node)
Description copied from class: AbstractVisitor
Visits a MethodDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(VariableDeclaration node)
Description copied from class: AbstractVisitor
Visits a VariableDeclaration

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(EmptyStatement node)
Description copied from class: AbstractVisitor
Visits an EmptyStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ExpressionStatement node)
Description copied from class: AbstractVisitor
Visits an ExpressionStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(WhileStatement node)
Description copied from class: AbstractVisitor
Visits a WhileStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ForEachStatement node)
Description copied from class: AbstractVisitor
Visits a ForEachStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ForStatement node)
Description copied from class: AbstractVisitor
Visits a ForStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(DoStatement node)
Description copied from class: AbstractVisitor
Visits a DoStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(SwitchStatement node)
Description copied from class: AbstractVisitor
Visits a SwitchStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(LabeledStatement node)
Description copied from class: AbstractVisitor
Visits a LabeledStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(SynchronizedStatement node)
Description copied from class: AbstractVisitor
Visits a SynchronizedStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(BreakStatement node)
Description copied from class: AbstractVisitor
Visits a BreakStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ContinueStatement node)
Description copied from class: AbstractVisitor
Visits a ContinueStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(TryStatement node)
Description copied from class: AbstractVisitor
Visits a TryStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ThrowStatement node)
Description copied from class: AbstractVisitor
Visits a ThrowStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(ReturnStatement node)
Description copied from class: AbstractVisitor
Visits a ReturnStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(IfThenStatement node)
Description copied from class: AbstractVisitor
Visits a IfThenStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(IfThenElseStatement node)
Description copied from class: AbstractVisitor
Visits a IfThenElseStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(AssertStatement node)
Description copied from class: AbstractVisitor
Visits an AssertStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit

visit

public StatementEvaluator.Result visit(BlockStatement node)
Description copied from class: AbstractVisitor
Visits a BlockStatement

Specified by:
visit in interface Visitor<StatementEvaluator.Result>
Overrides:
visit in class AbstractVisitor<StatementEvaluator.Result>
Parameters:
node - the node to visit