avrora.core.isdl.ast
Class Arith.UnOp

java.lang.Object
  extended byavrora.core.isdl.ast.Expr
      extended byavrora.core.isdl.ast.Arith
          extended byavrora.core.isdl.ast.Arith.UnOp
Direct Known Subclasses:
Arith.CompExpr, Arith.NegExpr
Enclosing class:
Arith

public abstract static class Arith.UnOp
extends Arith

The UnOp inner class represents an operation on a single integer value. For example, the bitwise complement and the negation of an integer are operations on a single integer that produce a single integer result.


Nested Class Summary
 
Nested classes inherited from class avrora.core.isdl.ast.Arith
Arith.AddExpr, Arith.AndExpr, Arith.BinOp, Arith.CompExpr, Arith.DivExpr, Arith.MulExpr, Arith.NegExpr, Arith.OrExpr, Arith.ShiftLeftExpr, Arith.ShiftRightExpr, Arith.SubExpr, Arith.UnOp, Arith.XorExpr
 
Field Summary
 Expr operand
          The operand field stores a reference to the expression operand of this operation.
 java.lang.String operation
          The operation field stores the string name of the operation being performed on the expression.
 
Fields inherited from class avrora.core.isdl.ast.Expr
PREC_A_ADD, PREC_A_AND, PREC_A_MUL, PREC_A_OR, PREC_A_SHIFT, PREC_A_XOR, PREC_L_AND, PREC_L_EQU, PREC_L_OR, PREC_L_REL, PREC_L_XOR, PREC_TERM, PREC_UN
 
Constructor Summary
Arith.UnOp(java.lang.String op, Expr o)
          The constructor of the UnOp class initializes the public final fields that form the structure of this expression.
 
Method Summary
 void accept(ExprVisitor v)
          The accept() method implements one half of the visitor pattern so that client visitors can traverse the syntax tree easily and in an extensible way.
 int getPrecedence()
          The getPrecedence() method gets the binding precedence for this expression.
 boolean isConstantExpr()
          The isConstantExpr() method tests whether this expression is a constant expression (i.e. it is reducable to a constant and has no references to variables, maps, etc).
 java.lang.String toString()
          The toString() method recursively converts this expression to a string.
 
Methods inherited from class avrora.core.isdl.ast.Expr
accept, accept, getBitWidth, innerString, isBitRangeExpr, isLiteral, isMap, isVariable, tokenToBool, tokenToInt
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

operation

public final java.lang.String operation
The operation field stores the string name of the operation being performed on the expression. For example, '~' represents bitwise negation.


operand

public final Expr operand
The operand field stores a reference to the expression operand of this operation.

Constructor Detail

Arith.UnOp

public Arith.UnOp(java.lang.String op,
                  Expr o)
The constructor of the UnOp class initializes the public final fields that form the structure of this expression.

Parameters:
op - the string name of the operation
o - the operand of this operation
Method Detail

isConstantExpr

public boolean isConstantExpr()
The isConstantExpr() method tests whether this expression is a constant expression (i.e. it is reducable to a constant and has no references to variables, maps, etc).

Overrides:
isConstantExpr in class Expr
Returns:
true if this expression can be evaluated to a constant; false otherwise

accept

public void accept(ExprVisitor v)
The accept() method implements one half of the visitor pattern so that client visitors can traverse the syntax tree easily and in an extensible way.

Specified by:
accept in class Expr
Parameters:
v - the visitor to accept

toString

public java.lang.String toString()
The toString() method recursively converts this expression to a string. For binary operations, inner expressions will be nested within parentheses if their precedence is lower than the precedence of the parent expression.

Returns:
a string representation of this expression

getPrecedence

public int getPrecedence()
The getPrecedence() method gets the binding precedence for this expression. This is used to compute when inner expressions must be nested within parentheses in order to preserve the implied order of evaluation.

Specified by:
getPrecedence in class Expr
Returns:
an integer representing the precedence of this expression; higher numbers are higher precedence