edu.mit.ai.psg.jeva
Class JNName

java.lang.Object
  |
  +--edu.mit.ai.psg.jeva.SimpleNode
        |
        +--edu.mit.ai.psg.jeva.JevaNode
              |
              +--edu.mit.ai.psg.jeva.ExpressionNode
                    |
                    +--edu.mit.ai.psg.jeva.JNName

public class JNName
extends ExpressionNode
implements IExpressionStoreNode, JevaParserConstants

Jeva parse node for names (including parameters, fields, and class names); A name x.y.z is parsed with nested names as (((x).y).z). Note: does not always denote an expression (may be type or package).

Author:
CarlManning, caroma@ai.mit.edu
Copyright (c) 1997, 1998, 1999 Massachusetts Institute of Technology

Field Summary
static int AMBIGUOUS_EXPRESSION_NAME
           
static int AMBIGUOUS_NAME
           
static int ARRAY_FIELD_NAME
           
static int FIELD_NAME
           
static int PACKAGE_NAME
           
static int SPECIAL_NAME_CLASS
           
static int SPECIAL_NAME_SUPER
           
static int SPECIAL_NAME_THIS
           
static int TYPE_NAME
           
static int VARIABLE_NAME
           
 
Fields inherited from class edu.mit.ai.psg.jeva.SimpleNode
children, id, parent
 
Method Summary
protected  Error categorySetError(String newCategory)
           
 boolean computeIsConstant(IEnv env)
           
 IPackage computePackage(IEnv env)
           
 IPackage computeParentPackage(IEnv env)
           
 IClass computeType(IEnv env)
           
protected  Error ErrorNotVariableOrField()
           
 Object eval(IEnv env)
           
 IStore evalToStore(IEnv env)
           
 String getFullNameAndCurrentCategory()
          for error reports
 String getFullPackageOrClassName(IEnv env)
           
 String getLastName(IEnv env)
           
 int getNameCategory()
           
 int getNameCategory(IEnv env)
           
 String getNameCategoryName()
           
protected  IClass getNamedClass()
           
 IClass getNamedClass(IEnv env)
           
protected  IField getNamedField()
           
protected  IPackage getNamedPackage()
           
 boolean isFinal(IEnv env)
          used to test whether assignable.
 Object jjtAccept(IJevaVisitor visitor, Object data)
           
protected  void reclassifyName(IEnv env)
           
 void setNameCategoryToAmbiguousExpression()
          context requires an expression; can only narrow category, not widen.
 void setNameCategoryToArrayField()
           
 void setNameCategoryToClassLiteral(IClass c)
           
 void setNameCategoryToField(IField f)
           
 void setNameCategoryToPackage(IPackage p)
           
 void setNameCategoryToSuper()
           
 void setNameCategoryToThis()
           
 void setNameCategoryToType(IClass c)
           
 void setNameCategoryToVariable()
           
 
Methods inherited from class edu.mit.ai.psg.jeva.ExpressionNode
getType, getType, getValue, isConstant
 
Methods inherited from class edu.mit.ai.psg.jeva.JevaNode
checkInsertionPoint, find2ndTokenBeforeEndBody, findChildIndex, findPrecedingToken, findTokenBeforeChild, findTokenBeforeChild, findTokenBeforeEnd, getBeginToken, getEndToken, insertChildTokens, insertNewChildAfter, insertNewChildAt, insertNewChildBefore, jnGetChild, jnGetParent, print, print, printToken, printToString, printToString, removeChild, removeChildTokens, replaceChild, replaceChild, setBeginToken, setEndToken, updateEndTokens, updateEndTokensPriorChild, updateEndTokensPriorNode, updateEndTokensPriorNode
 
Methods inherited from class edu.mit.ai.psg.jeva.SimpleNode
dump, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, toString, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

AMBIGUOUS_NAME

public static final int AMBIGUOUS_NAME

AMBIGUOUS_EXPRESSION_NAME

public static final int AMBIGUOUS_EXPRESSION_NAME

VARIABLE_NAME

public static final int VARIABLE_NAME

FIELD_NAME

public static final int FIELD_NAME

ARRAY_FIELD_NAME

public static final int ARRAY_FIELD_NAME

TYPE_NAME

public static final int TYPE_NAME

PACKAGE_NAME

public static final int PACKAGE_NAME

SPECIAL_NAME_THIS

public static final int SPECIAL_NAME_THIS

SPECIAL_NAME_SUPER

public static final int SPECIAL_NAME_SUPER

SPECIAL_NAME_CLASS

public static final int SPECIAL_NAME_CLASS
Method Detail

jjtAccept

public Object jjtAccept(IJevaVisitor visitor,
                        Object data)
Overrides:
jjtAccept in class JevaNode

setNameCategoryToAmbiguousExpression

public void setNameCategoryToAmbiguousExpression()
context requires an expression; can only narrow category, not widen.

setNameCategoryToVariable

public void setNameCategoryToVariable()

setNameCategoryToField

public void setNameCategoryToField(IField f)

setNameCategoryToArrayField

public void setNameCategoryToArrayField()

setNameCategoryToType

public void setNameCategoryToType(IClass c)

setNameCategoryToPackage

public void setNameCategoryToPackage(IPackage p)

setNameCategoryToThis

public void setNameCategoryToThis()

setNameCategoryToSuper

public void setNameCategoryToSuper()

setNameCategoryToClassLiteral

public void setNameCategoryToClassLiteral(IClass c)

getNameCategory

public int getNameCategory(IEnv env)
                    throws VerifyingException

getNameCategory

public int getNameCategory()

categorySetError

protected Error categorySetError(String newCategory)

getFullPackageOrClassName

public String getFullPackageOrClassName(IEnv env)
                                 throws VerifyingException

getLastName

public String getLastName(IEnv env)
                   throws VerifyingException

getNamedClass

public IClass getNamedClass(IEnv env)
                     throws VerifyingException

getNamedClass

protected IClass getNamedClass()

getNamedField

protected IField getNamedField()

getNamedPackage

protected IPackage getNamedPackage()

computeType

public IClass computeType(IEnv env)
                   throws VerifyingException
Overrides:
computeType in class ExpressionNode

computeIsConstant

public boolean computeIsConstant(IEnv env)
                          throws VerifyingException
Overrides:
computeIsConstant in class ExpressionNode

ErrorNotVariableOrField

protected Error ErrorNotVariableOrField()

isFinal

public boolean isFinal(IEnv env)
                throws VerifyingException
used to test whether assignable. A name can be final but not constant if it is a final field of a non-constant variable.

eval

public Object eval(IEnv env)
            throws ThrowException
Overrides:
eval in class ExpressionNode

evalToStore

public IStore evalToStore(IEnv env)
                   throws ThrowException
Specified by:
evalToStore in interface IExpressionStoreNode

reclassifyName

protected void reclassifyName(IEnv env)
                       throws VerifyingException

computePackage

public IPackage computePackage(IEnv env)
                        throws VerifyingException

computeParentPackage

public IPackage computeParentPackage(IEnv env)
                              throws VerifyingException

getFullNameAndCurrentCategory

public String getFullNameAndCurrentCategory()
for error reports

getNameCategoryName

public String getNameCategoryName()

Copyright (c) 1996-1999
Massachusetts Institute of Technology

Feedback: jeva-bugs@ai.mit.edu