Class CAstVisitor<C extends CAstVisitor.Context>

    • Constructor Detail

      • CAstVisitor

        protected CAstVisitor()
    • Method Detail

      • makeFileContext

        protected C makeFileContext​(C context,
                                    CAstEntity n)
        Construct a context for a File entity.
        Parameters:
        context - a visitor-specific context in which this file was visited
        n - the file entity
      • makeTypeContext

        protected C makeTypeContext​(C context,
                                    CAstEntity n)
        Construct a context for a Type entity.
        Parameters:
        context - a visitor-specific context in which this type was visited
        n - the type entity
      • makeCodeContext

        protected C makeCodeContext​(C context,
                                    CAstEntity n)
        Construct a context for a Code entity.
        Parameters:
        context - a visitor-specific context in which the code was visited
        n - the code entity
      • makeLocalContext

        protected C makeLocalContext​(C context,
                                     CAstNode n)
        Construct a context for a LocalScope node.
        Parameters:
        context - a visitor-specific context in which the local scope was visited
        n - the local scope node
      • makeUnwindContext

        protected C makeUnwindContext​(C context,
                                      CAstNode n,
                                      CAstVisitor<C> visitor)
        Construct a context for an Unwind node.
        Parameters:
        context - a visitor-specific context in which the unwind was visited
        n - the unwind node
      • getParent

        protected CAstEntity getParent​(CAstEntity entity)
        Get the parent entity for a given entity.
        Parameters:
        entity - the child entity
        Returns:
        the parent entity for the given entity
      • setParent

        protected void setParent​(CAstEntity entity,
                                 CAstEntity parent)
        Set the parent entity for a given entity.
        Parameters:
        entity - the child entity
        parent - the parent entity
      • doVisitEntity

        protected boolean doVisitEntity​(CAstEntity n,
                                        C context,
                                        CAstVisitor<C> visitor)
        Entity processing hook; sub-classes are expected to override if they introduce new entity types. Should invoke super.doVisitEntity() for unprocessed entities.
        Returns:
        true if entity was handled
      • visitScopedEntities

        public final void visitScopedEntities​(CAstEntity n,
                                              Map allScopedEntities,
                                              C context,
                                              CAstVisitor<C> visitor)
        Visit scoped entities of an entity using a given iterator. Prerequisite (unchecked): i iterates over entities scoped in n.
        Parameters:
        n - the parent entity of the entities to process
        i - the iterator over some scoped entities of n
        context - a visitor-specific context
      • visitEntities

        public final void visitEntities​(CAstEntity n,
                                        C context,
                                        CAstVisitor<C> visitor)
        Recursively visit an entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
      • enterEntity

        protected boolean enterEntity​(CAstEntity n,
                                      C context,
                                      CAstVisitor<C> visitor)
        Enter the entity visitor.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        Returns:
        true if no further processing is needed
      • postProcessEntity

        protected void postProcessEntity​(CAstEntity n,
                                         C context,
                                         CAstVisitor<C> visitor)
        Post-process an entity after visiting it.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
      • visitEntity

        public boolean visitEntity​(CAstEntity n,
                                   C context,
                                   CAstVisitor<C> visitor)
        Visit any entity. Override only this to change behavior for all entities.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveEntity

        public void leaveEntity​(CAstEntity n,
                                C context,
                                CAstVisitor<C> visitor)
        Leave any entity. Override only this to change behavior for all entities.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
      • visitFileEntity

        protected boolean visitFileEntity​(CAstEntity n,
                                          C context,
                                          C fileC,
                                          CAstVisitor<C> visitor)
        Visit a File entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        fileC - a visitor-specific context for this file
        Returns:
        true if no further processing is needed
      • leaveFileEntity

        protected void leaveFileEntity​(CAstEntity n,
                                       C context,
                                       C fileContext,
                                       CAstVisitor<C> visitor)
        Leave a File entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        fileContext - a visitor-specific context for this file
      • visitFieldEntity

        protected boolean visitFieldEntity​(CAstEntity n,
                                           C context,
                                           CAstVisitor<C> visitor)
        Visit a Field entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveFieldEntity

        protected void leaveFieldEntity​(CAstEntity n,
                                        C context,
                                        CAstVisitor<C> visitor)
        Leave a Field entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
      • visitGlobalEntity

        protected boolean visitGlobalEntity​(CAstEntity n,
                                            C context,
                                            CAstVisitor<C> visitor)
        Visit a Field entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveGlobalEntity

        protected void leaveGlobalEntity​(CAstEntity n,
                                         C context,
                                         CAstVisitor<C> visitor)
        Leave a Field entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
      • visitTypeEntity

        protected boolean visitTypeEntity​(CAstEntity n,
                                          C context,
                                          C typeContext,
                                          CAstVisitor<C> visitor)
        Visit a Type entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        typeContext - a visitor-specific context for this type
        Returns:
        true if no further processing is needed
      • leaveTypeEntity

        protected void leaveTypeEntity​(CAstEntity n,
                                       C context,
                                       C typeContext,
                                       CAstVisitor<C> visitor)
        Leave a Type entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        typeContext - a visitor-specific context for this type
      • visitFunctionEntity

        protected boolean visitFunctionEntity​(CAstEntity n,
                                              C context,
                                              C codeContext,
                                              CAstVisitor<C> visitor)
        Visit a Function entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        codeContext - a visitor-specific context for this function
        Returns:
        true if no further processing is needed
      • leaveFunctionEntity

        protected void leaveFunctionEntity​(CAstEntity n,
                                           C context,
                                           C codeContext,
                                           CAstVisitor<C> visitor)
        Leave a Function entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        codeContext - a visitor-specific context for this function
      • visitMacroEntity

        protected boolean visitMacroEntity​(CAstEntity n,
                                           C context,
                                           C codeContext,
                                           CAstVisitor<C> visitor)
        Visit a Macro entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        codeContext - a visitor-specific context for this macro
        Returns:
        true if no further processing is needed
      • leaveMacroEntity

        protected void leaveMacroEntity​(CAstEntity n,
                                        C context,
                                        C codeContext,
                                        CAstVisitor<C> visitor)
        Leave a Macro entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        codeContext - a visitor-specific context for this macro
      • visitScriptEntity

        protected boolean visitScriptEntity​(CAstEntity n,
                                            C context,
                                            C codeContext,
                                            CAstVisitor<C> visitor)
        Visit a Script entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        codeContext - a visitor-specific context for this script
        Returns:
        true if no further processing is needed
      • leaveScriptEntity

        protected void leaveScriptEntity​(CAstEntity n,
                                         C context,
                                         C codeContext,
                                         CAstVisitor<C> visitor)
        Leave a Script entity.
        Parameters:
        n - the entity to process
        context - a visitor-specific context
        codeContext - a visitor-specific context for this script
      • doVisit

        protected boolean doVisit​(CAstNode n,
                                  C context,
                                  CAstVisitor<C> visitor)
        Node processing hook; sub-classes are expected to override if they introduce new node types. (Should invoke super.doVisit() for unprocessed nodes.)
        Returns:
        true if node was handled
      • doVisitAssignNodes

        protected boolean doVisitAssignNodes​(CAstNode n,
                                             C context,
                                             CAstNode v,
                                             CAstNode a,
                                             CAstVisitor<C> visitor)
        Node processing hook; sub-classes are expected to override if they introduce new node types that appear on the left hand side of assignment operations. (Should invoke super.doVisit() for unprocessed nodes.)
        Returns:
        true if node was handled
      • visitChildren

        public final void visitChildren​(CAstNode n,
                                        int start,
                                        C context,
                                        CAstVisitor<C> visitor)
        Visit children of a node starting at a given index.
        Parameters:
        n - the parent node of the nodes to process
        start - the starting index of the nodes to process
        context - a visitor-specific context
      • visitAllChildren

        public final void visitAllChildren​(CAstNode n,
                                           C context,
                                           CAstVisitor<C> visitor)
        Visit all children of a node.
        Parameters:
        n - the parent node of the nodes to process
        context - a visitor-specific context
      • visit

        public final void visit​(CAstNode n,
                                C context,
                                CAstVisitor<C> visitor)
        Recursively visit a given node. TODO: do assertions about structure belong here?
        Parameters:
        n - the node to process
        context - a visitor-specific context
      • leaveSpecialParentScope

        protected void leaveSpecialParentScope​(CAstNode n,
                                               C context,
                                               CAstVisitor<C> visitor)
      • makeSpecialParentContext

        protected C makeSpecialParentContext​(C context,
                                             CAstNode n)
      • visitSpecialParentScope

        protected boolean visitSpecialParentScope​(CAstNode n,
                                                  C context,
                                                  CAstVisitor<C> visitor)
      • doVisitArrayRefNode

        protected boolean doVisitArrayRefNode​(CAstNode n,
                                              CAstNode v,
                                              CAstNode a,
                                              boolean assign,
                                              boolean preOp,
                                              C context,
                                              CAstVisitor<C> visitor)
        Process the given array reference node. Factored out so that derived languages can reuse this code for specially-marked types of array references (as in X10, for which different instruction types get generated, but whose structure is essentially the same as an ordinary array reference).
      • enterNode

        protected boolean enterNode​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Enter the node visitor.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • postProcessNode

        protected void postProcessNode​(CAstNode n,
                                       C c,
                                       CAstVisitor<C> visitor)
        Post-process a node after visiting it.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitNode

        public boolean visitNode​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Visit any node. Override only this to change behavior for all nodes.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveNode

        public void leaveNode​(CAstNode n,
                              C c,
                              CAstVisitor<C> visitor)
        Leave any node. Override only this to change behavior for all nodes.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitFunctionExpr

        protected boolean visitFunctionExpr​(CAstNode n,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit a FunctionExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveFunctionExpr

        protected void leaveFunctionExpr​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Leave a FunctionExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitFunctionStmt

        protected boolean visitFunctionStmt​(CAstNode n,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit a FunctionStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveFunctionStmt

        protected void leaveFunctionStmt​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Leave a FunctionStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitLocalScope

        protected boolean visitLocalScope​(CAstNode n,
                                          C c,
                                          CAstVisitor<C> visitor)
        Visit a LocalScope node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveLocalScope

        protected void leaveLocalScope​(CAstNode n,
                                       C c,
                                       CAstVisitor<C> visitor)
        Leave a LocalScope node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitBlockExpr

        protected boolean visitBlockExpr​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit a BlockExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveBlockExpr

        protected void leaveBlockExpr​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Leave a BlockExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitBlockStmt

        protected boolean visitBlockStmt​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit a BlockStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveBlockStmt

        protected void leaveBlockStmt​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Leave a BlockStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitLoop

        protected boolean visitLoop​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Visit a Loop node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • visitForIn

        protected boolean visitForIn​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Visit a For..In node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveLoopHeader

        protected void leaveLoopHeader​(CAstNode n,
                                       C c,
                                       CAstVisitor<C> visitor)
        Visit a Loop node after processing the loop header.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveLoop

        protected void leaveLoop​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave a Loop node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveForIn

        protected void leaveForIn​(CAstNode n,
                                  C c,
                                  CAstVisitor<C> visitor)
        Leave a For..In node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitGetCaughtException

        protected boolean visitGetCaughtException​(CAstNode n,
                                                  C c,
                                                  CAstVisitor<C> visitor)
        Visit a GetCaughtException node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveGetCaughtException

        protected void leaveGetCaughtException​(CAstNode n,
                                               C c,
                                               CAstVisitor<C> visitor)
        Leave a GetCaughtException node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitThis

        protected boolean visitThis​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Visit a This node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveThis

        protected void leaveThis​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave a This node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitSuper

        protected boolean visitSuper​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Visit a Super node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveSuper

        protected void leaveSuper​(CAstNode n,
                                  C c,
                                  CAstVisitor<C> visitor)
        Leave a Super node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitCall

        protected boolean visitCall​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Visit a Call node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveCall

        protected void leaveCall​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave a Call node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitVar

        protected boolean visitVar​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Visit a Var node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveVar

        protected void leaveVar​(CAstNode n,
                                C c,
                                CAstVisitor<C> visitor)
        Leave a Var node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitConstant

        protected boolean visitConstant​(CAstNode n,
                                        C c,
                                        CAstVisitor<C> visitor)
        Visit a Constant node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveConstant

        protected void leaveConstant​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Leave a Constant node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitBinaryExpr

        protected boolean visitBinaryExpr​(CAstNode n,
                                          C c,
                                          CAstVisitor<C> visitor)
        Visit a BinaryExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveBinaryExpr

        protected void leaveBinaryExpr​(CAstNode n,
                                       C c,
                                       CAstVisitor<C> visitor)
        Leave a BinaryExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitUnaryExpr

        protected boolean visitUnaryExpr​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit a UnaryExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveUnaryExpr

        protected void leaveUnaryExpr​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Leave a UnaryExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitArrayLength

        protected boolean visitArrayLength​(CAstNode n,
                                           C c,
                                           CAstVisitor<C> visitor)
        Visit an ArrayLength node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveArrayLength

        protected void leaveArrayLength​(CAstNode n,
                                        C c,
                                        CAstVisitor<C> visitor)
        Leave an ArrayLength node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitArrayRef

        protected boolean visitArrayRef​(CAstNode n,
                                        C c,
                                        CAstVisitor<C> visitor)
        Visit an ArrayRef node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveArrayRef

        protected void leaveArrayRef​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Leave an ArrayRef node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitDeclStmt

        protected boolean visitDeclStmt​(CAstNode n,
                                        C c,
                                        CAstVisitor<C> visitor)
        Visit a DeclStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveDeclStmt

        protected void leaveDeclStmt​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Leave a DeclStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitReturn

        protected boolean visitReturn​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit a Return node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveReturn

        protected void leaveReturn​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Leave a Return node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitIfgoto

        protected boolean visitIfgoto​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit an Ifgoto node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveIfgoto

        protected void leaveIfgoto​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Leave an Ifgoto node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitGoto

        protected boolean visitGoto​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Visit a Goto node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveGoto

        protected void leaveGoto​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave a Goto node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitLabelStmt

        protected boolean visitLabelStmt​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit a LabelStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveLabelStmt

        protected void leaveLabelStmt​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Leave a LabelStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitIfStmt

        protected boolean visitIfStmt​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit an IfStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveIfStmtCondition

        protected void leaveIfStmtCondition​(CAstNode n,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit an IfStmt node after processing the condition.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveIfStmtTrueClause

        protected void leaveIfStmtTrueClause​(CAstNode n,
                                             C c,
                                             CAstVisitor<C> visitor)
        Visit an IfStmt node after processing the true clause.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveIfStmt

        protected void leaveIfStmt​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Leave an IfStmt node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitIfExpr

        protected boolean visitIfExpr​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit an IfExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveIfExprCondition

        protected void leaveIfExprCondition​(CAstNode n,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit an IfExpr node after processing the condition.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveIfExprTrueClause

        protected void leaveIfExprTrueClause​(CAstNode n,
                                             C c,
                                             CAstVisitor<C> visitor)
        Visit an IfExpr node after processing the true clause.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveIfExpr

        protected void leaveIfExpr​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Leave an IfExpr node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitNew

        protected boolean visitNew​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Visit a New node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveNew

        protected void leaveNew​(CAstNode n,
                                C c,
                                CAstVisitor<C> visitor)
        Leave a New node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitObjectLiteral

        protected boolean visitObjectLiteral​(CAstNode n,
                                             C c,
                                             CAstVisitor<C> visitor)
        Visit an ObjectLiteral node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveObjectLiteralFieldInit

        protected void leaveObjectLiteralFieldInit​(CAstNode n,
                                                   int i,
                                                   C c,
                                                   CAstVisitor<C> visitor)
        Visit an ObjectLiteral node after processing the {i}th field initializer.
        Parameters:
        n - the node to process
        i - the field position that was initialized
        c - a visitor-specific context
      • leaveObjectLiteral

        protected void leaveObjectLiteral​(CAstNode n,
                                          C c,
                                          CAstVisitor<C> visitor)
        Leave an ObjectLiteral node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitArrayLiteral

        protected boolean visitArrayLiteral​(CAstNode n,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit an ArrayLiteral node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveArrayLiteralObject

        protected void leaveArrayLiteralObject​(CAstNode n,
                                               C c,
                                               CAstVisitor<C> visitor)
        Visit an ArrayLiteral node after processing the array object.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveArrayLiteralInitElement

        protected void leaveArrayLiteralInitElement​(CAstNode n,
                                                    int i,
                                                    C c,
                                                    CAstVisitor<C> visitor)
        Visit an ArrayLiteral node after processing the {i}th element initializer.
        Parameters:
        n - the node to process
        i - the index that was initialized
        c - a visitor-specific context
      • leaveArrayLiteral

        protected void leaveArrayLiteral​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Leave a ArrayLiteral node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitObjectRef

        protected boolean visitObjectRef​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit an ObjectRef node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveObjectRef

        protected void leaveObjectRef​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Leave an ObjectRef node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitAssign

        public boolean visitAssign​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Visit an Assign node. Override only this to change behavior for all assignment nodes.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveAssign

        public void leaveAssign​(CAstNode n,
                                C c,
                                CAstVisitor<C> visitor)
        Leave an Assign node. Override only this to change behavior for all assignment nodes.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitArrayRefAssign

        protected boolean visitArrayRefAssign​(CAstNode n,
                                              CAstNode v,
                                              CAstNode a,
                                              C c,
                                              CAstVisitor<C> visitor)
        Visit an ArrayRef Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveArrayRefAssign

        protected void leaveArrayRefAssign​(CAstNode n,
                                           CAstNode v,
                                           CAstNode a,
                                           C c,
                                           CAstVisitor<C> visitor)
        Visit an ArrayRef Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
      • visitArrayRefAssignOp

        protected boolean visitArrayRefAssignOp​(CAstNode n,
                                                CAstNode v,
                                                CAstNode a,
                                                boolean pre,
                                                C c,
                                                CAstVisitor<C> visitor)
        Visit an ArrayRef Op/Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveArrayRefAssignOp

        protected void leaveArrayRefAssignOp​(CAstNode n,
                                             CAstNode v,
                                             CAstNode a,
                                             boolean pre,
                                             C c,
                                             CAstVisitor<C> visitor)
        Visit an ArrayRef Op/Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
      • visitObjectRefAssign

        protected boolean visitObjectRefAssign​(CAstNode n,
                                               CAstNode v,
                                               CAstNode a,
                                               C c,
                                               CAstVisitor<C> visitor)
        Visit an ObjectRef Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveObjectRefAssign

        protected void leaveObjectRefAssign​(CAstNode n,
                                            CAstNode v,
                                            CAstNode a,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit an ObjectRef Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
      • visitObjectRefAssignOp

        protected boolean visitObjectRefAssignOp​(CAstNode n,
                                                 CAstNode v,
                                                 CAstNode a,
                                                 boolean pre,
                                                 C c,
                                                 CAstVisitor<C> visitor)
        Visit an ObjectRef Op/Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveObjectRefAssignOp

        protected void leaveObjectRefAssignOp​(CAstNode n,
                                              CAstNode v,
                                              CAstNode a,
                                              boolean pre,
                                              C c,
                                              CAstVisitor<C> visitor)
        Visit an ObjectRef Op/Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
      • visitBlockExprAssign

        protected boolean visitBlockExprAssign​(CAstNode n,
                                               CAstNode v,
                                               CAstNode a,
                                               C c,
                                               CAstVisitor<C> visitor)
        Visit a BlockExpr Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveBlockExprAssign

        protected void leaveBlockExprAssign​(CAstNode n,
                                            CAstNode v,
                                            CAstNode a,
                                            C c,
                                            CAstVisitor<C> visitor)
        Visit a BlockExpr Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
      • visitBlockExprAssignOp

        protected boolean visitBlockExprAssignOp​(CAstNode n,
                                                 CAstNode v,
                                                 CAstNode a,
                                                 boolean pre,
                                                 C c,
                                                 CAstVisitor<C> visitor)
        Visit a BlockExpr Op/Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveBlockExprAssignOp

        protected void leaveBlockExprAssignOp​(CAstNode n,
                                              CAstNode v,
                                              CAstNode a,
                                              boolean pre,
                                              C c,
                                              CAstVisitor<C> visitor)
        Visit a BlockExpr Op/Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
      • visitVarAssign

        protected boolean visitVarAssign​(CAstNode n,
                                         CAstNode v,
                                         CAstNode a,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit a Var Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveVarAssign

        protected void leaveVarAssign​(CAstNode n,
                                      CAstNode v,
                                      CAstNode a,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit a Var Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        c - a visitor-specific context
      • visitVarAssignOp

        protected boolean visitVarAssignOp​(CAstNode n,
                                           CAstNode v,
                                           CAstNode a,
                                           boolean pre,
                                           C c,
                                           CAstVisitor<C> visitor)
        Visit a Var Op/Assignment node after visiting the RHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveVarAssignOp

        protected void leaveVarAssignOp​(CAstNode n,
                                        CAstNode v,
                                        CAstNode a,
                                        boolean pre,
                                        C c,
                                        CAstVisitor<C> visitor)
        Visit a Var Op/Assignment node after visiting the LHS.
        Parameters:
        n - the LHS node to process
        v - the RHS node to process
        a - the assignment node to process
        pre - whether the value before the operation should be used
        c - a visitor-specific context
      • visitSwitch

        protected boolean visitSwitch​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit a Switch node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveSwitchValue

        protected void leaveSwitchValue​(CAstNode n,
                                        C c,
                                        CAstVisitor<C> visitor)
        Visit a Switch node after processing the switch value.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveSwitch

        protected void leaveSwitch​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Leave a Switch node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitThrow

        protected boolean visitThrow​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Visit a Throw node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveThrow

        protected void leaveThrow​(CAstNode n,
                                  C c,
                                  CAstVisitor<C> visitor)
        Leave a Throw node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitCatch

        protected boolean visitCatch​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Visit a Catch node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveCatch

        protected void leaveCatch​(CAstNode n,
                                  C c,
                                  CAstVisitor<C> visitor)
        Leave a Catch node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitUnwind

        protected boolean visitUnwind​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Visit an Unwind node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveUnwind

        protected void leaveUnwind​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Leave an Unwind node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitTry

        protected boolean visitTry​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Visit a Try node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveTryBlock

        protected void leaveTryBlock​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Visit a Try node after processing the try block.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveTry

        protected void leaveTry​(CAstNode n,
                                C c,
                                CAstVisitor<C> visitor)
        Leave a Try node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitEmpty

        protected boolean visitEmpty​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Visit an Empty node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveEmpty

        protected void leaveEmpty​(CAstNode n,
                                  C c,
                                  CAstVisitor<C> visitor)
        Leave an Empty node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitPrimitive

        protected boolean visitPrimitive​(CAstNode n,
                                         C c,
                                         CAstVisitor<C> visitor)
        Visit a Primitive node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leavePrimitive

        protected void leavePrimitive​(CAstNode n,
                                      C c,
                                      CAstVisitor<C> visitor)
        Leave a Primitive node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitVoid

        protected boolean visitVoid​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Visit a Void node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveVoid

        protected void leaveVoid​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave a Void node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitCast

        protected boolean visitCast​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Visit a Cast node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveCast

        protected void leaveCast​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave a Cast node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitInstanceOf

        protected boolean visitInstanceOf​(CAstNode n,
                                          C c,
                                          CAstVisitor<C> visitor)
        Visit an InstanceOf node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveInstanceOf

        protected void leaveInstanceOf​(CAstNode n,
                                       C c,
                                       CAstVisitor<C> visitor)
        Leave an InstanceOf node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveAssert

        protected void leaveAssert​(CAstNode n,
                                   C c,
                                   CAstVisitor<C> visitor)
        Visit an InstanceOf node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitEachElementHasNext

        protected boolean visitEachElementHasNext​(CAstNode n,
                                                  C c,
                                                  CAstVisitor<C> visitor)
        Leave an InstanceOf node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveEachElementHasNext

        protected void leaveEachElementHasNext​(CAstNode n,
                                               C c,
                                               CAstVisitor<C> visitor)
      • visitEachElementGet

        protected boolean visitEachElementGet​(CAstNode n,
                                              C c,
                                              CAstVisitor<C> visitor)
        Visit an InstanceOf node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveEachElementGet

        protected void leaveEachElementGet​(CAstNode n,
                                           C c,
                                           CAstVisitor<C> visitor)
        Leave an FOR_EACH_ELEMENT_GET node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitTypeLiteralExpr

        protected boolean visitTypeLiteralExpr​(CAstNode n,
                                               C c,
                                               CAstVisitor<C> visitor)
        Visit an TYPE_LITERAL_EXPR node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
        Returns:
        true if no further processing is needed
      • leaveTypeLiteralExpr

        protected void leaveTypeLiteralExpr​(CAstNode n,
                                            C c,
                                            CAstVisitor<C> visitor)
        Leave an TYPE_LITERAL_EXPR node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • visitIsDefinedExpr

        protected boolean visitIsDefinedExpr​(CAstNode n,
                                             C c,
                                             CAstVisitor<C> visitor)
      • leaveIsDefinedExpr

        protected void leaveIsDefinedExpr​(CAstNode n,
                                          C c,
                                          CAstVisitor<C> visitor)
        Leave an IS_DEFINED_EXPR node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveEcho

        protected void leaveEcho​(CAstNode n,
                                 C c,
                                 CAstVisitor<C> visitor)
        Leave an ECHO node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveInclude

        protected void leaveInclude​(CAstNode n,
                                    C c,
                                    CAstVisitor<C> visitor)
        Leave an INCLUDE node.
        Parameters:
        n - the node to process
        c - a visitor-specific context
      • leaveMacroVar

        protected void leaveMacroVar​(CAstNode n,
                                     C c,
                                     CAstVisitor<C> visitor)
        Leave an MACRO_VAR node.
        Parameters:
        n - the node to process
        c - a visitor-specific context