at.dms.kjc
Class JNullLiteral

java.lang.Object
  extended by at.dms.util.Utils
      extended by at.dms.compiler.Phylum
          extended by at.dms.kjc.JPhylum
              extended by at.dms.kjc.JExpression
                  extended by at.dms.kjc.JLiteral
                      extended by at.dms.kjc.JNullLiteral
All Implemented Interfaces:
Constants, DeepCloneable, Finalizable, Serializable

public class JNullLiteral
extends JLiteral

A simple character constant

See Also:
Serialized Form

Field Summary
 
Fields inherited from class at.dms.kjc.JExpression
EMPTY
 
Fields inherited from class at.dms.util.Utils
EMPTY_LIST, getForLoopCallers
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
protected JNullLiteral()
           
  JNullLiteral(TokenReference where)
          Construct a node in the parsing tree
 
Method Summary
 Object accept(AttributeVisitor p)
          Accepts the specified attribute visitor
<S,T> S
accept(ExpressionVisitor<S,T> p, T o)
          Accepts the specified visitor
 void accept(KjcVisitor p)
          Accepts the specified visitor
 JExpression analyse(CExpressionContext context)
          Analyses the expression (semantically).
 String convertToString()
          For up-casting into a string type.
 JExpression convertType(CType dest, CExpressionContext context)
          convertType changes the type of this expression to an other
 Object deepClone()
          Returns a deep clone of this object.
protected  void deepCloneInto(JNullLiteral other)
          Clones all fields of this into
 boolean equals(Object o)
          Returns whether or
 void genCode(CodeSequence code, boolean discardValue)
          Generates JVM bytecode to evaluate this expression.
 CType getType()
          Compute the type of this expression (called after parsing)
 boolean isConstant()
          Tests whether this expression denotes a compile-time constant (JLS 15.28).
 boolean isDefault()
          Returns true iff the value of this literal is the default value for this type (JLS 4.5.5).
 
Methods inherited from class at.dms.kjc.JLiteral
deepCloneInto, getLiteral, parseInteger, parseReal, setType
 
Methods inherited from class at.dms.kjc.JExpression
booleanValue, byteValue, charValue, convertType, deepCloneInto, doubleValue, fail, floatValue, genBranch, genEndStoreCode, genStartStoreCode, getIdent, intValue, isAssignableTo, isDynamic, isFinal, isInitialized, isLValue, isStatementExpression, longValue, setInitialized, shortValue, stringValue
 
Methods inherited from class at.dms.kjc.JPhylum
assertMutable, check, check, check, check, deepCloneInto, setLineNumber
 
Methods inherited from class at.dms.compiler.Phylum
deepCloneInto, getTokenReference, setTokenReference
 
Methods inherited from class at.dms.util.Utils
asPercent, cellMathEquivalent, cMathEquivalent, cppMathEquivalent, deepCloneInto, equalArrays, fail, getEnvironmentVariable, getExpression, hasPeeks, initArray, initArray, initLiteralArray, intArrayToList, isMathMethod, isUniform, kopi_assert, kopi_assert, makeCountdownForLoop, makeDotFileName, makeForLoop, makeForLoop, makeForLoop, makeForLoopFieldIndex, makeForLoopLocalIndex, nextPow2, passThruParens, peelMarkers, popBeforePeek, readFile, removeUnusedPops, replaceAll, setupDotFileName, simplifyMathMethod, splitQualifiedName, splitQualifiedName, toArray, toIntArray, toVector, voidToInt, writeFile
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JNullLiteral

protected JNullLiteral()

JNullLiteral

public JNullLiteral(TokenReference where)
Construct a node in the parsing tree

Parameters:
where - the line of this node in the source code
Method Detail

getType

public CType getType()
Compute the type of this expression (called after parsing)

Specified by:
getType in class JExpression
Returns:
the type of this expression

isDefault

public boolean isDefault()
Returns true iff the value of this literal is the default value for this type (JLS 4.5.5).

Specified by:
isDefault in class JLiteral

isConstant

public boolean isConstant()
Tests whether this expression denotes a compile-time constant (JLS 15.28). The null literal is not a compile-time constant.

Overrides:
isConstant in class JLiteral
Returns:
true iff this expression is constant

convertToString

public String convertToString()
Description copied from class: JLiteral
For up-casting into a string type.

Specified by:
convertToString in class JLiteral

analyse

public JExpression analyse(CExpressionContext context)
Analyses the expression (semantically).

Overrides:
analyse in class JLiteral
Parameters:
context - the analysis context
Returns:
an equivalent, analysed expression
Throws:
PositionedError - the analysis detected an error

accept

public void accept(KjcVisitor p)
Accepts the specified visitor

Specified by:
accept in class JExpression
Parameters:
p - the visitor

accept

public Object accept(AttributeVisitor p)
Accepts the specified attribute visitor

Specified by:
accept in class JExpression
Parameters:
p - the visitor
Returns:
data to pass back up

accept

public <S,T> S accept(ExpressionVisitor<S,T> p,
                      T o)
Accepts the specified visitor

Specified by:
accept in class JExpression
Type Parameters:
S - output type
T - auxilliary input type
Parameters:
p - the visitor
o - object containing extra data to be passed to visitor
Returns:
object containing data generated by visitor

equals

public boolean equals(Object o)
Returns whether or
o
this represents a literal with the same value as this.

Overrides:
equals in class Object

genCode

public void genCode(CodeSequence code,
                    boolean discardValue)
Generates JVM bytecode to evaluate this expression.

Specified by:
genCode in class JExpression
Parameters:
code - the bytecode sequence
discardValue - discard the result of the evaluation ?

convertType

public JExpression convertType(CType dest,
                               CExpressionContext context)
Description copied from class: JLiteral
convertType changes the type of this expression to an other

Specified by:
convertType in class JLiteral
Parameters:
dest - the destination type

deepClone

public Object deepClone()
Returns a deep clone of this object.

Specified by:
deepClone in interface DeepCloneable
Overrides:
deepClone in class JLiteral

deepCloneInto

protected void deepCloneInto(JNullLiteral other)
Clones all fields of this into
other