V - type of the Value used for the analysis.public abstract class Interpreter<V extends Value> extends Object
Analyzer to work with
 various semantic interpreters, without needing to duplicate the code to
 simulate the transfer of values.| Modifier and Type | Field and Description | 
|---|---|
| protected int | api | 
| Modifier | Constructor and Description | 
|---|---|
| protected  | Interpreter(int api) | 
| Modifier and Type | Method and Description | 
|---|---|
| abstract V | binaryOperation(AbstractInsnNode insn,
               V value1,
               V value2)Interprets a bytecode instruction with two arguments. | 
| abstract V | copyOperation(AbstractInsnNode insn,
             V value)Interprets a bytecode instruction that moves a value on the stack or to
 or from local variables. | 
| abstract V | merge(V v,
     V w)Merges two values. | 
| abstract V | naryOperation(AbstractInsnNode insn,
             List<? extends V> values)Interprets a bytecode instruction with a variable number of arguments. | 
| abstract V | newOperation(AbstractInsnNode insn)Interprets a bytecode instruction without arguments. | 
| abstract V | newValue(Type type)Creates a new value that represents the given type. | 
| abstract void | returnOperation(AbstractInsnNode insn,
               V value,
               V expected)Interprets a bytecode return instruction. | 
| abstract V | ternaryOperation(AbstractInsnNode insn,
                V value1,
                V value2,
                V value3)Interprets a bytecode instruction with three arguments. | 
| abstract V | unaryOperation(AbstractInsnNode insn,
              V value)Interprets a bytecode instruction with a single argument. | 
public abstract V newValue(Type type)
this), exception
 handler variable and with null type for variables reserved
 by long and double types.type - a primitive or reference type, or null to represent
            an uninitialized value.public abstract V newOperation(AbstractInsnNode insn) throws AnalyzerException
insn - the bytecode instruction to be interpreted.AnalyzerException - if an error occured during the interpretation.public abstract V copyOperation(AbstractInsnNode insn, V value) throws AnalyzerException
insn - the bytecode instruction to be interpreted.value - the value that must be moved by the instruction.AnalyzerException - if an error occured during the interpretation.public abstract V unaryOperation(AbstractInsnNode insn, V value) throws AnalyzerException
insn - the bytecode instruction to be interpreted.value - the argument of the instruction to be interpreted.AnalyzerException - if an error occured during the interpretation.public abstract V binaryOperation(AbstractInsnNode insn, V value1, V value2) throws AnalyzerException
insn - the bytecode instruction to be interpreted.value1 - the first argument of the instruction to be interpreted.value2 - the second argument of the instruction to be interpreted.AnalyzerException - if an error occured during the interpretation.public abstract V ternaryOperation(AbstractInsnNode insn, V value1, V value2, V value3) throws AnalyzerException
insn - the bytecode instruction to be interpreted.value1 - the first argument of the instruction to be interpreted.value2 - the second argument of the instruction to be interpreted.value3 - the third argument of the instruction to be interpreted.AnalyzerException - if an error occured during the interpretation.public abstract V naryOperation(AbstractInsnNode insn, List<? extends V> values) throws AnalyzerException
insn - the bytecode instruction to be interpreted.values - the arguments of the instruction to be interpreted.AnalyzerException - if an error occured during the interpretation.public abstract void returnOperation(AbstractInsnNode insn, V value, V expected) throws AnalyzerException
insn - the bytecode instruction to be interpreted.value - the argument of the instruction to be interpreted.expected - the expected return type of the analyzed method.AnalyzerException - if an error occured during the interpretation.public abstract V merge(V v, V w)
v - a value.w - another value.