Class TernaryExpression

    • Constructor Detail

      • TernaryExpression

        protected TernaryExpression​(CFG cfg,
                                    CodeLocation location,
                                    java.lang.String constructName,
                                    Expression left,
                                    Expression middle,
                                    Expression right)
        Builds the untyped expression, happening at the given location in the program. The static type of this expression is Untyped. The EvaluationOrder is LeftToRightEvaluation.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the program
        constructName - the name of the construct represented by this expression
        left - the first sub-expression of this expression
        middle - the second sub-expression of this expression
        right - the third sub-expression of this expression
      • TernaryExpression

        protected TernaryExpression​(CFG cfg,
                                    CodeLocation location,
                                    java.lang.String constructName,
                                    Type staticType,
                                    Expression left,
                                    Expression middle,
                                    Expression right)
        Builds the expression, happening at the given location in the program. The EvaluationOrder is LeftToRightEvaluation.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the program
        constructName - the name of the construct represented by this expression
        staticType - the static type of this expression
        left - the first sub-expression of this expression
        middle - the second sub-expression of this expression
        right - the third sub-expression of this expression
      • TernaryExpression

        protected TernaryExpression​(CFG cfg,
                                    CodeLocation location,
                                    java.lang.String constructName,
                                    EvaluationOrder order,
                                    Expression left,
                                    Expression middle,
                                    Expression right)
        Builds the untyped expression, happening at the given location in the program. The static type of this expression is Untyped.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the program
        constructName - the name of the construct represented by this expression
        order - the evaluation order of the sub-expressions
        left - the first sub-expression of this expression
        middle - the second sub-expression of this expression
        right - the third sub-expression of this expression
      • TernaryExpression

        protected TernaryExpression​(CFG cfg,
                                    CodeLocation location,
                                    java.lang.String constructName,
                                    EvaluationOrder order,
                                    Type staticType,
                                    Expression left,
                                    Expression middle,
                                    Expression right)
        Builds the expression, happening at the given location in the program.
        Parameters:
        cfg - the cfg that this expression belongs to
        location - the location where the expression is defined within the program
        constructName - the name of the construct represented by this expression
        order - the evaluation order of the sub-expressions
        staticType - the static type of this expression
        left - the first sub-expression of this expression
        middle - the second sub-expression of this expression
        right - the third sub-expression of this expression
    • Method Detail

      • getLeft

        public Expression getLeft()
        Yields the left-most (first) sub-expression of this expression.
        Returns:
        the left-most sub-expression
      • getMiddle

        public Expression getMiddle()
        Yields the middle (second) sub-expression of this expression.
        Returns:
        the middle sub-expression
      • getRight

        public Expression getRight()
        Yields the right-most (third) sub-expression of this expression.
        Returns:
        the right-most 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: NaryExpression
        Computes the forward semantics of the expression, 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 NaryExpression
        Type Parameters:
        A - the type of AbstractState
        Parameters:
        interprocedural - the interprocedural analysis of the program to analyze
        state - the state where the expression is to be evaluated
        params - the symbolic expressions representing the computed values of the sub-expressions 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 expression
        Throws:
        SemanticException - if something goes wrong during the computation
      • fwdTernarySemantics

        public abstract <A extends AbstractState<A>> AnalysisState<A> fwdTernarySemantics​(InterproceduralAnalysis<A> interprocedural,
                                                                                          AnalysisState<A> state,
                                                                                          SymbolicExpression left,
                                                                                          SymbolicExpression middle,
                                                                                          SymbolicExpression right,
                                                                                          StatementStore<A> expressions)
                                                                                   throws SemanticException
        Computes the forward 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.
        Type Parameters:
        A - the type of AbstractState
        Parameters:
        interprocedural - the interprocedural analysis of the program to analyze
        state - the state where the expression is to be evaluated
        left - the symbolic expression representing the computed value of the first sub-expression of this expression
        middle - the symbolic expression representing the computed value of the second sub-expression of this expression
        right - the symbolic expression representing the computed value of the third 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 expression
        Throws:
        SemanticException - if something goes wrong during the computation
      • bwdTernarySemantics

        public <A extends AbstractState<A>> AnalysisState<A> bwdTernarySemantics​(InterproceduralAnalysis<A> interprocedural,
                                                                                 AnalysisState<A> state,
                                                                                 SymbolicExpression left,
                                                                                 SymbolicExpression middle,
                                                                                 SymbolicExpression right,
                                                                                 StatementStore<A> expressions)
                                                                          throws SemanticException
        Computes the backward 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. By default, this method delegates to fwdTernarySemantics(InterproceduralAnalysis, AnalysisState, SymbolicExpression, SymbolicExpression, 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 expression is to be evaluated
        left - the symbolic expression representing the computed value of the first sub-expression of this expression
        middle - the symbolic expression representing the computed value of the second sub-expression of this expression
        right - the symbolic expression representing the computed value of the third 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 expression
        Throws:
        SemanticException - if something goes wrong during the computation