|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectat.dms.util.Utils
at.dms.compiler.Phylum
at.dms.kjc.JPhylum
at.dms.kjc.JExpression
at.dms.kjc.JBinaryExpression
at.dms.kjc.JRelationalExpression
public class JRelationalExpression
This class implements '< > <= >=' specific operations Plus operand may be String, numbers
Field Summary | |
---|---|
protected int |
oper
|
Fields inherited from class at.dms.kjc.JBinaryExpression |
---|
left, right, type |
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 |
Constructor Summary | |
---|---|
protected |
JRelationalExpression()
|
|
JRelationalExpression(int oper,
JExpression left,
JExpression right)
|
|
JRelationalExpression(TokenReference where,
int oper,
JExpression left,
JExpression right)
Construct a node in the parsing tree This method is directly called by the parser |
Method Summary | ||
---|---|---|
Object |
accept(AttributeVisitor p)
Accepts the specified attribute visitor |
|
|
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). |
|
JRelationalExpression |
complement()
Changes to the complement of this statement |
|
boolean |
compute(double left,
double right)
Computes the result of the operation at compile-time (JLS 15.28). |
|
boolean |
compute(float left,
float right)
Computes the result of the operation at compile-time (JLS 15.28). |
|
boolean |
compute(int left,
int right)
Computes the result of the operation at compile-time (JLS 15.28). |
|
boolean |
compute(long left,
long right)
Computes the result of the operation at compile-time (JLS 15.28). |
|
JExpression |
constantFolding()
Computes the result of the operation at compile-time (JLS 15.28). |
|
Object |
deepClone()
Returns a deep clone of this object. |
|
protected void |
deepCloneInto(JRelationalExpression other)
Clones all fields of this into |
|
protected void |
genBranch(JExpression left,
JExpression right,
boolean cond,
CodeSequence code,
at.dms.kjc.CodeLabel label)
Optimize a bi-conditional expression |
|
void |
genCode(CodeSequence code,
boolean discardValue)
Generates JVM bytecode to evaluate this expression. |
|
int |
getOper()
|
Methods inherited from class at.dms.kjc.JBinaryExpression |
---|
deepCloneInto, genBooleanResultCode, genBranch, getLeft, getRight, getType, setLeft, setRight, setType |
Methods inherited from class at.dms.kjc.JExpression |
---|
booleanValue, byteValue, charValue, convertType, convertType, deepCloneInto, doubleValue, fail, floatValue, genEndStoreCode, genStartStoreCode, getIdent, getLiteral, intValue, isAssignableTo, isConstant, 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 java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected int oper
Constructor Detail |
---|
protected JRelationalExpression()
public JRelationalExpression(TokenReference where, int oper, JExpression left, JExpression right)
where
- the line of this node in the source codeoper
- the operatorleft
- the left operandright
- the right operandpublic JRelationalExpression(int oper, JExpression left, JExpression right)
Method Detail |
---|
public int getOper()
public JExpression analyse(CExpressionContext context) throws PositionedError
analyse
in class JExpression
context
- the analysis context
PositionedError
- the analysis detected an errorpublic JExpression constantFolding()
constantFolding
in class JBinaryExpression
public boolean compute(int left, int right)
left
- the first operandright
- the seconds operand
public boolean compute(long left, long right)
left
- the first operandright
- the seconds operand
public boolean compute(float left, float right)
left
- the first operandright
- the seconds operand
public boolean compute(double left, double right)
left
- the first operandright
- the seconds operand
public JRelationalExpression complement()
public void accept(KjcVisitor p)
accept
in class JExpression
p
- the visitorpublic Object accept(AttributeVisitor p)
accept
in class JExpression
p
- the visitor
public <S,T> S accept(ExpressionVisitor<S,T> p, T o)
accept
in class JExpression
S
- output typeT
- auxilliary input typep
- the visitoro
- object containing extra data to be passed to visitor
public void genCode(CodeSequence code, boolean discardValue)
genCode
in class JExpression
code
- the bytecode sequencediscardValue
- discard the result of the evaluation ?protected void genBranch(JExpression left, JExpression right, boolean cond, CodeSequence code, at.dms.kjc.CodeLabel label)
genBranch
in class JBinaryExpression
public Object deepClone()
deepClone
in interface DeepCloneable
deepClone
in class JBinaryExpression
protected void deepCloneInto(JRelationalExpression other)
other
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |