Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## avrora.core.isdl.ast
Class BitExpr

    java.lang.Object
      avrora.core.isdl.ast.Expr
          avrora.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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD