Class BoxExpressionVisitor

java.lang.Object
org.antlr.v4.runtime.tree.AbstractParseTreeVisitor<BoxExpression>
ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
ortus.boxlang.compiler.toolchain.BoxExpressionVisitor
All Implemented Interfaces:
org.antlr.v4.runtime.tree.ParseTreeVisitor<BoxExpression>, ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>

public class BoxExpressionVisitor extends ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
This class is responsible for visiting the parse tree and generating the AST for BoxScript expressions.

Some of the AST generation is complicated by the syntactical ambiguity of the language, where even precedence changes at certain points.

  • Constructor Details

    • BoxExpressionVisitor

      public BoxExpressionVisitor(BoxParser tools, BoxVisitor statementVisitor)
  • Method Details

    • getStatementVisitor

      public BoxVisitor getStatementVisitor()
      getter for statement visitor
    • visitTestExpression

      public BoxExpression visitTestExpression(ortus.boxlang.parser.antlr.BoxGrammar.TestExpressionContext ctx)
      This is here simply to allow tests to resolve a single expression without having to walk exprStaments
      Specified by:
      visitTestExpression in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitTestExpression in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
      Parameters:
      ctx - the parse tree
      Returns:
      the expression
    • visitInvocable

      public BoxExpression visitInvocable(ortus.boxlang.parser.antlr.BoxGrammar.InvocableContext ctx)
      Specified by:
      visitInvocable in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitInvocable in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprStatInvocable

      public BoxExpression visitExprStatInvocable(ortus.boxlang.parser.antlr.BoxGrammar.ExprStatInvocableContext ctx)
      Specified by:
      visitExprStatInvocable in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprStatInvocable in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprPrecedence

      public BoxExpression visitExprPrecedence(ortus.boxlang.parser.antlr.BoxGrammar.ExprPrecedenceContext ctx)
      Manufactures an AST node that indicates that the wrapped expression is in parentheses.

      Generally, one does not explicitly put this in an AST. If we need to regenerate the source we can see that an expression was parenthesised because the operator precedence will be different. However, in some cases it is useful to have this information in the AST, for instance if we wish to preserve redundant parentheses.

      Specified by:
      visitExprPrecedence in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprPrecedence in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
      Parameters:
      ctx - the parse tree
      Returns:
      The AST for the parenthesised expression
    • visitExprUnary

      public BoxExpression visitExprUnary(ortus.boxlang.parser.antlr.BoxGrammar.ExprUnaryContext ctx)
      Specified by:
      visitExprUnary in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprUnary in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprPostfix

      public BoxExpression visitExprPostfix(ortus.boxlang.parser.antlr.BoxGrammar.ExprPostfixContext ctx)
      Specified by:
      visitExprPostfix in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprPostfix in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprPrefix

      public BoxExpression visitExprPrefix(ortus.boxlang.parser.antlr.BoxGrammar.ExprPrefixContext ctx)
      Specified by:
      visitExprPrefix in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprPrefix in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprDotFloat

      public BoxExpression visitExprDotFloat(ortus.boxlang.parser.antlr.BoxGrammar.ExprDotFloatContext ctx)
      Specified by:
      visitExprDotFloat in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprDotFloat in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprDotFloatID

      public BoxExpression visitExprDotFloatID(ortus.boxlang.parser.antlr.BoxGrammar.ExprDotFloatIDContext ctx)
      Specified by:
      visitExprDotFloatID in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprDotFloatID in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprIllegalIdentifier

      public BoxExpression visitExprIllegalIdentifier(ortus.boxlang.parser.antlr.BoxGrammar.ExprIllegalIdentifierContext ctx)
      Specified by:
      visitExprIllegalIdentifier in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprIllegalIdentifier in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprDotOrColonAccess

      public BoxExpression visitExprDotOrColonAccess(ortus.boxlang.parser.antlr.BoxGrammar.ExprDotOrColonAccessContext ctx)
      visits the Dot accessor operation and generates the relevant AST.

      With dot accessors, there some special cases where the left and right are folded into one node rather than encapsulated into a DotAccess. For example method invocations will be seen on the right of x.y() and the invocation AST for y() will have the x reference folded into it.

      Specified by:
      visitExprDotOrColonAccess in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprDotOrColonAccess in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
      Parameters:
      ctx - the parse tree
      Returns:
      the AST for a particular accessor operation
    • visitExprHeadless

      public BoxExpression visitExprHeadless(ortus.boxlang.parser.antlr.BoxGrammar.ExprHeadlessContext ctx)
      Specified by:
      visitExprHeadless in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprHeadless in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprBIF

      public BoxExpression visitExprBIF(ortus.boxlang.parser.antlr.BoxGrammar.ExprBIFContext ctx)
      Specified by:
      visitExprBIF in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprBIF in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprPower

      public BoxExpression visitExprPower(ortus.boxlang.parser.antlr.BoxGrammar.ExprPowerContext ctx)
      Specified by:
      visitExprPower in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprPower in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprMult

      public BoxExpression visitExprMult(ortus.boxlang.parser.antlr.BoxGrammar.ExprMultContext ctx)
      Specified by:
      visitExprMult in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprMult in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprAdd

      public BoxExpression visitExprAdd(ortus.boxlang.parser.antlr.BoxGrammar.ExprAddContext ctx)
      Specified by:
      visitExprAdd in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprAdd in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprBitShift

      public BoxExpression visitExprBitShift(ortus.boxlang.parser.antlr.BoxGrammar.ExprBitShiftContext ctx)
      Specified by:
      visitExprBitShift in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprBitShift in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprBinary

      public BoxExpression visitExprBinary(ortus.boxlang.parser.antlr.BoxGrammar.ExprBinaryContext ctx)
      Specified by:
      visitExprBinary in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprBinary in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprBAnd

      public BoxExpression visitExprBAnd(ortus.boxlang.parser.antlr.BoxGrammar.ExprBAndContext ctx)
      Specified by:
      visitExprBAnd in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprBAnd in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprBXor

      public BoxExpression visitExprBXor(ortus.boxlang.parser.antlr.BoxGrammar.ExprBXorContext ctx)
      Specified by:
      visitExprBXor in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprBXor in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprBor

      public BoxExpression visitExprBor(ortus.boxlang.parser.antlr.BoxGrammar.ExprBorContext ctx)
      Specified by:
      visitExprBor in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprBor in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprRelational

      public BoxExpression visitExprRelational(ortus.boxlang.parser.antlr.BoxGrammar.ExprRelationalContext ctx)
      Specified by:
      visitExprRelational in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprRelational in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprEqual

      public BoxExpression visitExprEqual(ortus.boxlang.parser.antlr.BoxGrammar.ExprEqualContext ctx)
      Specified by:
      visitExprEqual in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprEqual in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprXor

      public BoxExpression visitExprXor(ortus.boxlang.parser.antlr.BoxGrammar.ExprXorContext ctx)
      Specified by:
      visitExprXor in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprXor in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprCat

      public BoxExpression visitExprCat(ortus.boxlang.parser.antlr.BoxGrammar.ExprCatContext ctx)
      Specified by:
      visitExprCat in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprCat in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprNotContains

      public BoxExpression visitExprNotContains(ortus.boxlang.parser.antlr.BoxGrammar.ExprNotContainsContext ctx)
      Specified by:
      visitExprNotContains in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprNotContains in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprAnd

      public BoxExpression visitExprAnd(ortus.boxlang.parser.antlr.BoxGrammar.ExprAndContext ctx)
      Specified by:
      visitExprAnd in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprAnd in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprOr

      public BoxExpression visitExprOr(ortus.boxlang.parser.antlr.BoxGrammar.ExprOrContext ctx)
      Specified by:
      visitExprOr in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprOr in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprElvis

      public BoxExpression visitExprElvis(ortus.boxlang.parser.antlr.BoxGrammar.ExprElvisContext bermudaTriangle)
      Generate the ELVIS AST node.
      Specified by:
      visitExprElvis in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprElvis in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
      Parameters:
      bermudaTriangle - the parse tree
      Returns:
      The binary operation representing Elvis
    • visitExprInstanceOf

      public BoxExpression visitExprInstanceOf(ortus.boxlang.parser.antlr.BoxGrammar.ExprInstanceOfContext ctx)
      Specified by:
      visitExprInstanceOf in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprInstanceOf in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprCastAs

      public BoxExpression visitExprCastAs(ortus.boxlang.parser.antlr.BoxGrammar.ExprCastAsContext ctx)
      Specified by:
      visitExprCastAs in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprCastAs in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprTernary

      public BoxExpression visitExprTernary(ortus.boxlang.parser.antlr.BoxGrammar.ExprTernaryContext ctx)
      Specified by:
      visitExprTernary in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprTernary in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprAssign

      public BoxExpression visitExprAssign(ortus.boxlang.parser.antlr.BoxGrammar.ExprAssignContext ctx)
      Specified by:
      visitExprAssign in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprAssign in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprOutString

      public BoxExpression visitExprOutString(ortus.boxlang.parser.antlr.BoxGrammar.ExprOutStringContext ctx)
      Specified by:
      visitExprOutString in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprOutString in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprArrayAccess

      public BoxExpression visitExprArrayAccess(ortus.boxlang.parser.antlr.BoxGrammar.ExprArrayAccessContext ctx)
      Specified by:
      visitExprArrayAccess in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprArrayAccess in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprArrayLiteral

      public BoxExpression visitExprArrayLiteral(ortus.boxlang.parser.antlr.BoxGrammar.ExprArrayLiteralContext ctx)
      Specified by:
      visitExprArrayLiteral in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprArrayLiteral in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprVarDecl

      public BoxExpression visitExprVarDecl(ortus.boxlang.parser.antlr.BoxGrammar.ExprVarDeclContext ctx)
      Specified by:
      visitExprVarDecl in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprVarDecl in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitArrayLiteral

      public BoxExpression visitArrayLiteral(ortus.boxlang.parser.antlr.BoxGrammar.ArrayLiteralContext ctx)
      Specified by:
      visitArrayLiteral in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitArrayLiteral in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitAttributeSimple

      public BoxExpression visitAttributeSimple(ortus.boxlang.parser.antlr.BoxGrammar.AttributeSimpleContext ctx)
      Specified by:
      visitAttributeSimple in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitAttributeSimple in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitAnnotation

      public BoxExpression visitAnnotation(ortus.boxlang.parser.antlr.BoxGrammar.AnnotationContext ctx)
      Specified by:
      visitAnnotation in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitAnnotation in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitClosureFunc

      public BoxExpression visitClosureFunc(ortus.boxlang.parser.antlr.BoxGrammar.ClosureFuncContext ctx)
      Specified by:
      visitClosureFunc in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitClosureFunc in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitLambdaFunc

      public BoxExpression visitLambdaFunc(ortus.boxlang.parser.antlr.BoxGrammar.LambdaFuncContext ctx)
      Specified by:
      visitLambdaFunc in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitLambdaFunc in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprFunctionCall

      public BoxExpression visitExprFunctionCall(ortus.boxlang.parser.antlr.BoxGrammar.ExprFunctionCallContext ctx)
      Specified by:
      visitExprFunctionCall in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprFunctionCall in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitArgument

      public BoxExpression visitArgument(ortus.boxlang.parser.antlr.BoxGrammar.ArgumentContext ctx)
      Specified by:
      visitArgument in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitArgument in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitNamedArgument

      public BoxExpression visitNamedArgument(ortus.boxlang.parser.antlr.BoxGrammar.NamedArgumentContext ctx)
      Specified by:
      visitNamedArgument in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitNamedArgument in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitPositionalArgument

      public BoxExpression visitPositionalArgument(ortus.boxlang.parser.antlr.BoxGrammar.PositionalArgumentContext ctx)
      Specified by:
      visitPositionalArgument in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitPositionalArgument in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitIdentifier

      public BoxExpression visitIdentifier(ortus.boxlang.parser.antlr.BoxGrammar.IdentifierContext ctx)
      Specified by:
      visitIdentifier in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitIdentifier in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprNew

      public BoxExpression visitExprNew(ortus.boxlang.parser.antlr.BoxGrammar.ExprNewContext ctx)
      Specified by:
      visitExprNew in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprNew in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitNew

      public BoxExpression visitNew(ortus.boxlang.parser.antlr.BoxGrammar.NewContext ctx)
      Specified by:
      visitNew in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitNew in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprLiterals

      public BoxExpression visitExprLiterals(ortus.boxlang.parser.antlr.BoxGrammar.ExprLiteralsContext ctx)
      Specified by:
      visitExprLiterals in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprLiterals in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprIdentifier

      public BoxExpression visitExprIdentifier(ortus.boxlang.parser.antlr.BoxGrammar.ExprIdentifierContext ctx)
      Visit the identifier context to generate the AST node for the identifier.

      TODO: Note that the original code check to build a scope but then other AST constructors just deconstruct it. There may not need to be a separate scope object.

      Specified by:
      visitExprIdentifier in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprIdentifier in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
      Parameters:
      ctx - the parse tree
      Returns:
      Either a BoxIdentifier or BoxScope AST node
    • visitLiterals

      public BoxExpression visitLiterals(ortus.boxlang.parser.antlr.BoxGrammar.LiteralsContext ctx)
      Specified by:
      visitLiterals in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitLiterals in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitStringLiteral

      public BoxExpression visitStringLiteral(ortus.boxlang.parser.antlr.BoxGrammar.StringLiteralContext ctx)
      Specified by:
      visitStringLiteral in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitStringLiteral in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitStructExpression

      public BoxExpression visitStructExpression(ortus.boxlang.parser.antlr.BoxGrammar.StructExpressionContext ctx)
      Specified by:
      visitStructExpression in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitStructExpression in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitStructKey

      public BoxExpression visitStructKey(ortus.boxlang.parser.antlr.BoxGrammar.StructKeyContext ctx)
      Specified by:
      visitStructKey in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitStructKey in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitExprAtoms

      public BoxExpression visitExprAtoms(ortus.boxlang.parser.antlr.BoxGrammar.ExprAtomsContext ctx)
      Specified by:
      visitExprAtoms in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitExprAtoms in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitAtoms

      public BoxExpression visitAtoms(ortus.boxlang.parser.antlr.BoxGrammar.AtomsContext ctx)
      Specified by:
      visitAtoms in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitAtoms in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • visitFqn

      public BoxExpression visitFqn(ortus.boxlang.parser.antlr.BoxGrammar.FqnContext ctx)
      Specified by:
      visitFqn in interface ortus.boxlang.parser.antlr.BoxGrammarVisitor<BoxExpression>
      Overrides:
      visitFqn in class ortus.boxlang.parser.antlr.BoxGrammarBaseVisitor<BoxExpression>
    • buildRelOp

      public BoxComparisonOperator buildRelOp(ortus.boxlang.parser.antlr.BoxGrammar.RelOpsContext ctx)
      Visit the relational operator context to generate the AST node for the operator.

      As the operations seem to have grown in the telling so to speak, there are some wierd and wonderful combinations that are utterly superfluous even as syntactic sugar. However, as they are in the language, we must deal with them.

      Parameters:
      ctx - the parse tree
      Returns:
      the operation AST node
    • buildBinOp

      public BoxBinaryOperator buildBinOp(ortus.boxlang.parser.antlr.BoxGrammar.BinOpsContext ctx)
      Visit the relational operator context to generate the AST node for the operator.

      As the operations seem to have grown in the telling so to speak, there are some wierd and wonderful combinations that are utterly superfluous even as syntactic sugar. However, as they are in the language, we must deal with them.

      Parameters:
      ctx - the parse tree
      Returns:
      the operation AST node
    • buildAssignmentModifier

      public BoxAssignmentModifier buildAssignmentModifier(ortus.boxlang.parser.antlr.BoxGrammar.AssignmentModifierContext ctx)
    • visitErrorNode

      public BoxExpression visitErrorNode(org.antlr.v4.runtime.tree.ErrorNode node)
      A special node is inserted into the tree when a parser error is encountered. Here we provide a visitor to handle such nodes so that we can call the visitor even when the parser rejected the input
      Specified by:
      visitErrorNode in interface org.antlr.v4.runtime.tree.ParseTreeVisitor<BoxExpression>
      Overrides:
      visitErrorNode in class org.antlr.v4.runtime.tree.AbstractParseTreeVisitor<BoxExpression>
      Parameters:
      node - the error node
      Returns:
      a New error node so that AST building can work