Package net.jangaroo.jooc.backend
Class JsCodeGenerator
- java.lang.Object
-
- net.jangaroo.jooc.backend.CodeGeneratorBase
-
- net.jangaroo.jooc.backend.JsCodeGenerator
-
- All Implemented Interfaces:
AstVisitor
public class JsCodeGenerator extends CodeGeneratorBase
A visitor of the AST that generates executable JavaScript code on aJsWriter.
-
-
Field Summary
Fields Modifier and Type Field Description static List<String>ANNOTATIONS_TO_TRIGGER_AT_RUNTIMEstatic StringDEFAULT_ANNOTATION_PARAMETER_NAMEstatic StringINIT_STATICSstatic Set<String>PRIMITIVES-
Fields inherited from class net.jangaroo.jooc.backend.CodeGeneratorBase
compilationUnitModelResolver, out, PROPERTY_CLASS_INSTANCE
-
-
Constructor Summary
Constructors Constructor Description JsCodeGenerator(JsWriter out, CompilationUnitResolver compilationUnitModelResolver, JsModuleResolver jsModuleResolver)
-
Method Summary
-
Methods inherited from class net.jangaroo.jooc.backend.CodeGeneratorBase
addBlockStartCodeGenerator, findFunctionDeclaration, findMemberWithBindableAnnotation, getBindablePropertiesByName, getBindablePropertyName, getObjectAndProperty, getPropertiesClassAssignments, renderPropertiesClassValues, visitAll, visitAnnotationParameter, visitApplyExprArguments, visitArrayIndexExpr, visitArrayLiteral, visitAsExpr, visitBinaryOpExpr, visitBlockStatement, visitBlockStatementDirectives, visitBreakStatement, visitCaseStatement, visitCatch, visitClassBodyDirectives, visitCommaSeparatedList, visitConditionalExpr, visitContinueStatement, visitDefaultStatement, visitDoStatement, visitEmptyDeclaration, visitEmptyStatement, visitForInitializer, visitForStatement, visitIfNotNull, visitIfNotNull, visitIfStatement, visitImplements, visitInfixOpExpr, visitInitializer, visitIsExpr, visitLabeledStatement, visitLiteralExpr, visitNewExpr, visitObjectField, visitObjectFieldValue, visitObjectLiteral, visitParenthesizedExpr, visitPostfixOpExpr, visitPredefinedTypeDeclaration, visitReturnStatement, visitSemicolonTerminatedStatement, visitSwitchStatement, visitThrowStatement, visitTryStatement, visitType, visitWhileStatement, writeModifiers, writeOptSymbol, writeOptSymbol, writeOptSymbolWhitespace, writeSymbolReplacement
-
-
-
-
Field Detail
-
ANNOTATIONS_TO_TRIGGER_AT_RUNTIME
public static final List<String> ANNOTATIONS_TO_TRIGGER_AT_RUNTIME
-
DEFAULT_ANNOTATION_PARAMETER_NAME
public static final String DEFAULT_ANNOTATION_PARAMETER_NAME
- See Also:
- Constant Field Values
-
INIT_STATICS
public static final String INIT_STATICS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JsCodeGenerator
public JsCodeGenerator(JsWriter out, CompilationUnitResolver compilationUnitModelResolver, JsModuleResolver jsModuleResolver)
-
-
Method Detail
-
generatesCode
public static boolean generatesCode(IdeDeclaration primaryDeclaration)
-
visitDotExpr
public void visitDotExpr(DotExpr dotExpr) throws IOException
- Specified by:
visitDotExprin interfaceAstVisitor- Overrides:
visitDotExprin classCodeGeneratorBase- Throws:
IOException
-
visitPrefixOpExpr
public void visitPrefixOpExpr(PrefixOpExpr prefixOpExpr) throws IOException
- Specified by:
visitPrefixOpExprin interfaceAstVisitor- Overrides:
visitPrefixOpExprin classCodeGeneratorBase- Throws:
IOException
-
visitTypeRelation
public void visitTypeRelation(TypeRelation typeRelation) throws IOException
- Specified by:
visitTypeRelationin interfaceAstVisitor- Overrides:
visitTypeRelationin classCodeGeneratorBase- Throws:
IOException
-
visitExtends
public void visitExtends(Extends anExtends) throws IOException
- Specified by:
visitExtendsin interfaceAstVisitor- Overrides:
visitExtendsin classCodeGeneratorBase- Throws:
IOException
-
visitCompilationUnit
public void visitCompilationUnit(CompilationUnit compilationUnit) throws IOException
- Specified by:
visitCompilationUnitin interfaceAstVisitor- Overrides:
visitCompilationUnitin classCodeGeneratorBase- Throws:
IOException
-
visitIde
public void visitIde(Ide ide) throws IOException
- Specified by:
visitIdein interfaceAstVisitor- Overrides:
visitIdein classCodeGeneratorBase- Throws:
IOException
-
visitQualifiedIde
public void visitQualifiedIde(QualifiedIde qualifiedIde) throws IOException
- Specified by:
visitQualifiedIdein interfaceAstVisitor- Overrides:
visitQualifiedIdein classCodeGeneratorBase- Throws:
IOException
-
visitIdeWithTypeParam
public void visitIdeWithTypeParam(IdeWithTypeParam ideWithTypeParam) throws IOException
- Specified by:
visitIdeWithTypeParamin interfaceAstVisitor- Overrides:
visitIdeWithTypeParamin classCodeGeneratorBase- Throws:
IOException
-
visitNamespacedIde
public void visitNamespacedIde(NamespacedIde namespacedIde) throws IOException
- Specified by:
visitNamespacedIdein interfaceAstVisitor- Overrides:
visitNamespacedIdein classCodeGeneratorBase- Throws:
IOException
-
visitIdeExpression
public void visitIdeExpression(IdeExpr ideExpr) throws IOException
- Specified by:
visitIdeExpressionin interfaceAstVisitor- Overrides:
visitIdeExpressionin classCodeGeneratorBase- Throws:
IOException
-
visitAssignmentOpExpr
public void visitAssignmentOpExpr(AssignmentOpExpr assignmentOpExpr) throws IOException
- Specified by:
visitAssignmentOpExprin interfaceAstVisitor- Overrides:
visitAssignmentOpExprin classCodeGeneratorBase- Throws:
IOException
-
visitParameters
public void visitParameters(Parameters parameters) throws IOException
- Specified by:
visitParametersin interfaceAstVisitor- Overrides:
visitParametersin classCodeGeneratorBase- Throws:
IOException
-
visitFunctionExpr
public void visitFunctionExpr(FunctionExpr functionExpr) throws IOException
- Specified by:
visitFunctionExprin interfaceAstVisitor- Overrides:
visitFunctionExprin classCodeGeneratorBase- Throws:
IOException
-
handleParameters
public void handleParameters(FunctionExpr functionExpr) throws IOException
- Throws:
IOException
-
generateFunTailCode
public void generateFunTailCode(FunctionExpr functionExpr) throws IOException
- Throws:
IOException
-
getParameterInitializerCodeGenerator
public CodeGenerator getParameterInitializerCodeGenerator(Parameters params)
-
getEcmaParameterInitializerCodeGenerator
public CodeGenerator getEcmaParameterInitializerCodeGenerator(Parameters params)
-
generateRestParamCode
public void generateRestParamCode(Parameters params) throws IOException
- Throws:
IOException
-
generateBodyInitializerCode
public void generateBodyInitializerCode(Parameter param) throws IOException
- Throws:
IOException
-
visitVectorLiteral
public void visitVectorLiteral(VectorLiteral vectorLiteral) throws IOException
- Specified by:
visitVectorLiteralin interfaceAstVisitor- Overrides:
visitVectorLiteralin classCodeGeneratorBase- Throws:
IOException
-
handleExmlAppendPrepend
protected void handleExmlAppendPrepend(ObjectField objectField, DotExpr exmlAppendOrPrepend) throws IOException
- Specified by:
handleExmlAppendPrependin classCodeGeneratorBase- Throws:
IOException
-
visitApplyExpr
public void visitApplyExpr(ApplyExpr applyExpr) throws IOException
- Specified by:
visitApplyExprin interfaceAstVisitor- Overrides:
visitApplyExprin classCodeGeneratorBase- Throws:
IOException
-
visitClassBody
public void visitClassBody(ClassBody classBody) throws IOException
- Specified by:
visitClassBodyin interfaceAstVisitor- Overrides:
visitClassBodyin classCodeGeneratorBase- Throws:
IOException
-
builtInIdentifierCode
protected String builtInIdentifierCode(String builtInIdentifier)
- Specified by:
builtInIdentifierCodein classCodeGeneratorBase
-
visitForInStatement
public void visitForInStatement(ForInStatement forInStatement) throws IOException
- Specified by:
visitForInStatementin interfaceAstVisitor- Overrides:
visitForInStatementin classCodeGeneratorBase- Throws:
IOException
-
visitParameter
public void visitParameter(Parameter parameter) throws IOException
- Specified by:
visitParameterin interfaceAstVisitor- Overrides:
visitParameterin classCodeGeneratorBase- Throws:
IOException
-
visitVariableDeclaration
public void visitVariableDeclaration(VariableDeclaration variableDeclaration) throws IOException
- Specified by:
visitVariableDeclarationin interfaceAstVisitor- Overrides:
visitVariableDeclarationin classCodeGeneratorBase- Throws:
IOException
-
generateVarStartCode
protected void generateVarStartCode(VariableDeclaration variableDeclaration) throws IOException
- Throws:
IOException
-
generateFieldInitializerCode
protected void generateFieldInitializerCode(VariableDeclaration variableDeclaration) throws IOException
- Throws:
IOException
-
generateFieldEndCode
protected void generateFieldEndCode(VariableDeclaration variableDeclaration) throws IOException
- Throws:
IOException
-
visitFunctionDeclaration
public void visitFunctionDeclaration(FunctionDeclaration functionDeclaration) throws IOException
- Specified by:
visitFunctionDeclarationin interfaceAstVisitor- Overrides:
visitFunctionDeclarationin classCodeGeneratorBase- Throws:
IOException
-
visitClassDeclaration
public void visitClassDeclaration(ClassDeclaration classDeclaration) throws IOException
- Specified by:
visitClassDeclarationin interfaceAstVisitor- Overrides:
visitClassDeclarationin classCodeGeneratorBase- Throws:
IOException
-
needsSuperCallCodeGenerator
public static boolean needsSuperCallCodeGenerator(ClassDeclaration classDeclaration)
-
visitNamespaceDeclaration
public void visitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) throws IOException
- Specified by:
visitNamespaceDeclarationin interfaceAstVisitor- Overrides:
visitNamespaceDeclarationin classCodeGeneratorBase- Throws:
IOException
-
visitPackageDeclaration
public void visitPackageDeclaration(PackageDeclaration packageDeclaration) throws IOException
- Specified by:
visitPackageDeclarationin interfaceAstVisitor- Overrides:
visitPackageDeclarationin classCodeGeneratorBase- Throws:
IOException
-
visitSuperConstructorCallStatement
public void visitSuperConstructorCallStatement(SuperConstructorCallStatement superConstructorCallStatement) throws IOException
- Specified by:
visitSuperConstructorCallStatementin interfaceAstVisitor- Overrides:
visitSuperConstructorCallStatementin classCodeGeneratorBase- Throws:
IOException
-
visitAnnotation
public void visitAnnotation(Annotation annotation) throws IOException
- Specified by:
visitAnnotationin interfaceAstVisitor- Overrides:
visitAnnotationin classCodeGeneratorBase- Throws:
IOException
-
visitUseNamespaceDirective
public void visitUseNamespaceDirective(UseNamespaceDirective useNamespaceDirective) throws IOException
- Specified by:
visitUseNamespaceDirectivein interfaceAstVisitor- Overrides:
visitUseNamespaceDirectivein classCodeGeneratorBase- Throws:
IOException
-
visitImportDirective
public void visitImportDirective(ImportDirective importDirective) throws IOException
- Specified by:
visitImportDirectivein interfaceAstVisitor- Overrides:
visitImportDirectivein classCodeGeneratorBase- Throws:
IOException
-
-