Type of the state abstract domain the semantics are defined for
OptionalhandleHandles an access operation, such as x[1], x[[1]], or x$id.
The abstract state to apply the semantics to
The dataflow graph vertex of the access call
The context of the abstract interpretation analysis
The ID of the accessed expression
OptionalhandleHandles an assignment, such as x <- 42 or assign("x", 42).
The abstract state to apply the semantics to
The dataflow graph vertex of the assignment call
The context of the abstract interpretation analysis
The ID of the assignment target the value is assigned to
The ID of the assigned source expression
OptionalhandleHandles a break (or next) call within a loop.
The abstract state to apply the semantics to
The dataflow graph vertex of the break call
The context of the abstract interpretation analysis
OptionalhandleHandles a control flow edge that is only taken if a condition evaluates to a specific value, allowing to refine the abstract state with the information gained from the taken branch.
The abstract state to apply the semantics to
The dataflow graph vertex of the condition of the branch
The context of the abstract interpretation analysis
Whether the branch is taken if the condition evaluates to TRUE or to FALSE
OptionalhandleHandles an expression list, such as the body of a function or a { ... } block.
The abstract state to apply the semantics to
The dataflow graph vertex of the expression list
The context of the abstract interpretation analysis
The IDs of the expressions contained in the expression list
OptionalhandleHandles a for loop.
The abstract state to apply the semantics to
The dataflow graph vertex of the for loop
The context of the abstract interpretation analysis
The ID of the loop variable
The ID of the vector the loop iterates over
The ID of the body of the loop
OptionalhandleHandles a function call that is not covered by any of the other, more specific handlers (e.g. data.frame(id = 1:5)).
The abstract state to apply the semantics to
The dataflow graph vertex of the function call
The context of the abstract interpretation analysis
OptionalhandleHandles a function definition, such as function(x) x + 1.
The abstract state to apply the semantics to
The dataflow graph vertex of the function definition
The context of the abstract interpretation analysis
The IDs of the parameters of the defined function
OptionalhandleHandles an if-then-else expression.
The abstract state to apply the semantics to
The dataflow graph vertex of the if expression
The context of the abstract interpretation analysis
The ID of the condition of the if expression
The ID of the branch taken if the condition holds
Optionalotherwise: NodeId
The ID of the branch taken if the condition does not hold (may be undefined if there is no else branch)
OptionalhandleHandles a logical constant, i.e. TRUE or FALSE.
The abstract state to apply the semantics to
The dataflow graph vertex of the constant
The context of the abstract interpretation analysis
The concrete value of the logical constant
OptionalhandleHandles the NULL constant.
The abstract state to apply the semantics to
The dataflow graph vertex of the constant
The context of the abstract interpretation analysis
The concrete value of the constant (always NULL)
OptionalhandleHandles a numeric constant, such as 42.
The abstract state to apply the semantics to
The dataflow graph vertex of the constant
The context of the abstract interpretation analysis
The concrete value of the number constant
OptionalhandleHandles a pipe expression, such as x |> head().
The abstract state to apply the semantics to
The dataflow graph vertex of the pipe call
The context of the abstract interpretation analysis
OptionalhandleHandles a repeat loop.
The abstract state to apply the semantics to
The dataflow graph vertex of the repeat loop
The context of the abstract interpretation analysis
The ID of the body of the loop
OptionalhandleHandles a replacement call, i.e. an assignment to a function call such as names(x) <- "id" or x$id <- 1:5.
The abstract state to apply the semantics to
The dataflow graph vertex of the replacement call
The context of the abstract interpretation analysis
The ID of the assignment target the value is assigned to
The ID of the assigned source expression
OptionalhandleHandles a return call within a function definition.
The abstract state to apply the semantics to
The dataflow graph vertex of the return call
The context of the abstract interpretation analysis
OptionalhandleHandles a string constant, such as "id".
The abstract state to apply the semantics to
The dataflow graph vertex of the constant
The context of the abstract interpretation analysis
The concrete value of the string constant
OptionalhandleHandles a symbol constant, i.e. a symbol that is not a variable use, such as NA or Inf.
The abstract state to apply the semantics to
The dataflow graph vertex of the constant
The context of the abstract interpretation analysis
The identifier of the symbol constant
OptionalhandleHandles the definition of a variable, such as x in x <- 42.
The abstract state to apply the semantics to
The dataflow graph vertex of the variable definition
The context of the abstract interpretation analysis
OptionalhandleHandles the use of a variable, such as x in print(x).
The abstract state to apply the semantics to
The dataflow graph vertex of the variable use
The context of the abstract interpretation analysis
OptionalhandleHandles a while loop.
The abstract state to apply the semantics to
The dataflow graph vertex of the while loop
The context of the abstract interpretation analysis
The ID of the condition of the loop
The ID of the body of the loop
The abstract semantics of an abstract domain, defining the abstract effect of the different R constructs on the abstract state.
All handlers are optional, so only the semantics of the constructs relevant for the respective abstract domain have to be defined. The handlers are called by the abstract interpretation visitor whenever the respective construct is visited, and are expected to apply their effect by updating the passed abstract
statein place.