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 Details

    • instruments

      private final List<IR> instruments
    • constantPool

      private Set<Token<?>> constantPool
    • labelNum

      private int labelNum
    • labels0

      private final Stack<Label> labels0
    • labels1

      private final Stack<Label> labels1
    • currLabel

      private Label currLabel
    • LOAD_CONSTANTS_TYPE

      private static Set<Token.TokenType> LOAD_CONSTANTS_TYPE
  • Constructor Details

  • Method Details

    • 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(Map<String,VariableMeta> vars)
    • initConstants

      public void initConstants(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(List<IR> instruments)
    • resolveLabels

      private void resolveLabels(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)