Class 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.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 of NumericType. 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
      protected int compareSameClassAndParams​(it.unive.lisa.program.cfg.statement.Statement o)  
      <A extends it.unive.lisa.analysis.AbstractState<A>>
      it.unive.lisa.analysis.AnalysisState<A>
      fwdBinarySemantics​(it.unive.lisa.interprocedural.InterproceduralAnalysis<A> interprocedural, it.unive.lisa.analysis.AnalysisState<A> state, it.unive.lisa.symbolic.SymbolicExpression left, it.unive.lisa.symbolic.SymbolicExpression right, it.unive.lisa.analysis.StatementStore<A> expressions)  
      • Methods inherited from class it.unive.lisa.program.cfg.statement.BinaryExpression

        backwardSemanticsAux, bwdBinarySemantics, forwardSemanticsAux, getLeft, getRight
      • Methods inherited from class it.unive.lisa.program.cfg.statement.NaryExpression

        accept, backwardSemantics, compareSameClass, equals, forwardSemantics, getConstructName, getOrder, getStatementEvaluatedAfter, getStatementEvaluatedBefore, getSubExpressions, hashCode, 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, getEvaluationSuccessor, getLocation, 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​(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 - the CFG where this operation lies
        location - the location where this literal is defined
        left - the left-hand side of this operation
        right - the right-hand side of this operation
    • Method Detail

      • compareSameClassAndParams

        protected int compareSameClassAndParams​(it.unive.lisa.program.cfg.statement.Statement o)
        Specified by:
        compareSameClassAndParams in class it.unive.lisa.program.cfg.statement.NaryExpression
      • fwdBinarySemantics

        public <A extends it.unive.lisa.analysis.AbstractState<A>> it.unive.lisa.analysis.AnalysisState<A> fwdBinarySemantics​(it.unive.lisa.interprocedural.InterproceduralAnalysis<A> interprocedural,
                                                                                                                              it.unive.lisa.analysis.AnalysisState<A> state,
                                                                                                                              it.unive.lisa.symbolic.SymbolicExpression left,
                                                                                                                              it.unive.lisa.symbolic.SymbolicExpression right,
                                                                                                                              it.unive.lisa.analysis.StatementStore<A> expressions)
                                                                                                                       throws it.unive.lisa.analysis.SemanticException
        Specified by:
        fwdBinarySemantics in class it.unive.lisa.program.cfg.statement.BinaryExpression
        Throws:
        it.unive.lisa.analysis.SemanticException