|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object avrora.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,
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 |
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.
|
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, inclusivepublic 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, inclusiveMethod 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 Expr
public 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 Expr
public 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 Expr
public 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 Expr
v
- 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 Expr
v
- the visitor to acceptpublic Expr accept(CodeRebuilder r, java.lang.Object env)
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 Expr
r
- 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 |