Package ortus.boxlang.compiler.toolchain
Class BoxVisitor
- All Implemented Interfaces:
org.antlr.v4.runtime.tree.ParseTreeVisitor<BoxNode>
,ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxNode>
This class is responsible for creating the AST from the ANTLR generated
parse tree.
A parser tree is a great jumping off point for creating an AST, but it is not the AST itself as its structure is dictated by the grammar and not the structure of the language itself.
We create a standardized AST here, from whence we can then perform further analysis and transformations and eventually code generation, should that be the end goal.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuildExprStat
(org.antlr.v4.runtime.ParserRuleContext ctx) <T> T
visitAssert
(ortus.boxlang.parser.antlr.BoxGrammar.AssertContext ctx) visitAtoms
(ortus.boxlang.parser.antlr.BoxGrammar.AtomsContext ctx) visitBoxClass
(ortus.boxlang.parser.antlr.BoxGrammar.BoxClassContext ctx) Visit the boxClass context to generate the AST node for the classvisitBreak
(ortus.boxlang.parser.antlr.BoxGrammar.BreakContext ctx) visitCase
(ortus.boxlang.parser.antlr.BoxGrammar.CaseContext ctx) visitCatches
(ortus.boxlang.parser.antlr.BoxGrammar.CatchesContext ctx) visitClassBodyStatement
(ortus.boxlang.parser.antlr.BoxGrammar.ClassBodyStatementContext ctx) visitClassOrInterface
(ortus.boxlang.parser.antlr.BoxGrammar.ClassOrInterfaceContext ctx) Visit the class or interface context to generate the AST node for the top level nodevisitComponent
(ortus.boxlang.parser.antlr.BoxGrammar.ComponentContext ctx) visitComponentAttribute
(ortus.boxlang.parser.antlr.BoxGrammar.ComponentAttributeContext ctx) visitComponentIsland
(ortus.boxlang.parser.antlr.BoxGrammar.ComponentIslandContext ctx) visitContinue
(ortus.boxlang.parser.antlr.BoxGrammar.ContinueContext ctx) visitDo
(ortus.boxlang.parser.antlr.BoxGrammar.DoContext ctx) visitEmptyStatementBlock
(ortus.boxlang.parser.antlr.BoxGrammar.EmptyStatementBlockContext ctx) visitErrorNode
(org.antlr.v4.runtime.tree.ErrorNode node) visitExprAdd
(ortus.boxlang.parser.antlr.BoxGrammar.ExprAddContext ctx) visitExprAnd
(ortus.boxlang.parser.antlr.BoxGrammar.ExprAndContext ctx) visitExprArrayAccess
(ortus.boxlang.parser.antlr.BoxGrammar.ExprArrayAccessContext ctx) visitExprArrayLiteral
(ortus.boxlang.parser.antlr.BoxGrammar.ExprArrayLiteralContext ctx) visitExprAssign
(ortus.boxlang.parser.antlr.BoxGrammar.ExprAssignContext ctx) Visit the Assign expressions that are actually statements, and treat them as sovisitExprBAnd
(ortus.boxlang.parser.antlr.BoxGrammar.ExprBAndContext ctx) visitExprBinary
(ortus.boxlang.parser.antlr.BoxGrammar.ExprBinaryContext ctx) visitExprBitShift
(ortus.boxlang.parser.antlr.BoxGrammar.ExprBitShiftContext ctx) visitExprBor
(ortus.boxlang.parser.antlr.BoxGrammar.ExprBorContext ctx) visitExprBXor
(ortus.boxlang.parser.antlr.BoxGrammar.ExprBXorContext ctx) visitExprCastAs
(ortus.boxlang.parser.antlr.BoxGrammar.ExprCastAsContext ctx) visitExprCat
(ortus.boxlang.parser.antlr.BoxGrammar.ExprCatContext ctx) visitExprDotFloat
(ortus.boxlang.parser.antlr.BoxGrammar.ExprDotFloatContext ctx) visitExprDotOrColonAccess
(ortus.boxlang.parser.antlr.BoxGrammar.ExprDotOrColonAccessContext ctx) visitExprElvis
(ortus.boxlang.parser.antlr.BoxGrammar.ExprElvisContext ctx) visitExprEqual
(ortus.boxlang.parser.antlr.BoxGrammar.ExprEqualContext ctx) visitExprFunctionCall
(ortus.boxlang.parser.antlr.BoxGrammar.ExprFunctionCallContext ctx) visitExprIdentifier
(ortus.boxlang.parser.antlr.BoxGrammar.ExprIdentifierContext ctx) visitExprInstanceOf
(ortus.boxlang.parser.antlr.BoxGrammar.ExprInstanceOfContext ctx) visitExprLiterals
(ortus.boxlang.parser.antlr.BoxGrammar.ExprLiteralsContext ctx) visitExprMult
(ortus.boxlang.parser.antlr.BoxGrammar.ExprMultContext ctx) visitExprNew
(ortus.boxlang.parser.antlr.BoxGrammar.ExprNewContext ctx) visitExprNotContains
(ortus.boxlang.parser.antlr.BoxGrammar.ExprNotContainsContext ctx) visitExprOr
(ortus.boxlang.parser.antlr.BoxGrammar.ExprOrContext ctx) visitExprOutString
(ortus.boxlang.parser.antlr.BoxGrammar.ExprOutStringContext ctx) visitExprPostfix
(ortus.boxlang.parser.antlr.BoxGrammar.ExprPostfixContext ctx) visitExprPower
(ortus.boxlang.parser.antlr.BoxGrammar.ExprPowerContext ctx) visitExprPrecedence
(ortus.boxlang.parser.antlr.BoxGrammar.ExprPrecedenceContext ctx) visitExprPrefix
(ortus.boxlang.parser.antlr.BoxGrammar.ExprPrefixContext ctx) visitExprRelational
(ortus.boxlang.parser.antlr.BoxGrammar.ExprRelationalContext ctx) visitExprStatAnonymousFunction
(ortus.boxlang.parser.antlr.BoxGrammar.ExprStatAnonymousFunctionContext ctx) visitExprStatInvocable
(ortus.boxlang.parser.antlr.BoxGrammar.ExprStatInvocableContext ctx) visitExprTernary
(ortus.boxlang.parser.antlr.BoxGrammar.ExprTernaryContext ctx) visitExprUnary
(ortus.boxlang.parser.antlr.BoxGrammar.ExprUnaryContext ctx) visitExprXor
(ortus.boxlang.parser.antlr.BoxGrammar.ExprXorContext ctx) visitFor
(ortus.boxlang.parser.antlr.BoxGrammar.ForContext ctx) visitFunction
(ortus.boxlang.parser.antlr.BoxGrammar.FunctionContext ctx) visitFunctionOrStatement
(ortus.boxlang.parser.antlr.BoxGrammar.FunctionOrStatementContext ctx) visitFunctionParam
(ortus.boxlang.parser.antlr.BoxGrammar.FunctionParamContext ctx) visitIf
(ortus.boxlang.parser.antlr.BoxGrammar.IfContext ctx) visitImportStatement
(ortus.boxlang.parser.antlr.BoxGrammar.ImportStatementContext ctx) visitInclude
(ortus.boxlang.parser.antlr.BoxGrammar.IncludeContext ctx) visitInterface
(ortus.boxlang.parser.antlr.BoxGrammar.InterfaceContext ctx) Visit the interface_ context to generate the AST node for the interfacevisitInvocable
(ortus.boxlang.parser.antlr.BoxGrammar.InvocableContext ctx) visitNormalStatementBlock
(ortus.boxlang.parser.antlr.BoxGrammar.NormalStatementBlockContext ctx) visitNot
(ortus.boxlang.parser.antlr.BoxGrammar.NotContext ctx) visitParam
(ortus.boxlang.parser.antlr.BoxGrammar.ParamContext ctx) visitPostAnnotation
(ortus.boxlang.parser.antlr.BoxGrammar.PostAnnotationContext ctx) visitPreAnnotation
(ortus.boxlang.parser.antlr.BoxGrammar.PreAnnotationContext ctx) visitProperty
(ortus.boxlang.parser.antlr.BoxGrammar.PropertyContext ctx) visitRethrow
(ortus.boxlang.parser.antlr.BoxGrammar.RethrowContext ctx) visitReturn
(ortus.boxlang.parser.antlr.BoxGrammar.ReturnContext ctx) visitScript
(ortus.boxlang.parser.antlr.BoxGrammar.ScriptContext ctx) visitSimpleStatement
(ortus.boxlang.parser.antlr.BoxGrammar.SimpleStatementContext ctx) visitStatement
(ortus.boxlang.parser.antlr.BoxGrammar.StatementContext ctx) visitStatementBlock
(ortus.boxlang.parser.antlr.BoxGrammar.StatementBlockContext ctx) visitStatementOrBlock
(ortus.boxlang.parser.antlr.BoxGrammar.StatementOrBlockContext ctx) visitStaticInitializer
(ortus.boxlang.parser.antlr.BoxGrammar.StaticInitializerContext ctx) visitStructExpression
(ortus.boxlang.parser.antlr.BoxGrammar.StructExpressionContext ctx) visitSwitch
(ortus.boxlang.parser.antlr.BoxGrammar.SwitchContext ctx) visitThrow
(ortus.boxlang.parser.antlr.BoxGrammar.ThrowContext ctx) visitTry
(ortus.boxlang.parser.antlr.BoxGrammar.TryContext ctx) visitWhile
(ortus.boxlang.parser.antlr.BoxGrammar.WhileContext ctx) Methods inherited from class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor
visitAccessModifier, visitAnnotation, visitArgument, visitArgumentList, visitArrayLiteral, visitAssignmentModifier, visitAttributeSimple, visitBinOps, visitClassBody, visitClosureFunc, visitComponentName, visitExprAnonymousFunction, visitExprAtoms, visitExprBIF, visitExprDotFloatID, visitExpressionList, visitExprHeadless, visitExprIllegalIdentifier, visitExprVarDecl, visitFinallyBlock, visitFqn, visitFunctionParamList, visitFunctionSignature, visitIdentifier, visitImportFQN, visitLambdaFunc, visitLiterals, visitModifier, visitModuleName, visitNamedArgument, visitNew, visitPositionalArgument, visitPreFix, visitRelOps, visitReturnType, visitSpecialComponentName, visitStringLiteral, visitStringLiteralPart, visitStructKey, visitStructMember, visitStructMembers, visitTemplate, visitTemplate_argument, visitTemplate_attribute, visitTemplate_attributeName, visitTemplate_attributeValue, visitTemplate_boxImport, visitTemplate_break, visitTemplate_case, visitTemplate_catchBlock, visitTemplate_comment, visitTemplate_componentName, visitTemplate_continue, visitTemplate_finallyBlock, visitTemplate_function, visitTemplate_genericCloseComponent, visitTemplate_genericOpenCloseComponent, visitTemplate_genericOpenComponent, visitTemplate_if, visitTemplate_include, visitTemplate_interpolatedExpression, visitTemplate_nonInterpolatedText, visitTemplate_output, visitTemplate_rethrow, visitTemplate_return, visitTemplate_script, visitTemplate_set, visitTemplate_statement, visitTemplate_statements, visitTemplate_switch, visitTemplate_switchBody, visitTemplate_textContent, visitTemplate_throw, visitTemplate_try, visitTemplate_unquotedValue, visitTemplate_while, visitTemplate_whitespace, visitTestExpression, visitType
Methods inherited from class org.antlr.v4.runtime.tree.AbstractParseTreeVisitor
aggregateResult, defaultResult, shouldVisitNextChild, visit, visitChildren, visitTerminal
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.antlr.v4.runtime.tree.ParseTreeVisitor
visit, visitChildren, visitTerminal
-
Field Details
-
componentService
-
-
Constructor Details
-
BoxVisitor
-
-
Method Details
-
visitClassOrInterface
public BoxNode visitClassOrInterface(ortus.boxlang.parser.antlr.BoxGrammar.ClassOrInterfaceContext ctx) Visit the class or interface context to generate the AST node for the top level node -
visitScript
-
visitImportStatement
public BoxNode visitImportStatement(ortus.boxlang.parser.antlr.BoxGrammar.ImportStatementContext ctx) -
visitInclude
-
visitBoxClass
Visit the boxClass context to generate the AST node for the class -
visitClassBodyStatement
public BoxNode visitClassBodyStatement(ortus.boxlang.parser.antlr.BoxGrammar.ClassBodyStatementContext ctx) -
visitStaticInitializer
public BoxNode visitStaticInitializer(ortus.boxlang.parser.antlr.BoxGrammar.StaticInitializerContext ctx) -
visitInterface
Visit the interface_ context to generate the AST node for the interface -
visitStatement
-
visitNot
-
visitDo
-
visitFor
-
visitIf
-
visitSwitch
-
visitCase
-
visitTry
-
visitCatches
-
visitWhile
-
visitComponent
-
visitComponentAttribute
public BoxNode visitComponentAttribute(ortus.boxlang.parser.antlr.BoxGrammar.ComponentAttributeContext ctx) -
visitStatementOrBlock
public BoxNode visitStatementOrBlock(ortus.boxlang.parser.antlr.BoxGrammar.StatementOrBlockContext ctx) -
visitStatementBlock
-
visitNormalStatementBlock
public BoxNode visitNormalStatementBlock(ortus.boxlang.parser.antlr.BoxGrammar.NormalStatementBlockContext ctx) -
visitEmptyStatementBlock
public BoxNode visitEmptyStatementBlock(ortus.boxlang.parser.antlr.BoxGrammar.EmptyStatementBlockContext ctx) -
visitSimpleStatement
public BoxNode visitSimpleStatement(ortus.boxlang.parser.antlr.BoxGrammar.SimpleStatementContext ctx) -
visitComponentIsland
public BoxNode visitComponentIsland(ortus.boxlang.parser.antlr.BoxGrammar.ComponentIslandContext ctx) -
visitBreak
-
visitContinue
-
visitRethrow
-
visitAssert
-
visitParam
-
visitReturn
-
visitThrow
-
visitInvocable
-
visitExprStatInvocable
public BoxNode visitExprStatInvocable(ortus.boxlang.parser.antlr.BoxGrammar.ExprStatInvocableContext ctx) -
visitExprPrecedence
-
visitExprFunctionCall
public BoxNode visitExprFunctionCall(ortus.boxlang.parser.antlr.BoxGrammar.ExprFunctionCallContext ctx) -
visitExprUnary
-
visitExprPostfix
-
visitExprPrefix
-
visitExprDotFloat
-
visitExprDotOrColonAccess
public BoxNode visitExprDotOrColonAccess(ortus.boxlang.parser.antlr.BoxGrammar.ExprDotOrColonAccessContext ctx) -
visitExprPower
-
visitExprMult
-
visitExprAdd
-
visitExprBitShift
-
visitExprBAnd
-
visitExprBXor
-
visitExprBor
-
visitExprBinary
-
visitExprRelational
-
visitExprEqual
-
visitExprXor
-
visitExprCat
-
visitExprNotContains
public BoxNode visitExprNotContains(ortus.boxlang.parser.antlr.BoxGrammar.ExprNotContainsContext ctx) -
visitExprAnd
-
visitExprOr
-
visitExprElvis
-
visitExprInstanceOf
-
visitExprCastAs
-
visitExprTernary
-
visitExprAssign
Visit the Assign expressions that are actually statements, and treat them as so -
visitExprOutString
-
visitExprArrayAccess
public BoxNode visitExprArrayAccess(ortus.boxlang.parser.antlr.BoxGrammar.ExprArrayAccessContext ctx) -
visitExprArrayLiteral
public BoxNode visitExprArrayLiteral(ortus.boxlang.parser.antlr.BoxGrammar.ExprArrayLiteralContext ctx) -
visitExprStatAnonymousFunction
public BoxNode visitExprStatAnonymousFunction(ortus.boxlang.parser.antlr.BoxGrammar.ExprStatAnonymousFunctionContext ctx) -
visitExprNew
-
visitExprIdentifier
-
visitExprLiterals
-
visitAtoms
-
visitStructExpression
public BoxNode visitStructExpression(ortus.boxlang.parser.antlr.BoxGrammar.StructExpressionContext ctx) -
visitProperty
-
visitPostAnnotation
public BoxAnnotation visitPostAnnotation(ortus.boxlang.parser.antlr.BoxGrammar.PostAnnotationContext ctx) -
visitPreAnnotation
public BoxAnnotation visitPreAnnotation(ortus.boxlang.parser.antlr.BoxGrammar.PreAnnotationContext ctx) -
visitFunction
-
visitFunctionParam
-
visitFunctionOrStatement
public BoxNode visitFunctionOrStatement(ortus.boxlang.parser.antlr.BoxGrammar.FunctionOrStatementContext ctx) -
visitErrorNode
-
buildExprStat
-
getOrNull
-