|
JML | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.multijava.util.Utils
org.jmlspecs.checker.JmlAbstractVisitor
org.jmlspecs.jmlrac.RacAbstractVisitor
org.jmlspecs.jmlrac.AbstractExpressionTranslator
org.jmlspecs.jmlrac.TransExpression
org.jmlspecs.jmlrac.TransExpressionSideEffect
A special expression translator that allows translation of expressions with side-effects. Several visitor methods are overridden to translate expressions with side-effects, such as assignment expressions, increment expresions, and decrement expressions.
| Nested Class Summary |
| Nested classes inherited from class org.jmlspecs.jmlrac.TransExpression |
TransExpression.DiagTerm |
| Field Summary |
| Fields inherited from class org.jmlspecs.jmlrac.TransExpression |
context, expression, paramStack, resultStack, resultVar, typeDecl, varGen |
| Fields inherited from class org.multijava.util.Utils |
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO |
| Fields inherited from interface org.jmlspecs.jmlrac.RacConstants |
MN_CHECK_HC, MN_CHECK_INV, MN_CHECK_POST, MN_CHECK_PRE, MN_CHECK_XPOST, MN_EVAL_OLD, MN_GHOST, MN_INIT, MN_INTERNAL, MN_MODEL, MN_MODEL_PUBLIC, MN_RESTORE_FROM, MN_SAVE_TO, MN_SPEC, MN_SPEC_PUBLIC, TN_JMLCHECKABLE, TN_JMLSURROGATE, TN_JMLUNIT_TEST_POSTFIX, TN_JMLUNIT_TESTDATA_POSTFIX, TN_JMLVALUE, TN_SURROGATE, VN_ASSERTION, VN_CATCH_VAR, VN_CLASS_INIT, VN_CONSTRUCTED, VN_DELEGEE, VN_ERROR_SET, VN_EXCEPTION, VN_FREE_VAR, VN_INIT, VN_OLD_VAR, VN_POST_VAR, VN_PRE_VAR, VN_PRECOND, VN_RAC_COMPILED, VN_RAC_LEVEL, VN_RESULT, VN_STACK_VAR, VN_XRESULT |
| Constructor Summary | |
TransExpressionSideEffect(VarGenerator varGen,
RacContext ctx,
JExpression expr,
String resultVar,
JTypeDeclarationType typeDecl)
Constructs an instance and translates the given expression. |
|
TransExpressionSideEffect(VarGenerator varGen,
JExpression expr,
String resultVar,
JTypeDeclarationType typeDecl)
Constructs an instance and translates the given expression. |
|
| Method Summary | |
private RacNode |
assignStmt(JExpression expr,
String var)
Generates a statement that assigns the value of var to expr. |
private static String |
operator(int opr)
Returns the string representation of the desugared increment or decrement operator. |
void |
transAssignmentExpression(JAssignmentExpression expr)
Translates the given assignment expresson. |
void |
visitAssignmentExpression(JAssignmentExpression self)
Translates the given assignment expression, self. |
void |
visitCompoundAssignmentExpression(JCompoundAssignmentExpression self)
Translates the given compund assignment expression. |
void |
visitPostfixExpression(JPostfixExpression self)
Translates the given prefix expression. |
void |
visitPrefixExpression(JPrefixExpression self)
Translates the given prefix expression. |
| Methods inherited from class org.jmlspecs.jmlrac.RacAbstractVisitor |
visitRacNode |
| Methods inherited from class org.multijava.util.Utils |
assertTrue, assertTrue, combineArrays, escapeString, escapeString, fail, fail, getFilePath, hasFlag, hasOtherFlags, parsePathParts, relativePathTo, splitQualifiedName, splitQualifiedName, stripJavaModifiers, stripNonJavaModifiers, stripPrivateModifier, unescapeString, vectorToArray, vectorToIntArray |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public TransExpressionSideEffect(VarGenerator varGen,
RacContext ctx,
JExpression expr,
String resultVar,
JTypeDeclarationType typeDecl)
varGen - variable generator to be used for generating
fresh variable names necessary in the translated code.ctx - context to use for the interpretation of undefinedness.expr - expression to be translated.resultVar - variable to store the result. In the translated code,
the result of the expression is stored in the variable whose
name given by this parameter.typeDecl - type declaration from which the expression
expr comes.
public TransExpressionSideEffect(VarGenerator varGen,
JExpression expr,
String resultVar,
JTypeDeclarationType typeDecl)
varGen - variable generator to be used for generating
fresh variable names necessary in the translated code.expr - expression to be translated.resultVar - variable to store the result. In the translated code,
the result of the expression is stored in the variable whose
name given by this parameter.typeDecl - type declaration from which the expression
expr comes.| Method Detail |
public void visitAssignmentExpression(JAssignmentExpression self)
self.
The translation rule for this expression is defined as follows.
[[l = E, r]] =
T_E v = d_T_E;
[[E, v]]
l = v;
If l is a reference to a model variable, then it
is an error. If l is a reference to a ghost
variable, then the setter method must be used instead of the
assignment (=).
visitAssignmentExpression in interface MjcVisitorvisitAssignmentExpression in class TransExpressionpublic void visitCompoundAssignmentExpression(JCompoundAssignmentExpression self)
visitCompoundAssignmentExpression in interface MjcVisitorvisitCompoundAssignmentExpression in class JmlAbstractVisitorpublic void visitPrefixExpression(JPrefixExpression self)
[[++E, r]] =
T_E v = d_T_E;
[[E, v]]
v = v + 1;
E <- v;
r = v;
The expression E should be an l-value. If
E is a reference to a ghost variable, its accessor
must be used to get and set its value.
visitPrefixExpression in interface MjcVisitorvisitPrefixExpression in class TransExpressionprivate static String operator(int opr)
public void visitPostfixExpression(JPostfixExpression self)
[[E++, r]] =
T_E v = d_T_E;
[[E, v]]
r = v;
v = v + 1;
E <- v;
The expression E should denote an l-value. If
E is a reference to a ghost variable, its accessor
must be used to get and set its value.
visitPostfixExpression in interface MjcVisitorvisitPostfixExpression in class TransExpressionpublic void transAssignmentExpression(JAssignmentExpression expr)
private RacNode assignStmt(JExpression expr,
String var)
|
JML | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||