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:
it.unive.lisa.program.cfg.ProgramPoint,it.unive.lisa.program.CodeElement,it.unive.lisa.util.datastructures.graph.code.CodeNode<it.unive.lisa.program.cfg.CFG,it.unive.lisa.program.cfg.statement.Statement,it.unive.lisa.program.cfg.edge.Edge>,it.unive.lisa.util.datastructures.graph.Node<it.unive.lisa.program.cfg.CFG,it.unive.lisa.program.cfg.statement.Statement,it.unive.lisa.program.cfg.edge.Edge>,java.lang.Comparable<it.unive.lisa.program.cfg.statement.Statement>
public class Modulo extends it.unive.lisa.program.cfg.statement.BinaryExpressionAn 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(it.unive.lisa.program.cfg.CFG cfg, it.unive.lisa.program.cfg.CodeLocation location, it.unive.lisa.program.cfg.statement.Expression left, it.unive.lisa.program.cfg.statement.Expression right)Builds the modulo.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <A extends it.unive.lisa.analysis.AbstractState<A,H,V,T>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
it.unive.lisa.analysis.AnalysisState<A,H,V,T>binarySemantics(it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V,T> interprocedural, it.unive.lisa.analysis.AnalysisState<A,H,V,T> state, it.unive.lisa.symbolic.SymbolicExpression left, it.unive.lisa.symbolic.SymbolicExpression right, it.unive.lisa.analysis.StatementStore<A,H,V,T> expressions)-
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
-
-
-
-
Constructor Detail
-
Modulo
public Modulo(it.unive.lisa.program.cfg.CFG cfg, it.unive.lisa.program.cfg.CodeLocation location, it.unive.lisa.program.cfg.statement.Expression left, it.unive.lisa.program.cfg.statement.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 it.unive.lisa.analysis.AbstractState<A,H,V,T>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>> it.unive.lisa.analysis.AnalysisState<A,H,V,T> binarySemantics(it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V,T> interprocedural, it.unive.lisa.analysis.AnalysisState<A,H,V,T> state, it.unive.lisa.symbolic.SymbolicExpression left, it.unive.lisa.symbolic.SymbolicExpression right, it.unive.lisa.analysis.StatementStore<A,H,V,T> expressions) throws it.unive.lisa.analysis.SemanticException- Specified by:
binarySemanticsin classit.unive.lisa.program.cfg.statement.BinaryExpression- Throws:
it.unive.lisa.analysis.SemanticException
-
-