|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjml2b.util.Profiler
jml2b.structure.java.ParsedItem
jml2b.structure.statement.Statement
jml2b.structure.statement.Expression
jml2b.structure.statement.TerminalExp
This class implements a terminal expression.
Java terminal expressions can be:
false
true
null
this
super
\result
Field Summary |
Fields inherited from class jml2b.structure.statement.Statement |
arithmeticException, arrayIndexOutOfBoundsException, arrayStoreException, classCastException, negativeArraySizeException, nullPointerException |
Fields inherited from interface jml.JmlDeclParserTokenTypes |
ABRUPT_BEHAVIOR, ACCESSIBLE, ACCESSIBLE_KEYWORD, ACCESSIBLE_REDUNDANTLY, ACCESSIBLE_SEQ, ADDITIVE_ASSIGNMENT_OP, ADDITIVE_OP, AFFIRM_KEYWORD, ALSO, AND, ARRAY_DECLARATOR, ASGNABLE_SEQ, ASSERT, ASSERT_REDUNDANTLY, ASSIGN, ASSIGNABLE, ASSIGNABLE_KEYWORD, ASSIGNABLE_REDUNDANTLY, ASSUME, ASSUME_KEYWORD, ASSUME_REDUNDANTLY, AXIOM, BACKWARD_IMPLIES, BADCHAR, BAND, BAND_ASSIGN, BEHAVIOR, BITWISE_ASSIGNMENT_OP, BITWISE_OP, BNOT, BOR, BOR_ASSIGN, BREAKS, BREAKS_KEYWORD, BREAKS_REDUNDANTLY, BREAKS_SEQ, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, CALLABLE, CALLABLE_KEYWORD, CALLABLE_REDUNDANTLY, CALLABLE_SEQ, CASE, CAST, CHAR_LITERAL, CHOOSE, CHOOSE_IF, COLON, COMMA, CONJOINABLE_SPEC, CONSTRAINT, CONSTRAINT_KEYWORD, CONSTRAINT_REDUNDANTLY, CONSTRUCTOR, CONT_SEQ, CONTINUES, CONTINUES_KEYWORD, CONTINUES_REDUNDANTLY, DEC, DECREASES, DECREASES_REDUNDANTLY, DECREASING, DECREASING_KEYWORD, DECREASING_REDUNDANTLY, DEPENDS, DEPENDS_KEYWORD, DEPENDS_REDUNDANTLY, DIM_EXPRS, DIMS, DINFORMALLY, DIV, DIV_ASSIGN, DIV_SEQ, DIVERGES, DIVERGES_KEYWORD, DIVERGES_REDUNDANTLY, DOC_ATSIGN, DOC_ATSIGN_KEYWORD, DOC_AUTHOR, DOC_COMMENT, DOC_COMMENT_START, DOC_DEPRECATED, DOC_EXCEPTION, DOC_JML_SPECS, DOC_NL_WS, DOC_NON_EMPTY_TEXTLINE, DOC_NON_NL_WS, DOC_PARAM, DOC_RETURN, DOC_SEE, DOC_SERIAL, DOC_SERIALDATA, DOC_SERIALFIELD, DOC_SINCE, DOC_THROWS, DOC_UNKNOWN_KEYWORD, DOC_VERSION, DOT, DOT_DOT, ELSE, ENS_SEQ, ENSURES, ENSURES_KEYWORD, ENSURES_REDUNDANTLY, EOF, EQUAL, EQUALITY_OP, EQUIV, EQUIVALENCE_OP, ESC, EXAMPLE, EXCEPTIONAL_BEHAVIOR, EXCEPTIONAL_EXAMPLE, EXPONENT, EXSURES, EXSURES_REDUNDANTLY, EXT_ALSO, EXT_AND, FLOAT_SUFFIX, FOR, FOR_EXAMPLE, FOR_INIT, FOR_TEST, FOR_UPDATER, FORALL, GE, GHOST, GT, HENCE_BY, HENCE_BY_KEYWORD, HENCE_BY_REDUNDANTLY, HEX_DIGIT, IDENT, IGNORED_AT_IN_COMMENT, IMPLICATION_OP, IMPLIES_THAT, INC, INFORMAL_DESCRIPTION, INIT, INITIALIZER, INITIALLY, INSTANCE, INSTANCE_INIT, INVARIANT, INVARIANT_KEYWORD, INVARIANT_REDUNDANTLY, IS_SUBTYPE_OF, JAVA_BUILTIN_TYPE, JAVA_MODIFIER, JML_BACKSLASH_SEQUENCE, JML_MODIFIER, L_ARROW, LABEL, LABEL_KEYWORD, LAND, LBRACK, LCURLY, LCURLY_VBAR, LE, LET, LETOLD_KEYWORD, LIMPLIES, LITERAL_abstract, LITERAL_assert, LITERAL_boolean, LITERAL_break, LITERAL_byte, LITERAL_case, LITERAL_catch, LITERAL_char, LITERAL_class, LITERAL_const, LITERAL_continue, LITERAL_default, LITERAL_do, LITERAL_double, LITERAL_else, LITERAL_extends, LITERAL_false, LITERAL_final, LITERAL_finally, LITERAL_float, LITERAL_for, LITERAL_if, LITERAL_implements, LITERAL_import, LITERAL_instanceof, LITERAL_int, LITERAL_interface, LITERAL_long, LITERAL_native, LITERAL_new, LITERAL_null, LITERAL_package, LITERAL_private, LITERAL_protected, LITERAL_public, LITERAL_return, LITERAL_short, LITERAL_static, LITERAL_strictfp, LITERAL_super, LITERAL_switch, LITERAL_synchronized, LITERAL_this, LITERAL_throw, LITERAL_throws, LITERAL_transient, LITERAL_true, LITERAL_try, LITERAL_void, LITERAL_volatile, LITERAL_while, LNOT, LOGICAL_OP, LOOP_ASGNABLE_SEQ, LOOP_ASSIGNABLE_KEYWORD, LOOP_EXSURES, LOOP_INV_SEQ, LOOP_INVARIANT, LOOP_INVARIANT_REDUNDANTLY, LOOP_MODIFIES, LOOP_SIG_SEQ, LOR, LPAREN, LT, MAINTAINING, MAINTAINING_KEYWORD, MAINTAINING_REDUNDANTLY, MEASURED_BY, MEASURED_BY_KEYWORD, MEASURED_BY_REDUNDANTLY, METH, MINUS, MINUS_ASSIGN, ML_COMMENT, MOD, MOD_ASSIGN, MODEL, MODEL_PROGRAM, MODIFIABLE, MODIFIABLE_REDUNDANTLY, MODIFIER_SET, MODIFIES, MODIFIES_REDUNDANTLY, MONITORED, MONITORED_BY, MULTIPLICATIVE_ASSIGNMENT_OP, MULTIPLICATIVE_OP, NESTED_CLASS, NL_WS, NON_NL_WS, NON_NULL, NORMAL_BEHAVIOR, NORMAL_EXAMPLE, NOT_EQUAL, NOT_EQUIV, NOWARN_LABEL, NOWARN_LABEL_LIST, NULL_TREE_LOOKAHEAD, NUM_FLOAT, NUM_INT, OLD, OR, PARAM, PLUS, PLUS_ASSIGN, POST, POST_DEC, POST_INC, POST_INCREMENT_OP, POST_REDUNDANTLY, PRE, PRE_INCREMENT_OP, PRE_REDUNDANTLY, PRIVACY_MODIFIER, PURE, QUANT_VARS, QUANTIFIED_EXPR, QUANTIFIER_TOKEN, QUESTION, R_ARROW, RBRACK, RCURLY, READABLE_IF, REFINE, RELATIONAL_OP, REPLACE, REPRESENTS, REPRESENTS_KEYWORD, REPRESENTS_REDUNDANTLY, REQUIRES, REQUIRES_KEYWORD, REQUIRES_REDUNDANTLY, RETURNS, RETURNS_KEYWORD, RETURNS_REDUNDANTLY, RETURNS_SEQ, RPAREN, SEMI, SET, SET_COMPR, SHIFT_ASSIGNMENT_OP, SHIFT_OP, SIG_SEQ, SIGNALS, SIGNALS_KEYWORD, SIGNALS_REDUNDANTLY, SL, SL_ASSIGN, SL_COMMENT, SPEC_CASE, SPEC_PROTECTED, SPEC_PUBLIC, SPEC_SL_COMMENT, SPEC_STATEMENT, SR, SR_ASSIGN, STAR, STAR_ASSIGN, STAR_ELEMS, STATIC_INITIALIZER, STRING_LITERAL, SUBCLASSING_CONTRACT, T_ELEMTYPE, T_EVERYTHING, T_EXISTS, T_FIELDS_OF, T_FORALL, T_FRESH, T_INVARIANT_FOR, T_IS_INITIALIZED, T_LBLNEG, T_LBLPOS, T_LOCKSET, T_MAX, T_MIN, T_NONNULLELEMENTS, T_NOT_MODIFIED, T_NOT_SPECIFIED, T_NOTHING, T_NUM_OF, T_OLD, T_OTHER, T_PRODUCT, T_REACH, T_RESULT, T_SUCH_THAT, T_SUM, T_TYPE, T_TYPEOF, T_TYPEOFALLTYPES, UNARY_NUMERIC_OP, UNINITIALIZED, UNREACHABLE, VAR_DECL, VBAR_RCURLY, VF_SEQ, VOCAB, WEAKLY, WHEN, WHEN_KEYWORD, WHEN_REDUNDANTLY, WS |
Fields inherited from interface jml2b.structure.statement.MyToken |
BTRUE, FIRST_TOKEN, METHOD_CALL, NEWARRAY, nodeString, SEQUENCE, SKIP, T_CALLED_OLD, T_FRESH_CALLED_OLD, T_VARIANT_OLD |
Fields inherited from interface jml2b.link.Linkable |
STATE_LINKED, STATE_LINKED_STATEMENTS, STATE_LINKED_TYPE_CHECKED, STATE_UNLINKED |
Constructor Summary | |
TerminalExp(Identifier ident)
Constructs an expression from a Java identifer. |
|
TerminalExp(Identifier ident,
java.lang.String subident)
Constructs an expression from a Java identifer and a postfix string. |
|
TerminalExp(int nodeType,
java.lang.String nodeText)
Constructs an expression that is not a Java identifer. |
|
TerminalExp(java.lang.String nodeText,
Type t)
Constructs an expression that is an identifier but not a Java identifer. |
Method Summary | |
java.lang.Object |
clone()
|
void |
collectCalledMethod(java.util.Vector calledMethod)
|
boolean |
equals(Expression e)
Returns whether two expressions are equal. |
Identifier |
getIdent()
Returns the identifier. |
java.util.Vector |
getParsedItems()
Returns the set of parsed items that correspond to this expression |
void |
getPrecondition(IJml2bConfiguration config,
ModifiableSet modifies,
java.util.Vector req,
java.util.Vector ens)
|
int |
getValue()
Return the value associated to a constant expression. |
JmlExpression |
instancie()
Returns a dot expression this.e where e is the
current expression when it is an identifer that corresponds to a non
static field or non static method. |
JmlExpression |
instancie(Expression b)
If the current expression is LITERAL_this ,
return b else return this . |
boolean |
isConstant()
Returns whether this expression is a constant. |
void |
isModifiersCompatible(Modifiers modifiers)
If the expression is an identifier, test if their modifiers are compatible with the invariant modifiers. |
LinkInfo |
linkStatement(IJml2bConfiguration config,
LinkContext f)
Links the statement. |
void |
old()
Converts old pragma in called old pragma. |
antlr.collections.AST |
parse(antlr.collections.AST tree)
Parses an AST tree in order to instanciate the statement
fields. |
void |
processIdent()
When this terminal expression is an identifier, a name index is assigned and its name is stored in the identifier array. |
void |
setParsedItem(ParsedItem pi)
|
Expression |
subField(Field f,
Field newF)
|
Expression |
subResult(java.lang.String ww)
|
java.lang.String |
toJava(int indent)
Displays the expression corresponding to a part of a method specification in a tool tip with the initial Java syntax. |
Type |
typeCheck(IJml2bConfiguration config,
LinkContext f)
|
Proofs |
wp(IJml2bConfiguration config,
java.lang.String result,
Proofs normalBehaviour,
ExceptionalBehaviourStack exceptionalBehaviour)
Returns the normal behaviour proof where the resulting variable has been substituted with the current expression. |
Methods inherited from class jml2b.structure.statement.Expression |
addInConjonction, and, createE, emit, exprToForm, getAssert, getFalse, getFromString, getLoop, getNodeText, getNodeType, getNull, getSpecBlock, getStateType, getTrue, getZero, isAnd, isBTrue, isComma, isDot, jmlNormalize, linkMethod, linkParameters, normComma, predToForm, renameParam, setNodeText, setNodeType, setStateType, wp |
Methods inherited from class jml2b.structure.statement.Statement |
createS, ensures, ensures, firstStatement, fresh, freshObject, freshResult, getLoopAtLine, initFresh, link, linkStatements, tail |
Methods inherited from class jml2b.structure.java.ParsedItem |
change, change, getColumn, getJmlFile, getLine, save, setBox |
Methods inherited from class jml2b.util.Profiler |
runGC |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public TerminalExp(int nodeType, java.lang.String nodeText)
nodeType
- The node type of this expressionnodeText
- The string corresponding to this expressionpublic TerminalExp(java.lang.String nodeText, Type t)
nodeText
- The string corresponding to this expressionpublic TerminalExp(Identifier ident, java.lang.String subident)
ident
- The identifier corresponding to this expressionsubident
- The postfix string associated with this expressionpublic TerminalExp(Identifier ident)
ident
- The identifier corresponding to this expressionMethod Detail |
public java.lang.Object clone()
clone
in interface JmlExpression
clone
in class Statement
public boolean equals(Expression e)
Expression
equals
in class Expression
e
- The tested expression
true
if the expression equals the parameter,
false
otherwisepublic java.lang.String toJava(int indent)
Expression
toJava
in class Expression
public antlr.collections.AST parse(antlr.collections.AST tree)
Statement
AST
tree in order to instanciate the statement
fields.
parse
in class Statement
tree
- AST
tree containing the statementpublic LinkInfo linkStatement(IJml2bConfiguration config, LinkContext f) throws Jml2bException
Statement
linkStatement
in class Statement
Jml2bException
public Type typeCheck(IJml2bConfiguration config, LinkContext f) throws Jml2bException
Jml2bException
public void processIdent()
processIdent
in class Expression
jml2b.pog.IdentifierResolver#bIdents
public void isModifiersCompatible(Modifiers modifiers) throws LinkException
isModifiersCompatible
in class Expression
modifiers
- The current invariant modifiers
LinkException
- when the test fails.public JmlExpression instancie()
this.e
where e
is the
current expression when it is an identifer that corresponds to a non
static field or non static method.
public Expression subField(Field f, Field newF)
subField
in class Expression
public Expression subResult(java.lang.String ww)
subResult
in class Expression
public JmlExpression instancie(Expression b)
LITERAL_this
,
return b
else return this
.
instancie
in interface JmlExpression
instancie
in class Expression
b
- expression on which the method where the expression occurs is
called.
public java.util.Vector getParsedItems()
Expression
getParsedItems
in interface JmlExpression
getParsedItems
in class Expression
public void setParsedItem(ParsedItem pi)
setParsedItem
in class Expression
public boolean isConstant()
Expression
isConstant
in class Expression
true
if the expression is a constant,
false
otherwisepublic int getValue()
Expression
This method should only be called if isConstant returned true.
getValue
in class Expression
public void old()
Expression
old
in class Expression
public Proofs wp(IJml2bConfiguration config, java.lang.String result, Proofs normalBehaviour, ExceptionalBehaviourStack exceptionalBehaviour) throws Jml2bException, PogException
wp
in class Expression
config
- the current configuration of the generatornormalBehaviour
- theorems to ensure if the expression evaluation
terminates normallyexceptionalBehaviour
- exceptional theorems to ensure if the
expression evaluation terminates abruply on an exception
PogException
Jml2bException
public Identifier getIdent()
ident
public void getPrecondition(IJml2bConfiguration config, ModifiableSet modifies, java.util.Vector req, java.util.Vector ens)
getPrecondition
in class Statement
public void collectCalledMethod(java.util.Vector calledMethod)
collectCalledMethod
in class Statement
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |