avrora.core.isdl.ast
Class BitExpr

java.lang.Object
  extended byavrora.core.isdl.ast.Expr
      extended byavrora.core.isdl.ast.BitExpr

public class BitExpr
extends Expr

The BitExpr class represents an access of an individual bit within a value. In the IR, individual bits of values can be addressed for both reading and writing.


Field Summary
 Expr bit
          The bit field stores a reference to an expression that when evaluated indicates which bit to read.
 Expr expr
          The expr field stores a reference to the expression whose value the bit will be extracted from.
 
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
BitExpr(Expr e, Expr b)
          The constructor of the BitExpr class simply initializes the references to the expression and the bit.
 
Method Summary
 Expr accept(CodeRebuilder r, java.lang.Object env)
          The accept() method implements one half of the visitor pattern for rebuilding of expressions.
 void accept(CodeVisitor 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.
 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 getBitWidth()
          The getBitWidth() method gets the number of bits needed to represent this value.
 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.
 java.lang.String toString()
          The toString() method recursively converts this expression to a string.
 
Methods inherited from class avrora.core.isdl.ast.Expr
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

expr

public final Expr expr
The expr field stores a reference to the expression whose value the bit will be extracted from.


bit

public final Expr bit
The bit field stores a reference to an expression that when evaluated indicates which bit to read.

Constructor Detail

BitExpr

public BitExpr(Expr e,
               Expr b)
The constructor of the BitExpr class simply initializes the references to the expression and the bit.

Parameters:
e - the expression representing the value to extract the bit from
b - the expression representing the number of the bit to extract
Method Detail

getBitWidth

public int getBitWidth()
The getBitWidth() method gets the number of bits needed to represent this value. This is needed in the case of encoding formats, which need to compute the size of an instruction based on the width of its internal fields. For a BitExpr, only one bit is required, so this method returns 1.

Overrides:
getBitWidth in class Expr
Returns:
1

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

accept

public void accept(CodeVisitor 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

accept

public Expr accept(CodeRebuilder r,
                   java.lang.Object env)
The accept() method implements one half of the visitor pattern for rebuilding of expressions. This visitor allows code to be slightly modified while only writing visit methods for the parts of the syntax tree affected.

Specified by:
accept in class Expr
Parameters:
r - the rebuilder to accept
Returns:
the result of calling the appropriate visit() method of the rebuilder

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