Class InterpretCodeGenerator
- java.lang.Object
-
- com.googlecode.aviator.code.BaseEvalCodeGenerator
-
- com.googlecode.aviator.code.interpreter.InterpretCodeGenerator
-
- All Implemented Interfaces:
CodeGenerator
,EvalCodeGenerator
public class InterpretCodeGenerator extends BaseEvalCodeGenerator
Generate expression based on IR for interpreting.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<Token<?>>
constantPool
private Label
currLabel
private java.util.List<IR>
instruments
private int
labelNum
private java.util.Stack<Label>
labels0
private java.util.Stack<Label>
labels1
private static java.util.Set<Token.TokenType>
LOAD_CONSTANTS_TYPE
-
Fields inherited from class com.googlecode.aviator.code.BaseEvalCodeGenerator
classLoader, compileEnv, funcsArgs, instance, lambdaBootstraps, lambdaGenerator, methodMetaDataStack, methodTokens, parentCodeGenerator, parser, sourceFile, symbolTable, variables
-
-
Constructor Summary
Constructors Constructor Description InterpretCodeGenerator(AviatorEvaluatorInstance instance, java.lang.String sourceFile, AviatorClassLoader classLoader)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
emit(IR ir)
void
genNewLambdaCode(LambdaFunctionBootstrap bootstrap)
Expression
getResult(boolean unboxObject)
void
initConstants(java.util.Set<Token<?>> constants)
void
initVariables(java.util.Map<java.lang.String,VariableMeta> vars)
private Label
makeLabel()
void
onAdd(Token<?> lookhead)
void
onAndLeft(Token<?> lookhead)
void
onAndRight(Token<?> lookhead)
void
onArray(Token<?> lookhead)
void
onArrayIndexEnd(Token<?> lookhead)
void
onArrayIndexStart(Token<?> token)
void
onAssignment(Token<?> lookhead)
void
onBitAnd(Token<?> lookhead)
void
onBitNot(Token<?> lookhead)
void
onBitOr(Token<?> lookhead)
void
onBitXor(Token<?> lookhead)
void
onConstant(Token<?> lookhead)
void
onDiv(Token<?> lookhead)
void
onEq(Token<?> lookhead)
void
onExponent(Token<?> loohead)
void
onGe(Token<?> lookhead)
void
onGt(Token<?> lookhead)
void
onJoinLeft(Token<?> lookhead)
void
onJoinRight(Token<?> lookhead)
void
onLambdaArgument(Token<?> lookhead, FunctionParam param)
void
onLambdaBodyEnd(Token<?> lookhead)
void
onLambdaBodyStart(Token<?> lookhead)
void
onLambdaDefineStart(Token<?> lookhead)
void
onLe(Token<?> lookhead)
void
onLt(Token<?> lookhead)
void
onMatch(Token<?> lookhead)
void
onMethodInvoke(Token<?> lookhead)
void
onMethodName(Token<?> lookhead)
void
onMethodParameter(Token<?> lookhead)
void
onMod(Token<?> lookhead)
void
onMult(Token<?> lookhead)
void
onNeg(Token<?> lookhead)
void
onNeq(Token<?> lookhead)
void
onNot(Token<?> lookhead)
void
onShiftLeft(Token<?> lookhead)
void
onShiftRight(Token<?> lookhead)
void
onSub(Token<?> lookhead)
void
onTernaryBoolean(Token<?> lookhead)
void
onTernaryEnd(Token<?> lookhead)
void
onTernaryLeft(Token<?> lookhead)
void
onTernaryRight(Token<?> lookhead)
void
onUnsignedShiftRight(Token<?> lookhead)
private void
optimize(java.util.List<IR> instruments)
private Label
peekLabel0()
private Label
peekLabel1()
private Label
popLabel0()
private Label
popLabel1()
private void
pushLabel0(Label label)
private void
pushLabel1(Label label)
private void
resolveLabels(java.util.List<IR> instruments)
void
start()
private void
visitLabel(Label label)
-
Methods inherited from class com.googlecode.aviator.code.BaseEvalCodeGenerator
getClassLoader, getFuncsArgs, getNextFuncInvocationId, initMethods, setLambdaBootstraps, setParser
-
-
-
-
Field Detail
-
instruments
private final java.util.List<IR> instruments
-
constantPool
private java.util.Set<Token<?>> constantPool
-
labelNum
private int labelNum
-
labels0
private final java.util.Stack<Label> labels0
-
labels1
private final java.util.Stack<Label> labels1
-
currLabel
private Label currLabel
-
LOAD_CONSTANTS_TYPE
private static java.util.Set<Token.TokenType> LOAD_CONSTANTS_TYPE
-
-
Constructor Detail
-
InterpretCodeGenerator
public InterpretCodeGenerator(AviatorEvaluatorInstance instance, java.lang.String sourceFile, AviatorClassLoader classLoader)
-
-
Method Detail
-
visitLabel
private void visitLabel(Label label)
-
pushLabel0
private void pushLabel0(Label label)
-
popLabel0
private Label popLabel0()
-
peekLabel0
private Label peekLabel0()
-
pushLabel1
private void pushLabel1(Label label)
-
popLabel1
private Label popLabel1()
-
peekLabel1
private Label peekLabel1()
-
makeLabel
private Label makeLabel()
-
start
public void start()
-
initVariables
public void initVariables(java.util.Map<java.lang.String,VariableMeta> vars)
-
initConstants
public void initConstants(java.util.Set<Token<?>> constants)
-
genNewLambdaCode
public void genNewLambdaCode(LambdaFunctionBootstrap bootstrap)
-
onAssignment
public void onAssignment(Token<?> lookhead)
-
onShiftRight
public void onShiftRight(Token<?> lookhead)
-
onShiftLeft
public void onShiftLeft(Token<?> lookhead)
-
onUnsignedShiftRight
public void onUnsignedShiftRight(Token<?> lookhead)
-
onBitOr
public void onBitOr(Token<?> lookhead)
-
onBitAnd
public void onBitAnd(Token<?> lookhead)
-
onBitXor
public void onBitXor(Token<?> lookhead)
-
onBitNot
public void onBitNot(Token<?> lookhead)
-
onAdd
public void onAdd(Token<?> lookhead)
-
onSub
public void onSub(Token<?> lookhead)
-
onMult
public void onMult(Token<?> lookhead)
-
onExponent
public void onExponent(Token<?> loohead)
-
onDiv
public void onDiv(Token<?> lookhead)
-
onAndLeft
public void onAndLeft(Token<?> lookhead)
-
emit
private void emit(IR ir)
-
onAndRight
public void onAndRight(Token<?> lookhead)
-
onTernaryBoolean
public void onTernaryBoolean(Token<?> lookhead)
-
onTernaryLeft
public void onTernaryLeft(Token<?> lookhead)
-
onTernaryRight
public void onTernaryRight(Token<?> lookhead)
-
onTernaryEnd
public void onTernaryEnd(Token<?> lookhead)
-
onJoinLeft
public void onJoinLeft(Token<?> lookhead)
-
onJoinRight
public void onJoinRight(Token<?> lookhead)
-
onEq
public void onEq(Token<?> lookhead)
-
onMatch
public void onMatch(Token<?> lookhead)
-
onNeq
public void onNeq(Token<?> lookhead)
-
onLt
public void onLt(Token<?> lookhead)
-
onLe
public void onLe(Token<?> lookhead)
-
onGt
public void onGt(Token<?> lookhead)
-
onGe
public void onGe(Token<?> lookhead)
-
onMod
public void onMod(Token<?> lookhead)
-
onNot
public void onNot(Token<?> lookhead)
-
onNeg
public void onNeg(Token<?> lookhead)
-
getResult
public Expression getResult(boolean unboxObject)
-
optimize
private void optimize(java.util.List<IR> instruments)
-
resolveLabels
private void resolveLabels(java.util.List<IR> instruments)
-
onConstant
public void onConstant(Token<?> lookhead)
-
onMethodName
public void onMethodName(Token<?> lookhead)
-
onMethodParameter
public void onMethodParameter(Token<?> lookhead)
-
onMethodInvoke
public void onMethodInvoke(Token<?> lookhead)
-
onLambdaDefineStart
public void onLambdaDefineStart(Token<?> lookhead)
-
onLambdaArgument
public void onLambdaArgument(Token<?> lookhead, FunctionParam param)
-
onLambdaBodyStart
public void onLambdaBodyStart(Token<?> lookhead)
-
onLambdaBodyEnd
public void onLambdaBodyEnd(Token<?> lookhead)
-
onArray
public void onArray(Token<?> lookhead)
-
onArrayIndexStart
public void onArrayIndexStart(Token<?> token)
-
onArrayIndexEnd
public void onArrayIndexEnd(Token<?> lookhead)
-
-