Class CAstVisitor<C extends CAstVisitor.Context>
java.lang.Object
com.ibm.wala.cast.tree.visit.CAstVisitor<C>
- Direct Known Subclasses:
AstTranslator, CAstPattern.Matcher, DelegatingCAstVisitor, ExposedNamesCollector
- Author:
- Igor Peshansky Ripped out of Julian's AstTranslator TODO: document me.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceThis interface represents a visitor-specific context. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleandoVisit(CAstNode n, C context, CAstVisitor<C> visitor) Node processing hook; sub-classes are expected to override if they introduce new node types.protected booleandoVisitArrayRefNode(CAstNode n, CAstNode v, CAstNode a, boolean assign, boolean preOp, C context, CAstVisitor<C> visitor) Process the given array reference node.protected booleandoVisitAssignNodes(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.protected booleandoVisitEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Entity processing hook; sub-classes are expected to override if they introduce new entity types.protected booleanenterEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Enter the entity visitor.protected booleanenterNode(CAstNode n, C c, CAstVisitor<C> visitor) Enter the node visitor.protected CgetCodeContext(C context) protected CAstEntitygetParent(CAstEntity entity) Get the parent entity for a given entity.protected voidleaveArrayLength(CAstNode n, C c, CAstVisitor<C> visitor) Leave an ArrayLength node.protected voidleaveArrayLiteral(CAstNode n, C c, CAstVisitor<C> visitor) Leave a ArrayLiteral node.protected voidleaveArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the LHS.protected voidleaveArrayLiteralInitElement(CAstNode n, int i, C c, CAstVisitor<C> visitor) Visit an ArrayLiteral node after processing the {i}th element initializer.protected voidleaveArrayLiteralObject(CAstNode n, C c, CAstVisitor<C> visitor) Visit an ArrayLiteral node after processing the array object.protected voidleaveArrayRef(CAstNode n, C c, CAstVisitor<C> visitor) Leave an ArrayRef node.protected voidleaveArrayRefAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an ArrayRef Assignment node after visiting the LHS.protected voidleaveArrayRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit an ArrayRef Op/Assignment node after visiting the LHS.protected voidleaveAssert(CAstNode n, C c, CAstVisitor<C> visitor) Visit an InstanceOf node.voidleaveAssign(CAstNode n, C c, CAstVisitor<C> visitor) Leave an Assign node.protected voidleaveBinaryExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave a BinaryExpr node.protected voidleaveBlockExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave a BlockExpr node.protected voidleaveBlockExprAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit a BlockExpr Assignment node after visiting the LHS.protected voidleaveBlockExprAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit a BlockExpr Op/Assignment node after visiting the LHS.protected voidleaveBlockStmt(CAstNode n, C c, CAstVisitor<C> visitor) Leave a BlockStmt node.protected voidleaveCall(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Call node.protected voidleaveCast(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Cast node.protected voidleaveCatch(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Catch node.protected voidleaveClassStmt(CAstNode n, C c, CAstVisitor<C> visitor) Leave a FunctionStmt node.protected voidleaveConstant(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Constant node.protected voidleaveDeclStmt(CAstNode n, C c, CAstVisitor<C> visitor) Leave a DeclStmt node.protected voidleaveEachElementGet(CAstNode n, C c, CAstVisitor<C> visitor) Leave an FOR_EACH_ELEMENT_GET node.protected voidleaveEachElementHasNext(CAstNode n, C c, CAstVisitor<C> visitor) protected voidleaveEcho(CAstNode n, C c, CAstVisitor<C> visitor) Leave an ECHO node.protected voidleaveEmpty(CAstNode n, C c, CAstVisitor<C> visitor) Leave an Empty node.voidleaveEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Leave any entity.protected voidleaveFieldEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Leave a Field entity.protected voidleaveFileEntity(CAstEntity n, C context, C fileContext, CAstVisitor<C> visitor) Leave a File entity.protected voidleaveForIn(CAstNode n, C c, CAstVisitor<C> visitor) Leave a For..In node.protected voidleaveFunctionEntity(CAstEntity n, C context, C codeContext, CAstVisitor<C> visitor) Leave a Function entity.protected voidleaveFunctionExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave a FunctionExpr node.protected voidleaveFunctionStmt(CAstNode n, C c, CAstVisitor<C> visitor) Leave a FunctionStmt node.protected voidleaveGetCaughtException(CAstNode n, C c, CAstVisitor<C> visitor) Leave a GetCaughtException node.protected voidleaveGlobalEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Leave a Field entity.protected voidleaveGoto(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Goto node.protected voidleaveIfExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave an IfExpr node.protected voidleaveIfExprCondition(CAstNode n, C c, CAstVisitor<C> visitor) Visit an IfExpr node after processing the condition.protected voidleaveIfExprTrueClause(CAstNode n, C c, CAstVisitor<C> visitor) Visit an IfExpr node after processing the true clause.protected voidleaveIfgoto(CAstNode n, C c, CAstVisitor<C> visitor) Leave an Ifgoto node.protected voidleaveIfStmt(CAstNode n, C c, CAstVisitor<C> visitor) Leave an IfStmt node.protected voidleaveIfStmtCondition(CAstNode n, C c, CAstVisitor<C> visitor) Visit an IfStmt node after processing the condition.protected voidleaveIfStmtTrueClause(CAstNode n, C c, CAstVisitor<C> visitor) Visit an IfStmt node after processing the true clause.protected voidleaveInclude(CAstNode n, C c, CAstVisitor<C> visitor) Leave an INCLUDE node.protected voidleaveInstanceOf(CAstNode n, C c, CAstVisitor<C> visitor) Leave an InstanceOf node.protected voidleaveIsDefinedExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave an IS_DEFINED_EXPR node.protected voidleaveLabelStmt(CAstNode n, C c, CAstVisitor<C> visitor) Leave a LabelStmt node.protected voidleaveLocalScope(CAstNode n, C c, CAstVisitor<C> visitor) Leave a LocalScope node.protected voidleaveLoop(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Loop node.protected voidleaveLoopHeader(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Loop node after processing the loop header.protected voidleaveMacroEntity(CAstEntity n, C context, C codeContext, CAstVisitor<C> visitor) Leave a Macro entity.protected voidleaveMacroVar(CAstNode n, C c, CAstVisitor<C> visitor) Leave an MACRO_VAR node.protected voidleaveNew(CAstNode n, C c, CAstVisitor<C> visitor) Leave a New node.voidleaveNode(CAstNode n, C c, CAstVisitor<C> visitor) Leave any node.protected voidleaveObjectLiteral(CAstNode n, C c, CAstVisitor<C> visitor) Leave an ObjectLiteral node.protected voidleaveObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the LHS.protected voidleaveObjectLiteralFieldInit(CAstNode n, int i, C c, CAstVisitor<C> visitor) Visit an ObjectLiteral node after processing the {i}th field initializer.protected voidleaveObjectRef(CAstNode n, C c, CAstVisitor<C> visitor) Leave an ObjectRef node.protected voidleaveObjectRefAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an ObjectRef Assignment node after visiting the LHS.protected voidleaveObjectRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit an ObjectRef Op/Assignment node after visiting the LHS.protected voidleavePrimitive(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Primitive node.protected voidleaveReturn(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Return node.protected voidleaveScriptEntity(CAstEntity n, C context, C codeContext, CAstVisitor<C> visitor) Leave a Script entity.protected voidleaveSpecialParentScope(CAstNode n, C context, CAstVisitor<C> visitor) protected voidleaveSuper(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Super node.protected voidleaveSwitch(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Switch node.protected voidleaveSwitchValue(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Switch node after processing the switch value.protected voidleaveThis(CAstNode n, C c, CAstVisitor<C> visitor) Leave a This node.protected voidleaveThrow(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Throw node.protected voidleaveTry(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Try node.protected voidleaveTryBlock(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Try node after processing the try block.protected voidleaveTypeEntity(CAstEntity n, C context, C typeContext, CAstVisitor<C> visitor) Leave a Type entity.protected voidleaveTypeLiteralExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave an TYPE_LITERAL_EXPR node.protected voidleaveUnaryExpr(CAstNode n, C c, CAstVisitor<C> visitor) Leave a UnaryExpr node.protected voidleaveUnwind(CAstNode n, C c, CAstVisitor<C> visitor) Leave an Unwind node.protected voidleaveVar(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Var node.protected voidleaveVarAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit a Var Assignment node after visiting the LHS.protected voidleaveVarAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit a Var Op/Assignment node after visiting the LHS.protected voidleaveVoid(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Void node.protected voidleaveYield(CAstNode n, C c, CAstVisitor<C> visitor) Leave a Return node.protected CmakeCodeContext(C context, CAstEntity n) Construct a context for a Code entity.protected CmakeFileContext(C context, CAstEntity n) Construct a context for a File entity.protected CmakeLocalContext(C context, CAstNode n) Construct a context for a LocalScope node.protected CmakeSpecialParentContext(C context, CAstNode n) protected CmakeTypeContext(C context, CAstEntity n) Construct a context for a Type entity.protected CmakeUnwindContext(C context, CAstNode n, CAstVisitor<C> visitor) Construct a context for an Unwind node.protected voidpostProcessEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Post-process an entity after visiting it.protected voidpostProcessNode(CAstNode n, C c, CAstVisitor<C> visitor) Post-process a node after visiting it.protected voidsetParent(CAstEntity entity, CAstEntity parent) Set the parent entity for a given entity.final voidvisit(CAstNode n, C context, CAstVisitor<C> visitor) Recursively visit a given node.final voidvisitAllChildren(CAstNode n, C context, CAstVisitor<C> visitor) Visit all children of a node.protected booleanvisitArrayLength(CAstNode n, C c, CAstVisitor<C> visitor) Visit an ArrayLength node.protected booleanvisitArrayLiteral(CAstNode n, C c, CAstVisitor<C> visitor) Visit an ArrayLiteral node.protected booleanvisitArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the RHS.protected booleanvisitArrayRef(CAstNode n, C c, CAstVisitor<C> visitor) Visit an ArrayRef node.protected booleanvisitArrayRefAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an ArrayRef Assignment node after visiting the RHS.protected booleanvisitArrayRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit an ArrayRef Op/Assignment node after visiting the RHS.protected booleanvisitAssert(CAstNode n, C c, CAstVisitor<C> visitor) booleanvisitAssign(CAstNode n, C c, CAstVisitor<C> visitor) Visit an Assign node.protected booleanvisitAssignNodes(CAstNode n, C context, CAstNode v, CAstNode a, CAstVisitor<C> visitor) protected booleanvisitBinaryExpr(CAstNode n, C c, CAstVisitor<C> visitor) Visit a BinaryExpr node.protected booleanvisitBlockExpr(CAstNode n, C c, CAstVisitor<C> visitor) Visit a BlockExpr node.protected booleanvisitBlockExprAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit a BlockExpr Assignment node after visiting the RHS.protected booleanvisitBlockExprAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit a BlockExpr Op/Assignment node after visiting the RHS.protected booleanvisitBlockStmt(CAstNode n, C c, CAstVisitor<C> visitor) Visit a BlockStmt node.protected booleanvisitCall(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Call node.protected booleanvisitCast(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Cast node.protected booleanvisitCatch(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Catch node.final voidvisitChildren(CAstNode n, int start, C context, CAstVisitor<C> visitor) Visit children of a node starting at a given index.protected booleanvisitClassStmt(CAstNode n, C c, CAstVisitor<C> visitor) Visit a FunctionStmt node.protected booleanvisitConstant(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Constant node.protected booleanvisitDeclStmt(CAstNode n, C c, CAstVisitor<C> visitor) Visit a DeclStmt node.protected booleanvisitEachElementGet(CAstNode n, C c, CAstVisitor<C> visitor) Visit an InstanceOf node.protected booleanvisitEachElementHasNext(CAstNode n, C c, CAstVisitor<C> visitor) Leave an InstanceOf node.protected booleanvisitEcho(CAstNode n, C c, CAstVisitor<C> visitor) protected booleanvisitEmpty(CAstNode n, C c, CAstVisitor<C> visitor) Visit an Empty node.final voidvisitEntities(CAstEntity n, C context, CAstVisitor<C> visitor) Recursively visit an entity.booleanvisitEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Visit any entity.protected booleanvisitFieldEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Visit a Field entity.protected booleanvisitFileEntity(CAstEntity n, C context, C fileC, CAstVisitor<C> visitor) Visit a File entity.protected booleanvisitForIn(CAstNode n, C c, CAstVisitor<C> visitor) Visit a For..In node.protected booleanvisitFunctionEntity(CAstEntity n, C context, C codeContext, CAstVisitor<C> visitor) Visit a Function entity.protected booleanvisitFunctionExpr(CAstNode n, C c, CAstVisitor<C> visitor) Visit a FunctionExpr node.protected booleanvisitFunctionStmt(CAstNode n, C c, CAstVisitor<C> visitor) Visit a FunctionStmt node.protected booleanvisitGetCaughtException(CAstNode n, C c, CAstVisitor<C> visitor) Visit a GetCaughtException node.protected booleanvisitGlobalEntity(CAstEntity n, C context, CAstVisitor<C> visitor) Visit a Field entity.protected booleanvisitGoto(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Goto node.protected booleanvisitIfExpr(CAstNode n, C c, CAstVisitor<C> visitor) Visit an IfExpr node.protected booleanvisitIfgoto(CAstNode n, C c, CAstVisitor<C> visitor) Visit an Ifgoto node.protected booleanvisitIfStmt(CAstNode n, C c, CAstVisitor<C> visitor) Visit an IfStmt node.protected booleanvisitInclude(CAstNode n, C c, CAstVisitor<C> visitor) protected booleanvisitInstanceOf(CAstNode n, C c, CAstVisitor<C> visitor) Visit an InstanceOf node.protected booleanvisitIsDefinedExpr(CAstNode n, C c, CAstVisitor<C> visitor) protected booleanvisitLabelStmt(CAstNode n, C c, CAstVisitor<C> visitor) Visit a LabelStmt node.protected booleanvisitLocalScope(CAstNode n, C c, CAstVisitor<C> visitor) Visit a LocalScope node.protected booleanvisitLoop(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Loop node.protected booleanvisitMacroEntity(CAstEntity n, C context, C codeContext, CAstVisitor<C> visitor) Visit a Macro entity.protected booleanvisitMacroVar(CAstNode n, C c, CAstVisitor<C> visitor) protected booleanvisitNew(CAstNode n, C c, CAstVisitor<C> visitor) Visit a New node.booleanvisitNode(CAstNode n, C c, CAstVisitor<C> visitor) Visit any node.protected booleanvisitObjectLiteral(CAstNode n, C c, CAstVisitor<C> visitor) Visit an ObjectLiteral node.protected booleanvisitObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the RHS.protected booleanvisitObjectRef(CAstNode n, C c, CAstVisitor<C> visitor) Visit an ObjectRef node.protected booleanvisitObjectRefAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an ObjectRef Assignment node after visiting the RHS.protected booleanvisitObjectRefAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit an ObjectRef Op/Assignment node after visiting the RHS.protected booleanvisitPrimitive(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Primitive node.protected booleanvisitReturn(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Return node.final voidvisitScopedEntities(CAstEntity n, Iterator<CAstEntity> i, C context, CAstVisitor<C> visitor) final voidvisitScopedEntities(CAstEntity n, Map<CAstNode, Collection<CAstEntity>> allScopedEntities, C context, CAstVisitor<C> visitor) Visit scoped entities of an entity using a given iterator.protected booleanvisitScriptEntity(CAstEntity n, C context, C codeContext, CAstVisitor<C> visitor) Visit a Script entity.protected booleanvisitSpecialParentScope(CAstNode n, C context, CAstVisitor<C> visitor) protected booleanvisitSuper(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Super node.protected booleanvisitSwitch(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Switch node.protected booleanvisitThis(CAstNode n, C c, CAstVisitor<C> visitor) Visit a This node.protected booleanvisitThrow(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Throw node.protected booleanvisitTry(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Try node.protected booleanvisitTypeEntity(CAstEntity n, C context, C typeContext, CAstVisitor<C> visitor) Visit a Type entity.protected booleanvisitTypeLiteralExpr(CAstNode n, C c, CAstVisitor<C> visitor) Visit an TYPE_LITERAL_EXPR node.protected booleanvisitUnaryExpr(CAstNode n, C c, CAstVisitor<C> visitor) Visit a UnaryExpr node.protected booleanvisitUnwind(CAstNode n, C c, CAstVisitor<C> visitor) Visit an Unwind node.protected booleanvisitVar(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Var node.protected booleanvisitVarAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit a Var Assignment node after visiting the RHS.protected booleanvisitVarAssignOp(CAstNode n, CAstNode v, CAstNode a, boolean pre, C c, CAstVisitor<C> visitor) Visit a Var Op/Assignment node after visiting the RHS.protected booleanvisitVoid(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Void node.protected booleanvisitYield(CAstNode n, C c, CAstVisitor<C> visitor) Visit a Return node.
-
Field Details
-
DEBUG
public static boolean DEBUG -
currentPosition
-
-
Constructor Details
-
CAstVisitor
protected CAstVisitor()
-
-
Method Details
-
getCurrentPosition
-
makeFileContext
Construct a context for a File entity.- Parameters:
context- a visitor-specific context in which this file was visitedn- the file entity
-
makeTypeContext
Construct a context for a Type entity.- Parameters:
context- a visitor-specific context in which this type was visitedn- the type entity
-
makeCodeContext
Construct a context for a Code entity.- Parameters:
context- a visitor-specific context in which the code was visitedn- the code entity
-
makeLocalContext
-
makeUnwindContext
Construct a context for an Unwind node.- Parameters:
context- a visitor-specific context in which the unwind was visitedn- the unwind node
-
getParent
Get the parent entity for a given entity.- Parameters:
entity- the child entity- Returns:
- the parent entity for the given entity
-
setParent
Set the parent entity for a given entity.- Parameters:
entity- the child entityparent- the parent entity
-
doVisitEntity
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<CAstNode, Collection<CAstEntity>> 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 processcontext- a visitor-specific context
-
visitScopedEntities
public final void visitScopedEntities(CAstEntity n, Iterator<CAstEntity> i, C context, CAstVisitor<C> visitor) -
getCodeContext
-
visitEntities
Recursively visit an entity.- Parameters:
n- the entity to processcontext- a visitor-specific context
-
enterEntity
Enter the entity visitor.- Parameters:
n- the entity to processcontext- a visitor-specific context- Returns:
- true if no further processing is needed
-
postProcessEntity
Post-process an entity after visiting it.- Parameters:
n- the entity to processcontext- a visitor-specific context
-
visitEntity
Visit any entity. Override only this to change behavior for all entities.- Parameters:
n- the entity to processcontext- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveEntity
Leave any entity. Override only this to change behavior for all entities.- Parameters:
n- the entity to processcontext- a visitor-specific context
-
visitFileEntity
Visit a File entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextfileC- a visitor-specific context for this file- Returns:
- true if no further processing is needed
-
leaveFileEntity
Leave a File entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextfileContext- a visitor-specific context for this file
-
visitFieldEntity
Visit a Field entity.- Parameters:
n- the entity to processcontext- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveFieldEntity
Leave a Field entity.- Parameters:
n- the entity to processcontext- a visitor-specific context
-
visitGlobalEntity
Visit a Field entity.- Parameters:
n- the entity to processcontext- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveGlobalEntity
Leave a Field entity.- Parameters:
n- the entity to processcontext- a visitor-specific context
-
visitTypeEntity
Visit a Type entity.- Parameters:
n- the entity to processcontext- a visitor-specific contexttypeContext- a visitor-specific context for this type- Returns:
- true if no further processing is needed
-
leaveTypeEntity
Leave a Type entity.- Parameters:
n- the entity to processcontext- a visitor-specific contexttypeContext- 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 processcontext- a visitor-specific contextcodeContext- a visitor-specific context for this function- Returns:
- true if no further processing is needed
-
leaveFunctionEntity
Leave a Function entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextcodeContext- a visitor-specific context for this function
-
visitMacroEntity
Visit a Macro entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextcodeContext- a visitor-specific context for this macro- Returns:
- true if no further processing is needed
-
leaveMacroEntity
Leave a Macro entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextcodeContext- a visitor-specific context for this macro
-
visitScriptEntity
Visit a Script entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextcodeContext- a visitor-specific context for this script- Returns:
- true if no further processing is needed
-
leaveScriptEntity
Leave a Script entity.- Parameters:
n- the entity to processcontext- a visitor-specific contextcodeContext- a visitor-specific context for this script
-
doVisit
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
Visit children of a node starting at a given index.- Parameters:
n- the parent node of the nodes to processstart- the starting index of the nodes to processcontext- a visitor-specific context
-
visitAllChildren
Visit all children of a node.- Parameters:
n- the parent node of the nodes to processcontext- a visitor-specific context
-
visit
Recursively visit a given node. TODO: do assertions about structure belong here?- Parameters:
n- the node to processcontext- a visitor-specific context
-
leaveSpecialParentScope
-
makeSpecialParentContext
-
visitSpecialParentScope
-
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). -
visitAssignNodes
-
enterNode
Enter the node visitor.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
postProcessNode
Post-process a node after visiting it.- Parameters:
n- the node to processc- a visitor-specific context
-
visitNode
Visit any node. Override only this to change behavior for all nodes.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveNode
Leave any node. Override only this to change behavior for all nodes.- Parameters:
n- the node to processc- a visitor-specific context
-
visitFunctionExpr
Visit a FunctionExpr node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveFunctionExpr
Leave a FunctionExpr node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitFunctionStmt
Visit a FunctionStmt node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveFunctionStmt
Leave a FunctionStmt node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitClassStmt
Visit a FunctionStmt node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveClassStmt
Leave a FunctionStmt node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitLocalScope
Visit a LocalScope node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveLocalScope
Leave a LocalScope node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitBlockExpr
Visit a BlockExpr node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveBlockExpr
Leave a BlockExpr node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitBlockStmt
Visit a BlockStmt node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveBlockStmt
Leave a BlockStmt node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitLoop
Visit a Loop node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
visitForIn
Visit a For..In node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveLoopHeader
Visit a Loop node after processing the loop header.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveLoop
Leave a Loop node.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveForIn
Leave a For..In node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitGetCaughtException
Visit a GetCaughtException node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveGetCaughtException
Leave a GetCaughtException node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitThis
Visit a This node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveThis
Leave a This node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitSuper
Visit a Super node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveSuper
Leave a Super node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitCall
Visit a Call node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveCall
Leave a Call node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitVar
Visit a Var node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveVar
Leave a Var node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitConstant
Visit a Constant node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveConstant
Leave a Constant node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitBinaryExpr
Visit a BinaryExpr node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveBinaryExpr
Leave a BinaryExpr node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitUnaryExpr
Visit a UnaryExpr node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveUnaryExpr
Leave a UnaryExpr node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitArrayLength
Visit an ArrayLength node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveArrayLength
Leave an ArrayLength node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitArrayRef
Visit an ArrayRef node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveArrayRef
Leave an ArrayRef node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitDeclStmt
Visit a DeclStmt node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveDeclStmt
Leave a DeclStmt node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitReturn
Visit a Return node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveReturn
Leave a Return node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitYield
Visit a Return node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveYield
Leave a Return node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitIfgoto
Visit an Ifgoto node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveIfgoto
Leave an Ifgoto node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitGoto
Visit a Goto node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveGoto
Leave a Goto node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitLabelStmt
Visit a LabelStmt node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveLabelStmt
Leave a LabelStmt node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitIfStmt
Visit an IfStmt node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveIfStmtCondition
Visit an IfStmt node after processing the condition.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveIfStmtTrueClause
Visit an IfStmt node after processing the true clause.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveIfStmt
Leave an IfStmt node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitIfExpr
Visit an IfExpr node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveIfExprCondition
Visit an IfExpr node after processing the condition.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveIfExprTrueClause
Visit an IfExpr node after processing the true clause.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveIfExpr
Leave an IfExpr node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitNew
Visit a New node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveNew
Leave a New node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitObjectLiteral
Visit an ObjectLiteral node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveObjectLiteralFieldInit
Visit an ObjectLiteral node after processing the {i}th field initializer.- Parameters:
n- the node to processi- the field position that was initializedc- a visitor-specific context
-
leaveObjectLiteral
Leave an ObjectLiteral node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitArrayLiteral
Visit an ArrayLiteral node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveArrayLiteralObject
Visit an ArrayLiteral node after processing the array object.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveArrayLiteralInitElement
Visit an ArrayLiteral node after processing the {i}th element initializer.- Parameters:
n- the node to processi- the index that was initializedc- a visitor-specific context
-
leaveArrayLiteral
Leave a ArrayLiteral node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitObjectRef
Visit an ObjectRef node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveObjectRef
Leave an ObjectRef node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitAssign
Visit an Assign node. Override only this to change behavior for all assignment nodes.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveAssign
Leave an Assign node. Override only this to change behavior for all assignment nodes.- Parameters:
n- the node to processc- 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 processv- the RHS node to processa- the assignment node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveArrayRefAssign
-
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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- 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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- 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 processv- the RHS node to processa- the assignment node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveObjectRefAssign
-
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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- 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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- 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 processv- the RHS node to processa- the assignment node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveBlockExprAssign
-
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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- 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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- a visitor-specific context
-
visitVarAssign
Visit a Var Assignment node after visiting the RHS.- Parameters:
n- the LHS node to processv- the RHS node to processa- the assignment node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveVarAssign
-
visitArrayLiteralAssign
protected boolean visitArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the RHS.- Parameters:
n- the LHS node to processv- the RHS node to processa- the assignment node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveArrayLiteralAssign
protected void leaveArrayLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the LHS.- Parameters:
n- the LHS node to processv- the RHS node to processa- the assignment node to processc- a visitor-specific context
-
visitObjectLiteralAssign
protected boolean visitObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the RHS.- Parameters:
n- the LHS node to processv- the RHS node to processa- the assignment node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveObjectLiteralAssign
protected void leaveObjectLiteralAssign(CAstNode n, CAstNode v, CAstNode a, C c, CAstVisitor<C> visitor) Visit an array literal Assignment node after visiting the LHS.- Parameters:
n- the LHS node to processv- the RHS node to processa- the assignment node to processc- 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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- 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 processv- the RHS node to processa- the assignment node to processpre- whether the value before the operation should be usedc- a visitor-specific context
-
visitSwitch
Visit a Switch node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveSwitchValue
Visit a Switch node after processing the switch value.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveSwitch
Leave a Switch node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitThrow
Visit a Throw node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveThrow
Leave a Throw node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitCatch
Visit a Catch node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveCatch
Leave a Catch node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitUnwind
Visit an Unwind node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveUnwind
Leave an Unwind node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitTry
Visit a Try node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveTryBlock
Visit a Try node after processing the try block.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveTry
Leave a Try node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitEmpty
Visit an Empty node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveEmpty
Leave an Empty node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitPrimitive
Visit a Primitive node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leavePrimitive
Leave a Primitive node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitVoid
Visit a Void node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveVoid
Leave a Void node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitCast
Visit a Cast node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveCast
Leave a Cast node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitInstanceOf
Visit an InstanceOf node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveInstanceOf
Leave an InstanceOf node.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveAssert
Visit an InstanceOf node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitAssert
-
visitEachElementHasNext
Leave an InstanceOf node.- Parameters:
n- the node to processc- a visitor-specific context
-
leaveEachElementHasNext
-
visitEachElementGet
Visit an InstanceOf node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveEachElementGet
Leave an FOR_EACH_ELEMENT_GET node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitTypeLiteralExpr
Visit an TYPE_LITERAL_EXPR node.- Parameters:
n- the node to processc- a visitor-specific context- Returns:
- true if no further processing is needed
-
leaveTypeLiteralExpr
Leave an TYPE_LITERAL_EXPR node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitIsDefinedExpr
-
leaveIsDefinedExpr
Leave an IS_DEFINED_EXPR node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitEcho
-
leaveEcho
Leave an ECHO node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitInclude
-
leaveInclude
Leave an INCLUDE node.- Parameters:
n- the node to processc- a visitor-specific context
-
visitMacroVar
-
leaveMacroVar
Leave an MACRO_VAR node.- Parameters:
n- the node to processc- a visitor-specific context
-