junc.ast
Class FieldExpNode

java.lang.Object
  |
  +--antlr.BaseAST
        |
        +--antlr.CommonAST
              |
              +--junc.ast.JUnCASTNode
                    |
                    +--junc.ast.ExpressionNode
                          |
                          +--junc.ast.FieldExpNode
All Implemented Interfaces:
antlr.collections.AST, java.io.Serializable

public class FieldExpNode
extends ExpressionNode

See Also:
Serialized Form

Field Summary
 junc.ast.FieldDeclarationNode astNode
          A reference to the AST node.
 int index
          The index in the fields vector where the name was found.
 junc.ast.ExpressionNode left
          A ref to the expression to the left of the dot.
 junc.ast.MethodDeclarationNode methodNode
          A ref to the AST node of the method where the field is being accessed.
 junc.symtab.Symbol name
          Name of the field being accessed.
 
Fields inherited from class junc.ast.ExpressionNode
falseList, leftValue, statementExpression, trueList, type
 
Fields inherited from class antlr.BaseAST
down, right
 
Constructor Summary
FieldExpNode(junc.ast.ExpressionNode left, java.lang.String name, junc.ast.MethodDeclarationNode mnode)
           
FieldExpNode(junc.ast.ExpressionNode left, junc.symtab.Symbol name, junc.ast.MethodDeclarationNode mnode)
           
 
Method Summary
 java.math.BigDecimal evaluate(junc.symtab.SymbolTable stable)
          Describe evaluate method here.
 void translate(org.apache.bcel.generic.ClassGen classGen, org.apache.bcel.generic.MethodGen methodGen)
          Describe translate method here.
 org.apache.bcel.generic.BranchHandle translateSynthesized(org.apache.bcel.generic.ClassGen classGen, org.apache.bcel.generic.MethodGen methodGen)
          First translate the expression and then synthesize it.
 junc.types.JUnCBaseType typeCheck(junc.symtab.SymbolTable stable)
          Describe typeCheck method here.
 
Methods inherited from class junc.ast.ExpressionNode
addFalseList, addTrueList, appendToFalseList, appendToTrueList, backPatch, desynthesize, evaluateExp, leftValue, lookupPrimop, superExp, synthesize, thisExp, thisOrSuperExp, type, typeExp, variableExp
 
Methods inherited from class junc.ast.JUnCASTNode
getColumnNumber, getLineNumber, setColumnNumber, setLineNumber
 
Methods inherited from class antlr.CommonAST
getText, getType, initialize, initialize, initialize, setText, setType
 
Methods inherited from class antlr.BaseAST
addChild, decode, encode, equals, equalsList, equalsListPartial, equalsTree, equalsTreePartial, findAll, findAllPartial, getFirstChild, getNextSibling, removeChildren, setFirstChild, setNextSibling, setVerboseStringConversion, toString, toStringList, toStringTree, xmlSerialize, xmlSerializeNode, xmlSerializeRootClose, xmlSerializeRootOpen
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

name

public junc.symtab.Symbol name
Name of the field being accessed.


left

public junc.ast.ExpressionNode left
A ref to the expression to the left of the dot. Must be of some ClassType.


astNode

public junc.ast.FieldDeclarationNode astNode
A reference to the AST node.


index

public int index
The index in the fields vector where the name was found.


methodNode

public junc.ast.MethodDeclarationNode methodNode
A ref to the AST node of the method where the field is being accessed. Null if called from a static initializer.

Constructor Detail

FieldExpNode

public FieldExpNode(junc.ast.ExpressionNode left,
                    junc.symtab.Symbol name,
                    junc.ast.MethodDeclarationNode mnode)

FieldExpNode

public FieldExpNode(junc.ast.ExpressionNode left,
                    java.lang.String name,
                    junc.ast.MethodDeclarationNode mnode)
Method Detail

evaluate

public java.math.BigDecimal evaluate(junc.symtab.SymbolTable stable)
                              throws NotConstantException
Description copied from class: ExpressionNode
Describe evaluate method here.

Overrides:
evaluate in class ExpressionNode
Parameters:
stable - a SymbolTable value
Returns:
a BigDecimal value
Throws:
NotConstantException - if an error occurs

typeCheck

public junc.types.JUnCBaseType typeCheck(junc.symtab.SymbolTable stable)
                                  throws TypeCheckError
Description copied from class: ExpressionNode
Describe typeCheck method here.

Specified by:
typeCheck in class ExpressionNode
Parameters:
stable - a SymbolTable value
Returns:
a JUnCBaseType value
Throws:
TypeCheckError - if an error occurs

translateSynthesized

public org.apache.bcel.generic.BranchHandle translateSynthesized(org.apache.bcel.generic.ClassGen classGen,
                                                                 org.apache.bcel.generic.MethodGen methodGen)
Description copied from class: ExpressionNode
First translate the expression and then synthesize it. This method is redefined in those expressions that already synthesize their result to avoid synthesize, de-synthesize, synthesize sequences.

Overrides:
translateSynthesized in class ExpressionNode
Parameters:
classGen - a ClassGen value
methodGen - a MethodGen value
Returns:
a BranchHandle value

translate

public void translate(org.apache.bcel.generic.ClassGen classGen,
                      org.apache.bcel.generic.MethodGen methodGen)
Description copied from class: ExpressionNode
Describe translate method here.

Overrides:
translate in class ExpressionNode
Parameters:
classGen - a ClassGen value
methodGen - a MethodGen value