|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectavrora.core.isdl.ast.Expr
avrora.core.isdl.ast.BitRangeExpr
The BitRangeExpr class represents an expression whose
value is the result of extracting a range of the bits from
another expression. In the IR, ranges of bits can be specified
for reading and writing, allowing cleaner expression of sub-byte
fields. The bounds of these ranges are static: the endpoints must
be constants.
| Field Summary | |
int |
high_bit
The high_bit field represents the highest bit in the range
to be extracted, inclusive. |
int |
low_bit
The low_bit field represents the lowest bit in the range
to be extracted, inclusive. |
Expr |
operand
The operand field stores a reference to the expression
that is the operand of the bit range expression, i.e. the value
from which the range of bits will be extracted. |
| 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 | |
BitRangeExpr(Expr o,
int l,
int h)
The constructor of the BitRangeExpr class simply initializes
the references to the operands of the bit range expression. |
|
BitRangeExpr(Expr o,
Token l,
Token h)
The constructor of the BitRangeExpr class simply initializes
the references to the operands of the bit range expression. |
|
| Method Summary | |
Expr |
accept(CodeRebuilder r)
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 |
isBitRangeExpr()
The isBitRangeExpr() method tests whether the expression
is an access of a range of bits. |
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 |
innerString, isLiteral, isMap, isVariable, tokenToBool, tokenToInt |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
public final Expr operand
operand field stores a reference to the expression
that is the operand of the bit range expression, i.e. the value
from which the range of bits will be extracted.
public final int low_bit
low_bit field represents the lowest bit in the range
to be extracted, inclusive.
public final int high_bit
high_bit field represents the highest bit in the range
to be extracted, inclusive.
| Constructor Detail |
public BitRangeExpr(Expr o,
Token l,
Token h)
BitRangeExpr class simply initializes
the references to the operands of the bit range expression.
o - a reference to the expression operandl - the lowest bit in the range, inclusiveh - the highest bit in the range, inclusive
public BitRangeExpr(Expr o,
int l,
int h)
BitRangeExpr class simply initializes
the references to the operands of the bit range expression.
o - a reference to the expression operandl - the lowest bit in the range, inclusiveh - the highest bit in the range, inclusive| Method Detail |
public int getBitWidth()
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 BitRangeExpr, the number of bits
required is statically known.
getBitWidth in class Exprpublic boolean isConstantExpr()
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).
isConstantExpr in class Exprpublic boolean isBitRangeExpr()
isBitRangeExpr() method tests whether the expression
is an access of a range of bits. This is used in pattern matching in
some parts of the code.
isBitRangeExpr in class Exprpublic void accept(ExprVisitor v)
accept() method implements one half of the visitor
pattern so that client visitors can traverse the syntax tree easily
and in an extensible way.
accept in class Exprv - the visitor to acceptpublic void accept(CodeVisitor v)
accept() method implements one half of the visitor
pattern so that client visitors can traverse the syntax tree easily
and in an extensible way.
accept in class Exprv - the visitor to acceptpublic Expr accept(CodeRebuilder r)
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.
accept in class Exprr - the rebuilder to accept
visit()
method of the rebuilderpublic java.lang.String toString()
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.
public int getPrecedence()
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.
getPrecedence in class Expr
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||