public class DollarExpression extends AssignableExpression
Modifier and Type | Field | Description |
---|---|---|
static int |
BIND_IDX |
index for any variable introduced in a BINDS clause
|
static int |
HELPER_IDX |
index of $$ variable which is bound to the current helper instance
|
static int |
INVOKE_PARAM_ARRAY_IDX |
index of $@ variable which is bound to an array of the invoked method params in an AT INVOKE rule
|
static int |
LOCAL_IDX |
index for any local variable which must be further identified via its name
|
static int |
PARAM_ARRAY_IDX |
index of $* variable which is bound to an array of the trigger method params
|
static int |
PARAM_COUNT_IDX |
index of $# variable which is bound to the count of number of trigger method params
|
static int |
RETURN_VALUE_IDX |
index of $! variable which is bound to the current return value on stack in AT RETURN rule
|
static int |
THROWABLE_VALUE_IDX |
index of $@ variable which is bound to the current throwable on stack in AT THROW rule
|
static int |
TRIGGER_CLASS_IDX |
index of $CLASS variable which is bound to a String identifying the package-qualified trigger class
|
static int |
TRIGGER_METHOD_IDX |
index of $METHOD variable which is bound to a String identifying the trigger method and signature
|
Constructor | Description |
---|---|
DollarExpression(Rule rule,
Type type,
ParseNode token,
int index) |
constructor for param bindings or special bindings
|
DollarExpression(Rule rule,
Type type,
ParseNode token,
String name) |
constructor for local var bindings
|
Modifier and Type | Method | Description |
---|---|---|
void |
bind() |
verify that variables mentioned in this expression are actually available in the supplied
bindings list and infer/validate the type of this expression or its subexpressions
where possible
|
void |
bind(boolean isUpdateable) |
|
void |
bindAssign() |
verify that variables mentioned in this expression are actually available in the supplied
bindings list.
|
void |
compile(org.objectweb.asm.MethodVisitor mv,
CompileContext compileContext) |
|
void |
compileAssign(org.objectweb.asm.MethodVisitor mv,
CompileContext compileContext) |
compile an assignment to the referenced location using the value on the top of the
Java stack.
|
Object |
interpret(HelperAdapter helper) |
evaluate the expression by interpreting the expression tree
|
Object |
interpretAssign(HelperAdapter helperAdapter,
Object value) |
execute an assignment to the referenced location by interpretation of the expression,
using the object passed in this call
|
Type |
typeCheck(Type expected) |
ensure that all type references in the expression and its component expressions
can be resolved, that the type of the expression is well-defined and that it is
compatible with the type expected in the context in which it occurs.
|
Type |
typeCheckAssign(Type expected) |
typecheck the expression as an lvalue of an assignment operation
|
void |
writeTo(StringWriter stringWriter) |
getPos, getType
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getBindings, getTypeGroup, rebox, toString
public static final int HELPER_IDX
public static final int BIND_IDX
public static final int LOCAL_IDX
public static final int RETURN_VALUE_IDX
public static final int THROWABLE_VALUE_IDX
public static final int PARAM_COUNT_IDX
public static final int PARAM_ARRAY_IDX
public static final int INVOKE_PARAM_ARRAY_IDX
public static final int TRIGGER_CLASS_IDX
public static final int TRIGGER_METHOD_IDX
public DollarExpression(Rule rule, Type type, ParseNode token, int index)
rule
- the rule for this expressiontype
- the type for this expressiontoken
- the token for this expressionindex
- the type of DollarExpression this ispublic DollarExpression(Rule rule, Type type, ParseNode token, String name)
rule
- the rule for this expressiontype
- the type for this expressiontoken
- the token for this expressionname
- the name of the local var referenced by this DollarVariablepublic void bind() throws TypeException
bind
in class Expression
TypeException
- if any variable is missing or has the wrong typepublic void bindAssign() throws TypeException
bindAssign
in class AssignableExpression
TypeException
- if any variable is missing or has the wrong typepublic void bind(boolean isUpdateable) throws TypeException
TypeException
public Type typeCheck(Type expected) throws TypeException
Expression
typeCheck
in class Expression
expected
- the type expected for the expression in the contxet in which it occurs. this
may be void but should not be undefined at the point where type checking is performed.TypeException
- if a type check failure occurspublic Type typeCheckAssign(Type expected) throws TypeException
AssignableExpression
typeCheckAssign
in class AssignableExpression
expected
- the expected type for the expressionTypeException
- if a type check error occurspublic Object interpret(HelperAdapter helper) throws ExecuteException
Expression
interpret
in class Expression
helper
- an execution context associated with the rule which contains a map of
current bindings for rule variables and another map of their declared types both of which
are indexed by variable name. This includes entries for the helper (name "-1"), the
recipient if the trigger method is not static (name "0") and the trigger method arguments
(names "1", ...)ExecuteException
- if an error occurs during executionpublic void compile(org.objectweb.asm.MethodVisitor mv, CompileContext compileContext) throws CompileException
compile
in class RuleElement
CompileException
public Object interpretAssign(HelperAdapter helperAdapter, Object value) throws ExecuteException
AssignableExpression
interpretAssign
in class AssignableExpression
helperAdapter
- an execution context associated with the rule which contains a map of
current bindings for rule variables and another map of their declared types both of which
are indexed by variable name. This includes entries for the helper (name "-1"), the
recipient if the trigger method is not static (name "0") and the trigger method arguments
(names "1", ...)value
- the value to be assigned to this objectExecuteException
- if an error occurs during executionpublic void compileAssign(org.objectweb.asm.MethodVisitor mv, CompileContext compileContext) throws CompileException
AssignableExpression
compileAssign
in class AssignableExpression
mv
- the current method visitorcompileContext
- the current compile contextCompileException
- if a compile error occurspublic void writeTo(StringWriter stringWriter)
writeTo
in class Expression
Copyright © 2018. All rights reserved.