Class UnaryStatement

    • Constructor Detail

      • UnaryStatement

        protected UnaryStatement​(CFG cfg,
                                 CodeLocation location,
                                 java.lang.String constructName,
                                 Expression subExpression)
        Builds the statement, happening at the given location in the program. The EvaluationOrder is LeftToRightEvaluation.
        Parameters:
        cfg - the cfg that this statement belongs to
        location - the location where the statement is defined within the program
        constructName - the name of the construct represented by this statement
        subExpression - the sub-expression of this statement
      • UnaryStatement

        protected UnaryStatement​(CFG cfg,
                                 CodeLocation location,
                                 java.lang.String constructName,
                                 EvaluationOrder order,
                                 Expression subExpression)
        Builds the statement, happening at the given location in the program.
        Parameters:
        cfg - the cfg that this statement belongs to
        location - the location where the statement is defined within the program
        constructName - the name of the construct represented by this statement
        order - the evaluation order of the sub-expressions
        subExpression - the sub-expression of this statement
    • Method Detail

      • getSubExpression

        public Expression getSubExpression()
        Yields the only sub-expression of this unary statement.
        Returns:
        the only sub-expression
      • forwardSemanticsAux

        public <A extends AbstractState<A>> AnalysisState<A> forwardSemanticsAux​(InterproceduralAnalysis<A> interprocedural,
                                                                                 AnalysisState<A> state,
                                                                                 ExpressionSet[] params,
                                                                                 StatementStore<A> expressions)
                                                                          throws SemanticException
        Description copied from class: NaryStatement
        Computes the forward semantics of the statement, after the semantics of all sub-expressions have been computed. Meta variables from the sub-expressions will be forgotten after this call returns.
        Specified by:
        forwardSemanticsAux in class NaryStatement
        Type Parameters:
        A - the type of AbstractState
        Parameters:
        interprocedural - the interprocedural analysis of the program to analyze
        state - the state where the statement is to be evaluated
        params - the symbolic expressions representing the computed values of the sub-expressions of this statement
        expressions - 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 AnalysisState representing the abstract result of the execution of this statement
        Throws:
        SemanticException - if something goes wrong during the computation
      • fwdUnarySemantics

        public abstract <A extends AbstractState<A>> AnalysisState<A> fwdUnarySemantics​(InterproceduralAnalysis<A> interprocedural,
                                                                                        AnalysisState<A> state,
                                                                                        SymbolicExpression expr,
                                                                                        StatementStore<A> expressions)
                                                                                 throws SemanticException
        Computes the forward semantics of the statement, after the semantics of the sub-expression has been computed. Meta variables from the sub-expression will be forgotten after this statement returns.
        Type Parameters:
        A - the type of AbstractState
        Parameters:
        interprocedural - the interprocedural analysis of the program to analyze
        state - the state where the statement is to be evaluated
        expr - the symbolic expressions representing the computed value of the sub-expression of this expression
        expressions - 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 AnalysisState representing the abstract result of the execution of this statement
        Throws:
        SemanticException - if something goes wrong during the computation
      • bwdUnarySemantics

        public <A extends AbstractState<A>> AnalysisState<A> bwdUnarySemantics​(InterproceduralAnalysis<A> interprocedural,
                                                                               AnalysisState<A> state,
                                                                               SymbolicExpression expr,
                                                                               StatementStore<A> expressions)
                                                                        throws SemanticException
        Computes the backward semantics of the statement, after the semantics of the sub-expression has been computed. Meta variables from the sub-expression will be forgotten after this statement returns. By default, this method delegates to fwdUnarySemantics(InterproceduralAnalysis, AnalysisState, SymbolicExpression, StatementStore), as it is fine for most atomic statements. One should redefine this method if a statement's semantics is composed of a series of smaller operations.
        Type Parameters:
        A - the type of AbstractState
        Parameters:
        interprocedural - the interprocedural analysis of the program to analyze
        state - the state where the statement is to be evaluated
        expr - the symbolic expressions representing the computed value of the sub-expression of this expression
        expressions - 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 AnalysisState representing the abstract result of the execution of this statement
        Throws:
        SemanticException - if something goes wrong during the computation