Class Modulo
- java.lang.Object
-
- it.unive.lisa.program.cfg.statement.Statement
-
- it.unive.lisa.program.cfg.statement.Expression
-
- it.unive.lisa.program.cfg.statement.NaryExpression
-
- it.unive.lisa.program.cfg.statement.BinaryExpression
-
- it.unive.lisa.program.cfg.statement.numeric.Modulo
-
- All Implemented Interfaces:
ProgramPoint,CodeElement,CodeNode<CFG,Statement,Edge>,Node<CFG,Statement,Edge>,java.lang.Comparable<Statement>
public class Modulo extends BinaryExpression
An expression modeling the modulo operation (%, returning the Euclidean module between the two operands and taking the sign of the divisor). Both operands' types must be instances ofNumericType. The type of this expression is the common numerical type of its operands, according to the type inference.
-
-
Constructor Summary
Constructors Constructor Description Modulo(CFG cfg, CodeLocation location, Expression left, Expression right)Builds the modulo.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <A extends AbstractState<A,H,V,T>,H extends HeapDomain<H>,V extends ValueDomain<V>,T extends TypeDomain<T>>
AnalysisState<A,H,V,T>binarySemantics(InterproceduralAnalysis<A,H,V,T> interprocedural, AnalysisState<A,H,V,T> state, SymbolicExpression left, SymbolicExpression right, StatementStore<A,H,V,T> expressions)Computes the semantics of the expression, after the semantics of the sub-expressions have been computed.-
Methods inherited from class it.unive.lisa.program.cfg.statement.BinaryExpression
expressionSemantics, getLeft, getRight
-
Methods inherited from class it.unive.lisa.program.cfg.statement.NaryExpression
accept, equals, getConstructName, getOrder, getStatementEvaluatedBefore, getSubExpressions, hashCode, semantics, setOffset, toString
-
Methods inherited from class it.unive.lisa.program.cfg.statement.Expression
getMetaVariables, getParentStatement, getRootStatement, getStaticType, setParentStatement
-
Methods inherited from class it.unive.lisa.program.cfg.statement.Statement
compareTo, getCFG, getEvaluationPredecessor, getLocation, getOffset, stopsExecution, throwsError
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface it.unive.lisa.program.cfg.ProgramPoint
getProgram
-
-
-
-
Constructor Detail
-
Modulo
public Modulo(CFG cfg, CodeLocation location, Expression left, Expression right)
Builds the modulo.- Parameters:
cfg- theCFGwhere this operation lieslocation- the location where this literal is definedleft- the left-hand side of this operationright- the right-hand side of this operation
-
-
Method Detail
-
binarySemantics
public <A extends AbstractState<A,H,V,T>,H extends HeapDomain<H>,V extends ValueDomain<V>,T extends TypeDomain<T>> AnalysisState<A,H,V,T> binarySemantics(InterproceduralAnalysis<A,H,V,T> interprocedural, AnalysisState<A,H,V,T> state, SymbolicExpression left, SymbolicExpression right, StatementStore<A,H,V,T> expressions) throws SemanticException
Description copied from class:BinaryExpressionComputes the semantics of the expression, after the semantics of the sub-expressions have been computed. Meta variables from the sub-expressions will be forgotten after this expression returns.- Specified by:
binarySemanticsin classBinaryExpression- Type Parameters:
A- the type ofAbstractStateH- the type of theHeapDomainV- the type of theValueDomainT- the type ofTypeDomain- Parameters:
interprocedural- the interprocedural analysis of the program to analyzestate- the state where the expression is to be evaluatedleft- the symbolic expression representing the computed value of the first sub-expression of this expressionright- the symbolic expression representing the computed value of the second sub-expression of this expressionexpressions- the cache where analysis states of intermediate expressions are stored and that can be accessed to query for post-states of parameters expressions- Returns:
- the
AnalysisStaterepresenting the abstract result of the execution of this expression - Throws:
SemanticException- if something goes wrong during the computation
-
-