public class ParseTreeEvaluator extends AbstractParseTreeVisitor
ASTPtRootNode
Modifier and Type | Field and Description |
---|---|
protected Token |
_evaluatedChildToken |
protected ParseTreeTypeInference |
_typeInference |
Constructor and Description |
---|
ParseTreeEvaluator() |
Modifier and Type | Method and Description |
---|---|
protected void |
_assert(boolean flag,
ASTPtRootNode node,
java.lang.String message)
Assert that the given boolean value, which describes the given
parse tree node, is true.
|
protected Token[] |
_evaluateAllChildren(ASTPtRootNode node)
Loop through all of the children of this node,
visiting each one of them; this will cause their token
value to be determined.
|
protected Token |
_evaluateArrayIndex(ASTPtRootNode node,
Token value,
Token index)
Evaluate the array index operation represented by the given node.
|
protected Token |
_evaluateChild(ASTPtRootNode node,
int i)
Evaluate the child with the given index of the given node.
|
protected Token |
_evaluateMatrixIndex(ASTPtRootNode node,
Token value,
Token rowIndex,
Token columnIndex)
Evaluate the Matrix index operation represented by the given node.
|
protected Token |
_functionCall(java.lang.String functionName,
Type[] argTypes,
java.lang.Object[] argValues)
Evaluate the specified function.
|
protected Token |
_methodCall(java.lang.String methodName,
Type[] argTypes,
java.lang.Object[] argValues)
Evaluate the specified method.
|
protected void |
_trace(java.lang.String string)
Add a record to the current trace corresponding to the given message.
|
protected void |
_traceEnter(ASTPtRootNode node)
Add a record to the current trace corresponding to the start
of the evaluation of the given node.
|
protected void |
_traceLeave(ASTPtRootNode node)
Add a record to the current trace corresponding to the completion
of the evaluation of the given node.
|
Token |
evaluateParseTree(ASTPtRootNode node)
Evaluate the parse tree with the specified root node.
|
Token |
evaluateParseTree(ASTPtRootNode node,
ParserScope scope)
Evaluate the parse tree with the specified root node using
the specified scope to resolve the values of variables.
|
java.lang.String |
traceParseTreeEvaluation(ASTPtRootNode node,
ParserScope scope)
Trace the evaluation of the parse tree with the specified root
node using the specified scope to resolve the values of
variables.
|
void |
visitArrayConstructNode(ASTPtArrayConstructNode node)
Construct an ArrayToken that contains the tokens from the
children of the specified node.
|
void |
visitBitwiseNode(ASTPtBitwiseNode node)
Evaluate a bitwise operator on the children of the specified
node, where the particular operator is property of the node.
|
void |
visitFunctionalIfNode(ASTPtFunctionalIfNode node)
Evaluate the first child, and depending on its (boolean) result,
evaluate either the second or the third child.
|
void |
visitFunctionApplicationNode(ASTPtFunctionApplicationNode node)
Apply a function to the children of the specified node.
|
void |
visitFunctionDefinitionNode(ASTPtFunctionDefinitionNode node)
Define a function, where the children specify the argument types
and the expression.
|
void |
visitLeafNode(ASTPtLeafNode node)
Evaluate a numeric constant or an identifier.
|
void |
visitLogicalNode(ASTPtLogicalNode node)
Evaluate a logical AND or OR on the children of the specified node.
|
void |
visitMatrixConstructNode(ASTPtMatrixConstructNode node)
Construct a matrix containing the children nodes.
|
void |
visitMethodCallNode(ASTPtMethodCallNode node)
Apply a method to the children of the specified node, where the
first child is the object on which the method is defined and the
rest of the children are arguments.
|
void |
visitPowerNode(ASTPtPowerNode node)
Evaluate the power operator on the children of the specified node.
|
void |
visitProductNode(ASTPtProductNode node)
Multiply the children of the specified node.
|
void |
visitRecordConstructNode(ASTPtRecordConstructNode node)
Construct a record by assigning the fields values given by
the children nodes.
|
void |
visitRelationalNode(ASTPtRelationalNode node) |
void |
visitShiftNode(ASTPtShiftNode node)
Apply a shift operator to the children of the specified node.
|
void |
visitSumNode(ASTPtSumNode node)
Apply a sum operator to the children of the specified node.
|
void |
visitUnaryNode(ASTPtUnaryNode node)
Apply a unary operator to the single child of the specified node.
|
void |
visitUnionConstructNode(ASTPtUnionConstructNode node)
Construct a union by assigning the label value given by
the children nodes.
|
_unsupportedVisitException, _visitAllChildren, _visitChild, visitAssignmentNode
protected Token _evaluatedChildToken
protected ParseTreeTypeInference _typeInference
public Token evaluateParseTree(ASTPtRootNode node) throws IllegalActionException
node
- The root of the parse tree.IllegalActionException
- If an evaluation error occurs.public Token evaluateParseTree(ASTPtRootNode node, ParserScope scope) throws IllegalActionException
node
- The root of the parse tree.scope
- The scope for evaluation.IllegalActionException
- If an error occurs during
evaluation.public java.lang.String traceParseTreeEvaluation(ASTPtRootNode node, ParserScope scope) throws IllegalActionException
node
- The root of the parse tree.scope
- The scope for evaluation.IllegalActionException
- If an error occurs during
evaluation.public void visitArrayConstructNode(ASTPtArrayConstructNode node) throws IllegalActionException
visitArrayConstructNode
in interface ParseTreeVisitor
visitArrayConstructNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitBitwiseNode(ASTPtBitwiseNode node) throws IllegalActionException
visitBitwiseNode
in interface ParseTreeVisitor
visitBitwiseNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitFunctionApplicationNode(ASTPtFunctionApplicationNode node) throws IllegalActionException
MatlabUtilities.evaluate(String, Set, ParserScope)
.visitFunctionApplicationNode
in interface ParseTreeVisitor
visitFunctionApplicationNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitFunctionDefinitionNode(ASTPtFunctionDefinitionNode node) throws IllegalActionException
visitFunctionDefinitionNode
in interface ParseTreeVisitor
visitFunctionDefinitionNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitFunctionalIfNode(ASTPtFunctionalIfNode node) throws IllegalActionException
visitFunctionalIfNode
in interface ParseTreeVisitor
visitFunctionalIfNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitLeafNode(ASTPtLeafNode node) throws IllegalActionException
visitLeafNode
in interface ParseTreeVisitor
visitLeafNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitLogicalNode(ASTPtLogicalNode node) throws IllegalActionException
visitLogicalNode
in interface ParseTreeVisitor
visitLogicalNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitMatrixConstructNode(ASTPtMatrixConstructNode node) throws IllegalActionException
visitMatrixConstructNode
in interface ParseTreeVisitor
visitMatrixConstructNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitMethodCallNode(ASTPtMethodCallNode node) throws IllegalActionException
visitMethodCallNode
in interface ParseTreeVisitor
visitMethodCallNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitPowerNode(ASTPtPowerNode node) throws IllegalActionException
visitPowerNode
in interface ParseTreeVisitor
visitPowerNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitProductNode(ASTPtProductNode node) throws IllegalActionException
visitProductNode
in interface ParseTreeVisitor
visitProductNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitRecordConstructNode(ASTPtRecordConstructNode node) throws IllegalActionException
visitRecordConstructNode
in interface ParseTreeVisitor
visitRecordConstructNode
in class AbstractParseTreeVisitor
node
- The record constructor node.IllegalActionException
- If an evaluation error occurs.public void visitRelationalNode(ASTPtRelationalNode node) throws IllegalActionException
visitRelationalNode
in interface ParseTreeVisitor
visitRelationalNode
in class AbstractParseTreeVisitor
IllegalActionException
public void visitShiftNode(ASTPtShiftNode node) throws IllegalActionException
visitShiftNode
in interface ParseTreeVisitor
visitShiftNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitSumNode(ASTPtSumNode node) throws IllegalActionException
visitSumNode
in interface ParseTreeVisitor
visitSumNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
- If an evaluation error occurs.public void visitUnaryNode(ASTPtUnaryNode node) throws IllegalActionException
visitUnaryNode
in interface ParseTreeVisitor
visitUnaryNode
in class AbstractParseTreeVisitor
node
- The specified node.IllegalActionException
public void visitUnionConstructNode(ASTPtUnionConstructNode node) throws IllegalActionException
visitUnionConstructNode
in interface ParseTreeVisitor
visitUnionConstructNode
in class AbstractParseTreeVisitor
node
- The union constructor node.IllegalActionException
- If an evaluation error occurs.protected void _assert(boolean flag, ASTPtRootNode node, java.lang.String message)
flag
- The flag that is asserted to be true.node
- The node on which the assertion is asserted.message
- The message to include in the exception.InternalErrorException
- If the assertion is violated.
Note that this is a runtime exception, so it need not be declared
explicitly.protected Token[] _evaluateAllChildren(ASTPtRootNode node) throws IllegalActionException
node
- The node whose children are evaluated.IllegalActionException
- If an evaluation error occurs.protected Token _evaluateArrayIndex(ASTPtRootNode node, Token value, Token index) throws IllegalActionException
node
- The node that caused this method to be called.value
- The token that is being indexed into, which must
be an ArrayToken.index
- The index, which must be an integer token.IllegalActionException
- If an evaluation error occurs.protected Token _evaluateChild(ASTPtRootNode node, int i) throws IllegalActionException
node
- The nodei
- The index of the nodeIllegalActionException
- If an evaluation error occurs.protected Token _evaluateMatrixIndex(ASTPtRootNode node, Token value, Token rowIndex, Token columnIndex) throws IllegalActionException
node
- The node that caused this method to be called.value
- The token that is being indexed into, which must
be a MatrixToken.rowIndex
- The row index, which must be an integer token.columnIndex
- The column index, which must be an integer token.IllegalActionException
- If an evaluation error occurs.protected Token _functionCall(java.lang.String functionName, Type[] argTypes, java.lang.Object[] argValues) throws IllegalActionException
functionName
- The function name.argTypes
- An array of argument types.argValues
- An array of argument values.IllegalActionException
- If an evaluation error occurs.protected Token _methodCall(java.lang.String methodName, Type[] argTypes, java.lang.Object[] argValues) throws IllegalActionException
methodName
- The method name.argTypes
- An array of argument types.argValues
- An array of argument values.IllegalActionException
- If an evaluation error occurs.protected void _trace(java.lang.String string)
string
- The stringprotected void _traceEnter(ASTPtRootNode node)
node
- The node.protected void _traceLeave(ASTPtRootNode node)
node
- The node.