at.dms.kjc
Class JOrdinalLiteral

java.lang.Object
  |
  +--at.dms.util.Utils
        |
        +--at.dms.compiler.Phylum
              |
              +--at.dms.kjc.JPhylum
                    |
                    +--at.dms.kjc.JExpression
                          |
                          +--at.dms.kjc.JLiteral
                                |
                                +--at.dms.kjc.JNumberLiteral
                                      |
                                      +--at.dms.kjc.JOrdinalLiteral
All Implemented Interfaces:
Constants, Constants
Direct Known Subclasses:
JCharLiteral

public class JOrdinalLiteral
extends JNumberLiteral

This class represents ordinal literals (byte, short, int, long.)


Field Summary
protected  java.lang.String image
          ...
 
Fields inherited from class at.dms.kjc.JExpression
EMPTY
 
Fields inherited from class at.dms.util.Utils
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO
 
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_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VOID
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_NBR_FLAGS, 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
JOrdinalLiteral(TokenReference where, long value, CNumericType type)
          Construct a node in the parsing tree.
JOrdinalLiteral(TokenReference where, java.lang.Number value, CNumericType type)
          Construct a node in the parsing tree.
JOrdinalLiteral(TokenReference where, java.lang.String image)
          Construct a node in the parsing tree.
 
Method Summary
 void accept(KjcVisitor p)
          Accepts the specified visitor.
 JExpression checkExpression(CExpressionContext context)
          Check expression and evaluate and alter context.
 JExpression convertType(CType dest, CExpressionContext context)
          Changes the type of this expression to an other.
 void genCode(CodeSequence code)
          Generates a sequence of bytecodes.
 java.lang.Number getNumberValue()
          Get a Number that represents the value of this literal.
 CType getType()
          Compute the type of this expression (called after parsing.)
 java.lang.Object getValue()
          Get a Number that represents the value of this literal.
 boolean isAssignableTo(CType dest)
          Can this expression be converted to the specified type by assignment conversion (JLS 5.2)?
 void setSignToMinus()
          This is needed to handle -2147483648 that is allowed agains 2147483648 that is not allowed, so we need to know if there is an unary minus before us.
protected  void setType(CType type)
          Sets the type if it is determined by a subclass.
 void setValue(java.lang.Number value)
           
protected  void setValue(java.lang.Number newValue, CNumericType newType)
           
(package private)  boolean specialUnaryMinus()
          Special case (see JLS2nd 3.10.1): if preceded by a unary negative expression, then and only then are integer literals allowed to be 2147483648 or 9223372036854775808L.
 
Methods inherited from class at.dms.kjc.JNumberLiteral
isDefault
 
Methods inherited from class at.dms.kjc.JLiteral
createLiteral, getLiteral, isLiteral, isLValue
 
Methods inherited from class at.dms.kjc.JExpression
checkExpression, fail, genBranch, getBooleanLiteral, getNumberLiteral, getOrdinalLiteral, getRealLiteral, getStringLiteral, isConstant, isStatementExpression, isSubTypePossible, setConstant, unParenthesize
 
Methods inherited from class at.dms.kjc.JPhylum
check, check, check, check
 
Methods inherited from class at.dms.compiler.Phylum
getTokenReference, setTokenReference
 
Methods inherited from class at.dms.util.Utils
assert, assert, fail, fail, hasFlag, hasMoreThanOneFlag, hasOtherFlags, splitQualifiedName, splitQualifiedName, vectorToArray, vectorToIntArray
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

image

protected java.lang.String image
...
Constructor Detail

JOrdinalLiteral

public JOrdinalLiteral(TokenReference where,
                       java.lang.String image)
Construct a node in the parsing tree.
Parameters:
where - The line of this node in the source code.
image - The string representation of this literal.

JOrdinalLiteral

public JOrdinalLiteral(TokenReference where,
                       java.lang.Number value,
                       CNumericType type)
Construct a node in the parsing tree.
Parameters:
where - The line of this node in the source code.

JOrdinalLiteral

public JOrdinalLiteral(TokenReference where,
                       long value,
                       CNumericType type)
Construct a node in the parsing tree.
Parameters:
where - The line of this node in the source code.
Method Detail

setSignToMinus

public void setSignToMinus()
This is needed to handle -2147483648 that is allowed agains 2147483648 that is not allowed, so we need to know if there is an unary minus before us.

getType

public CType getType()
Compute the type of this expression (called after parsing.)
Overrides:
getType in class JExpression
Returns:
The type of this expression.

setType

protected void setType(CType type)
Sets the type if it is determined by a subclass.

getNumberValue

public java.lang.Number getNumberValue()
Get a Number that represents the value of this literal. Do not call before checkBody.
Overrides:
getNumberValue in class JNumberLiteral

getValue

public java.lang.Object getValue()
Get a Number that represents the value of this literal. Do not call before checkBody.
Overrides:
getValue in class JLiteral

setValue

public void setValue(java.lang.Number value)

setValue

protected void setValue(java.lang.Number newValue,
                        CNumericType newType)
Parameters:
newValue - The new value.

specialUnaryMinus

boolean specialUnaryMinus()
Special case (see JLS2nd 3.10.1): if preceded by a unary negative expression, then and only then are integer literals allowed to be 2147483648 or 9223372036854775808L.
Returns:
true if special case was applied; in that case checkExpression must not be called. Otherwise, false is returned and checkExpression is done normally. Only JUnaryMinusExpression may call this method.

checkExpression

public JExpression checkExpression(CExpressionContext context)
                            throws PositionedError
Check expression and evaluate and alter context.
Overrides:
checkExpression in class JExpression
Parameters:
context - The actual context of analyse.
Returns:
A pure java expression including promote node.
Throws:
PositionedError - If the check fails.

convertType

public JExpression convertType(CType dest,
                               CExpressionContext context)
                        throws PositionedError
Changes the type of this expression to an other.
Overrides:
convertType in class JExpression
Parameters:
dest - The destination type.

isAssignableTo

public boolean isAssignableTo(CType dest)
Can this expression be converted to the specified type by assignment conversion (JLS 5.2)?
Overrides:
isAssignableTo in class JExpression
Parameters:
dest - The destination type.
Returns:
true iff the casting conversion is valid.

accept

public void accept(KjcVisitor p)
Accepts the specified visitor.
Overrides:
accept in class JExpression
Parameters:
p - The visitor.

genCode

public void genCode(CodeSequence code)
Generates a sequence of bytecodes.
Overrides:
genCode in class JExpression
Parameters:
code - The code list.