Package com.googlecode.aviator.code
Class LambdaGenerator
- java.lang.Object
-
- com.googlecode.aviator.code.LambdaGenerator
-
- All Implemented Interfaces:
CodeGenerator
public class LambdaGenerator extends java.lang.Object implements CodeGenerator
Lambda function generator
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.StringclassNameprivate CodeGeneratorcodeGeneratorprivate booleaninheritEnvprivate static java.util.concurrent.atomic.AtomicLongLAMBDA_COUNTERprivate booleannewLexicalScopeprivate java.util.List<FunctionParam>paramsprivate CodeGeneratorparentCodeGeneratorprivate ScopeInfoscopeInfo
-
Constructor Summary
Constructors Constructor Description LambdaGenerator(AviatorEvaluatorInstance instance, CodeGenerator parentCodeGenerator, Parser parser, AviatorClassLoader classLoader, java.lang.String sourceFile, boolean newLexicalScope, boolean inheritEnv)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddParam(FunctionParam name)LambdaFunctionBootstrapgetLmabdaBootstrap()Compile a call method to invoke lambda compiled body expression.ExpressiongetResult(boolean unboxObject)ScopeInfogetScopeInfo()voidonAdd(Token<?> lookhead)voidonAndLeft(Token<?> lookhead)voidonAndRight(Token<?> lookhead)voidonArray(Token<?> lookhead)voidonArrayIndexEnd(Token<?> lookhead)voidonArrayIndexStart(Token<?> token)voidonAssignment(Token<?> lookhead)voidonBitAnd(Token<?> lookhead)voidonBitNot(Token<?> lookhead)voidonBitOr(Token<?> lookhead)voidonBitXor(Token<?> lookhead)voidonConstant(Token<?> lookhead)voidonDiv(Token<?> lookhead)voidonEq(Token<?> lookhead)voidonExponent(Token<?> lookhead)voidonGe(Token<?> lookhead)voidonGt(Token<?> lookhead)voidonJoinLeft(Token<?> lookhead)voidonJoinRight(Token<?> lookhead)voidonLambdaArgument(Token<?> lookhead, FunctionParam param)voidonLambdaBodyEnd(Token<?> lookhead)voidonLambdaBodyStart(Token<?> lookhead)voidonLambdaDefineStart(Token<?> lookhead)voidonLe(Token<?> lookhead)voidonLt(Token<?> lookhead)voidonMatch(Token<?> lookhead)voidonMethodInvoke(Token<?> lookhead)voidonMethodName(Token<?> lookhead)voidonMethodParameter(Token<?> lookhead)voidonMod(Token<?> lookhead)voidonMult(Token<?> lookhead)voidonNeg(Token<?> lookhead)voidonNeq(Token<?> lookhead)voidonNot(Token<?> lookhead)voidonShiftLeft(Token<?> lookhead)voidonShiftRight(Token<?> lookhead)voidonSub(Token<?> lookhead)voidonTernaryBoolean(Token<?> lookhead)voidonTernaryEnd(Token<?> lookhead)voidonTernaryLeft(Token<?> lookhead)voidonTernaryRight(Token<?> lookhead)voidonUnsignedShiftRight(Token<?> lookhead)voidsetParser(Parser parser)voidsetScopeInfo(ScopeInfo scopeInfo)
-
-
-
Field Detail
-
params
private final java.util.List<FunctionParam> params
-
codeGenerator
private final CodeGenerator codeGenerator
-
parentCodeGenerator
private final CodeGenerator parentCodeGenerator
-
className
private final java.lang.String className
-
LAMBDA_COUNTER
private static final java.util.concurrent.atomic.AtomicLong LAMBDA_COUNTER
-
scopeInfo
private ScopeInfo scopeInfo
-
newLexicalScope
private final boolean newLexicalScope
-
inheritEnv
private final boolean inheritEnv
-
-
Constructor Detail
-
LambdaGenerator
public LambdaGenerator(AviatorEvaluatorInstance instance, CodeGenerator parentCodeGenerator, Parser parser, AviatorClassLoader classLoader, java.lang.String sourceFile, boolean newLexicalScope, boolean inheritEnv)
-
-
Method Detail
-
getScopeInfo
public ScopeInfo getScopeInfo()
-
setScopeInfo
public void setScopeInfo(ScopeInfo scopeInfo)
-
setParser
public void setParser(Parser parser)
- Specified by:
setParserin interfaceCodeGenerator
-
getLmabdaBootstrap
public LambdaFunctionBootstrap getLmabdaBootstrap()
Compile a call method to invoke lambda compiled body expression.
-
addParam
public void addParam(FunctionParam name)
-
onShiftRight
public void onShiftRight(Token<?> lookhead)
- Specified by:
onShiftRightin interfaceCodeGenerator
-
onShiftLeft
public void onShiftLeft(Token<?> lookhead)
- Specified by:
onShiftLeftin interfaceCodeGenerator
-
onUnsignedShiftRight
public void onUnsignedShiftRight(Token<?> lookhead)
- Specified by:
onUnsignedShiftRightin interfaceCodeGenerator
-
onAssignment
public void onAssignment(Token<?> lookhead)
- Specified by:
onAssignmentin interfaceCodeGenerator
-
onBitOr
public void onBitOr(Token<?> lookhead)
- Specified by:
onBitOrin interfaceCodeGenerator
-
onBitAnd
public void onBitAnd(Token<?> lookhead)
- Specified by:
onBitAndin interfaceCodeGenerator
-
onBitXor
public void onBitXor(Token<?> lookhead)
- Specified by:
onBitXorin interfaceCodeGenerator
-
onBitNot
public void onBitNot(Token<?> lookhead)
- Specified by:
onBitNotin interfaceCodeGenerator
-
onAdd
public void onAdd(Token<?> lookhead)
- Specified by:
onAddin interfaceCodeGenerator
-
onSub
public void onSub(Token<?> lookhead)
- Specified by:
onSubin interfaceCodeGenerator
-
onMult
public void onMult(Token<?> lookhead)
- Specified by:
onMultin interfaceCodeGenerator
-
onExponent
public void onExponent(Token<?> lookhead)
- Specified by:
onExponentin interfaceCodeGenerator
-
onDiv
public void onDiv(Token<?> lookhead)
- Specified by:
onDivin interfaceCodeGenerator
-
onAndLeft
public void onAndLeft(Token<?> lookhead)
- Specified by:
onAndLeftin interfaceCodeGenerator
-
onAndRight
public void onAndRight(Token<?> lookhead)
- Specified by:
onAndRightin interfaceCodeGenerator
-
onTernaryBoolean
public void onTernaryBoolean(Token<?> lookhead)
- Specified by:
onTernaryBooleanin interfaceCodeGenerator
-
onTernaryLeft
public void onTernaryLeft(Token<?> lookhead)
- Specified by:
onTernaryLeftin interfaceCodeGenerator
-
onTernaryRight
public void onTernaryRight(Token<?> lookhead)
- Specified by:
onTernaryRightin interfaceCodeGenerator
-
onTernaryEnd
public void onTernaryEnd(Token<?> lookhead)
- Specified by:
onTernaryEndin interfaceCodeGenerator
-
onJoinLeft
public void onJoinLeft(Token<?> lookhead)
- Specified by:
onJoinLeftin interfaceCodeGenerator
-
onJoinRight
public void onJoinRight(Token<?> lookhead)
- Specified by:
onJoinRightin interfaceCodeGenerator
-
onEq
public void onEq(Token<?> lookhead)
- Specified by:
onEqin interfaceCodeGenerator
-
onMatch
public void onMatch(Token<?> lookhead)
- Specified by:
onMatchin interfaceCodeGenerator
-
onNeq
public void onNeq(Token<?> lookhead)
- Specified by:
onNeqin interfaceCodeGenerator
-
onLt
public void onLt(Token<?> lookhead)
- Specified by:
onLtin interfaceCodeGenerator
-
onLe
public void onLe(Token<?> lookhead)
- Specified by:
onLein interfaceCodeGenerator
-
onGt
public void onGt(Token<?> lookhead)
- Specified by:
onGtin interfaceCodeGenerator
-
onGe
public void onGe(Token<?> lookhead)
- Specified by:
onGein interfaceCodeGenerator
-
onMod
public void onMod(Token<?> lookhead)
- Specified by:
onModin interfaceCodeGenerator
-
onNot
public void onNot(Token<?> lookhead)
- Specified by:
onNotin interfaceCodeGenerator
-
onNeg
public void onNeg(Token<?> lookhead)
- Specified by:
onNegin interfaceCodeGenerator
-
getResult
public Expression getResult(boolean unboxObject)
- Specified by:
getResultin interfaceCodeGenerator
-
onConstant
public void onConstant(Token<?> lookhead)
- Specified by:
onConstantin interfaceCodeGenerator
-
onMethodName
public void onMethodName(Token<?> lookhead)
- Specified by:
onMethodNamein interfaceCodeGenerator
-
onMethodParameter
public void onMethodParameter(Token<?> lookhead)
- Specified by:
onMethodParameterin interfaceCodeGenerator
-
onMethodInvoke
public void onMethodInvoke(Token<?> lookhead)
- Specified by:
onMethodInvokein interfaceCodeGenerator
-
onLambdaDefineStart
public void onLambdaDefineStart(Token<?> lookhead)
- Specified by:
onLambdaDefineStartin interfaceCodeGenerator
-
onLambdaArgument
public void onLambdaArgument(Token<?> lookhead, FunctionParam param)
- Specified by:
onLambdaArgumentin interfaceCodeGenerator
-
onLambdaBodyStart
public void onLambdaBodyStart(Token<?> lookhead)
- Specified by:
onLambdaBodyStartin interfaceCodeGenerator
-
onLambdaBodyEnd
public void onLambdaBodyEnd(Token<?> lookhead)
- Specified by:
onLambdaBodyEndin interfaceCodeGenerator
-
onArray
public void onArray(Token<?> lookhead)
- Specified by:
onArrayin interfaceCodeGenerator
-
onArrayIndexStart
public void onArrayIndexStart(Token<?> token)
- Specified by:
onArrayIndexStartin interfaceCodeGenerator
-
onArrayIndexEnd
public void onArrayIndexEnd(Token<?> lookhead)
- Specified by:
onArrayIndexEndin interfaceCodeGenerator
-
-