|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.common.Root scale.clef.Node scale.clef.expr.Expression scale.clef.expr.DyadicOp scale.clef.expr.AndConditionalOp
public class AndConditionalOp
This class represents a logical and operation with conditional evaluation of its second operand.
$Id: AndConditionalOp.java,v 1.31 2005-03-17 14:11:31 burrill Exp $
Copyright 2005 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
The second operation is only evaluated if the first one is true.
Constructor Summary | |
---|---|
AndConditionalOp(Type type,
Expression e1,
Expression e2)
|
Method Summary | |
---|---|
Literal |
getConstantValue()
Return the constant value of the expression. |
boolean |
hasTrueFalseResult()
Return true if the result of the expression is either true (1) or false (0). |
boolean |
isSimpleOp()
Return true if compilation of this expression will not result in the generation of a CFG node . |
void |
visit(Predicate p)
Process a node by calling its associated routine. |
Methods inherited from class scale.clef.expr.DyadicOp |
---|
containsDeclaration, equivalent, getChild, getDeclList, getExpr1, getExpr2, getLhs, getRhs, numChildren, setExpr1, setExpr2, setLhs, setRhs |
Methods inherited from class scale.clef.expr.Expression |
---|
canonical, getCoreType, getDisplayColorHint, getDisplayLabel, getDisplayShapeHint, getPointedToCore, getType, setType, toStringSpecial |
Methods inherited from class scale.clef.Node |
---|
getDecl, getSourceLineNumber, setAnnotationLevel, setReportLevel, setSourceLineNumber, toString, toString, toStringChildren |
Methods inherited from class scale.common.Root |
---|
addAnnotation, allAnnotations, allMatchingAnnotations, getAnnotation, getDisplayName, getDisplayString, getNodeCount, getNodeID, hasAnnotation, hasEqualAnnotation, hashCode, removeAnnotation, removeAnnotations, toStringAnnotations, toStringClass, trace, trace, trace |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public AndConditionalOp(Type type, Expression e1, Expression e2)
Method Detail |
---|
public void visit(Predicate p)
Node
Each class has a visit(Predicate p)
method. For
example, in class ABC
:
public void visit(Predicate p) { p.visitABC(this); }and the class that implements
Predicate
has a method
public void visitABC(Node n) { ABC a = (ABC) n; ... }Thus, the class that implements
Predicate
can call
n.visit(this);where
n
is a Node
sub-class without
determining which specific sub-class n
is.
The visit pattern basically avoids implementing a large
switch
statement or defining different methods
in each class for some purpose.
visit
in class DyadicOp
Predicate
public Literal getConstantValue()
getConstantValue
in class Expression
Lattice
public boolean isSimpleOp()
Expression
CFG node
.
For example, (a && b)
may require a branch
to represent and
i++
requires a store
.
isSimpleOp
in class DyadicOp
public boolean hasTrueFalseResult()
hasTrueFalseResult
in class Expression
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |