Package org.eclipse.cdt.core.dom.ast
Class ASTVisitor
- java.lang.Object
-
- org.eclipse.cdt.core.dom.ast.ASTVisitor
-
- Direct Known Subclasses:
ASTGenericVisitor
,ASTNameCollector
,CASTVisitor
,CPPASTVisitor
public abstract class ASTVisitor extends Object
Abstract base class for all visitors to traverse AST nodes.
visit() methods implement a top-down traversal, and
leave() methods implement a bottom-up traversal.
Clients may subclass.
-
-
Field Summary
Fields Modifier and Type Field Description boolean
includeInactiveNodes
Per default inactive nodes are not visited.static int
PROCESS_ABORT
Abort the entire traversal.static int
PROCESS_CONTINUE
Continue with traversing the children of this node.static int
PROCESS_SKIP
Skip the traversal of children of this node, don't call leave on this node.boolean
shouldVisitAmbiguousNodes
Normally neither ambiguous nodes nor their children are visited.boolean
shouldVisitArrayModifiers
Set this flag to visit array modifiers.boolean
shouldVisitAttributes
Set this flag to visit attributes.boolean
shouldVisitBaseSpecifiers
Set this flag to visit base specifiers off composite types.boolean
shouldVisitCaptures
Set this flag to visit capturesboolean
shouldVisitDeclarations
Set this flag to visit declarations.boolean
shouldVisitDeclarators
Set this flag to visit declarators.boolean
shouldVisitDeclSpecifiers
Set this flag to visit declaration specifiers.boolean
shouldVisitDecltypeSpecifiers
Set this flag to visit decltype-specifiers.boolean
shouldVisitDesignators
Set this flag to visit designators of initializers.boolean
shouldVisitEnumerators
Set this flag to visit enumerators.boolean
shouldVisitExpressions
Set this flag to visit expressions.boolean
shouldVisitImplicitDestructorNames
Implicit destructor names are created to mark code locations where destructors of temporaries and variables going out of scope are called, normally they are not visited, set this flag to true to visit them.boolean
shouldVisitImplicitNameAlternates
Sometimes more than one implicit name is created for a binding, set this flag to true to visit more than one name for an implicit binding.boolean
shouldVisitImplicitNames
Implicit names are created to allow implicit bindings to be resolved, normally they are not visited, set this flag to true to visit them.boolean
shouldVisitInitializers
Set this flag to visit initializers.boolean
shouldVisitNames
Set this flag to visit names.boolean
shouldVisitNamespaces
Set this flag to visit namespace definitions.boolean
shouldVisitParameterDeclarations
Set this flag to visit parameter declarations.boolean
shouldVisitPointerOperators
Set this flag to visit pointer operators of declarators.boolean
shouldVisitProblems
Set this flag to visit problem nodes.boolean
shouldVisitStatements
Set this flag to visit statements.boolean
shouldVisitTemplateParameters
Set this flag to visit template parameters.boolean
shouldVisitTokens
Set this flag to visit token nodes.boolean
shouldVisitTranslationUnit
Set this flag to visit translation units.boolean
shouldVisitTypeIds
Set this flag to visit typeids.boolean
shouldVisitVirtSpecifiers
Set this flag to visit virt-specifiers.
-
Constructor Summary
Constructors Constructor Description ASTVisitor()
Creates a visitor that does not visit any kind of node per default.ASTVisitor(boolean visitNodes)
Creates a visitor.
-
Method Summary
-
-
-
Field Detail
-
PROCESS_SKIP
public static final int PROCESS_SKIP
Skip the traversal of children of this node, don't call leave on this node.- See Also:
- Constant Field Values
-
PROCESS_ABORT
public static final int PROCESS_ABORT
Abort the entire traversal.- See Also:
- Constant Field Values
-
PROCESS_CONTINUE
public static final int PROCESS_CONTINUE
Continue with traversing the children of this node.- See Also:
- Constant Field Values
-
shouldVisitNames
public boolean shouldVisitNames
Set this flag to visit names.
-
shouldVisitDeclarations
public boolean shouldVisitDeclarations
Set this flag to visit declarations.
-
shouldVisitInitializers
public boolean shouldVisitInitializers
Set this flag to visit initializers.
-
shouldVisitParameterDeclarations
public boolean shouldVisitParameterDeclarations
Set this flag to visit parameter declarations.
-
shouldVisitDeclarators
public boolean shouldVisitDeclarators
Set this flag to visit declarators.
-
shouldVisitDeclSpecifiers
public boolean shouldVisitDeclSpecifiers
Set this flag to visit declaration specifiers.
-
shouldVisitArrayModifiers
public boolean shouldVisitArrayModifiers
Set this flag to visit array modifiers.- Since:
- 5.1
-
shouldVisitPointerOperators
public boolean shouldVisitPointerOperators
Set this flag to visit pointer operators of declarators.- Since:
- 5.1
-
shouldVisitAttributes
public boolean shouldVisitAttributes
Set this flag to visit attributes.- Since:
- 5.4
-
shouldVisitTokens
public boolean shouldVisitTokens
Set this flag to visit token nodes.- Since:
- 5.4
-
shouldVisitExpressions
public boolean shouldVisitExpressions
Set this flag to visit expressions.
-
shouldVisitStatements
public boolean shouldVisitStatements
Set this flag to visit statements.
-
shouldVisitTypeIds
public boolean shouldVisitTypeIds
Set this flag to visit typeids.
-
shouldVisitEnumerators
public boolean shouldVisitEnumerators
Set this flag to visit enumerators.
-
shouldVisitTranslationUnit
public boolean shouldVisitTranslationUnit
Set this flag to visit translation units.
-
shouldVisitProblems
public boolean shouldVisitProblems
Set this flag to visit problem nodes.
-
shouldVisitDesignators
public boolean shouldVisitDesignators
Set this flag to visit designators of initializers.
-
shouldVisitBaseSpecifiers
public boolean shouldVisitBaseSpecifiers
Set this flag to visit base specifiers off composite types.
-
shouldVisitNamespaces
public boolean shouldVisitNamespaces
Set this flag to visit namespace definitions.
-
shouldVisitTemplateParameters
public boolean shouldVisitTemplateParameters
Set this flag to visit template parameters.
-
shouldVisitCaptures
public boolean shouldVisitCaptures
Set this flag to visit captures- Since:
- 5.3
-
shouldVisitVirtSpecifiers
public boolean shouldVisitVirtSpecifiers
Set this flag to visit virt-specifiers.- Since:
- 5.7
-
shouldVisitDecltypeSpecifiers
public boolean shouldVisitDecltypeSpecifiers
Set this flag to visit decltype-specifiers.- Since:
- 5.8
-
includeInactiveNodes
public boolean includeInactiveNodes
Per default inactive nodes are not visited. You can change that by setting this flag totrue
.- Since:
- 5.1
-
shouldVisitAmbiguousNodes
public boolean shouldVisitAmbiguousNodes
Normally neither ambiguous nodes nor their children are visited. By setting this flag totrue
ambiguous nodes are visited, their children are not.- Restriction:
- This field is not intended to be referenced by clients.
-
shouldVisitImplicitNames
public boolean shouldVisitImplicitNames
Implicit names are created to allow implicit bindings to be resolved, normally they are not visited, set this flag to true to visit them.- Since:
- 5.1
- See Also:
visit(IASTName)
,IASTImplicitName
-
shouldVisitImplicitNameAlternates
public boolean shouldVisitImplicitNameAlternates
Sometimes more than one implicit name is created for a binding, set this flag to true to visit more than one name for an implicit binding.- Since:
- 5.1
- See Also:
visit(IASTName)
,IASTImplicitName
-
shouldVisitImplicitDestructorNames
public boolean shouldVisitImplicitDestructorNames
Implicit destructor names are created to mark code locations where destructors of temporaries and variables going out of scope are called, normally they are not visited, set this flag to true to visit them.- Since:
- 5.10
- See Also:
visit(IASTName)
,IASTImplicitDestructorName
-
-
Constructor Detail
-
ASTVisitor
public ASTVisitor()
Creates a visitor that does not visit any kind of node per default.
-
ASTVisitor
public ASTVisitor(boolean visitNodes)
Creates a visitor.- Parameters:
visitNodes
- whether visitor is setup to visit all nodes per default, except ambiguous nodes (shouldVisitAmbiguousNodes
), inactive nodes (includeInactiveNodes
), implicit names (shouldVisitImplicitNames
), and tokens (shouldVisitTokens
).- Since:
- 5.1
-
-
Method Detail
-
visit
public int visit(IASTTranslationUnit tu)
-
visit
public int visit(IASTName name)
-
visit
public int visit(IASTDeclaration declaration)
-
visit
public int visit(IASTInitializer initializer)
-
visit
public int visit(IASTParameterDeclaration parameterDeclaration)
-
visit
public int visit(IASTDeclarator declarator)
-
visit
public int visit(IASTDeclSpecifier declSpec)
-
visit
public int visit(IASTArrayModifier arrayModifier)
- Since:
- 5.1
-
visit
public int visit(IASTPointerOperator ptrOperator)
- Since:
- 5.1
-
visit
public int visit(IASTAttribute attribute)
- Since:
- 5.4
-
visit
public int visit(IASTAttributeSpecifier specifier)
- Since:
- 5.7
-
visit
public int visit(IASTToken token)
- Since:
- 5.4
-
visit
public int visit(IASTExpression expression)
-
visit
public int visit(IASTStatement statement)
-
visit
public int visit(IASTTypeId typeId)
-
visit
public int visit(IASTEnumerationSpecifier.IASTEnumerator enumerator)
-
visit
public int visit(IASTProblem problem)
-
visit
public int visit(ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier baseSpecifier)
- Since:
- 5.3
-
visit
public int visit(ICPPASTNamespaceDefinition namespaceDefinition)
- Since:
- 5.3
-
visit
public int visit(ICPPASTTemplateParameter templateParameter)
- Since:
- 5.3
-
visit
public int visit(ICPPASTCapture capture)
- Since:
- 5.3
-
visit
public int visit(ICASTDesignator designator)
- Since:
- 5.3
-
visit
public int visit(ICPPASTDesignator designator)
- Since:
- 6.0
-
visit
public int visit(ICPPASTVirtSpecifier virtSpecifier)
- Since:
- 5.7
-
visit
public int visit(ICPPASTClassVirtSpecifier classVirtSpecifier)
- Since:
- 5.7
-
visit
public int visit(ICPPASTDecltypeSpecifier decltypeSpecifier)
- Since:
- 5.8
-
leave
public int leave(IASTTranslationUnit tu)
-
leave
public int leave(IASTName name)
-
leave
public int leave(IASTDeclaration declaration)
-
leave
public int leave(IASTInitializer initializer)
-
leave
public int leave(IASTParameterDeclaration parameterDeclaration)
-
leave
public int leave(IASTDeclarator declarator)
-
leave
public int leave(IASTDeclSpecifier declSpec)
-
leave
public int leave(IASTArrayModifier arrayModifier)
- Since:
- 5.1
-
leave
public int leave(IASTPointerOperator ptrOperator)
- Since:
- 5.1
-
leave
public int leave(IASTAttribute attribute)
- Since:
- 5.4
-
leave
public int leave(IASTAttributeSpecifier specifier)
- Since:
- 5.7
-
leave
public int leave(IASTToken token)
- Since:
- 5.4
-
leave
public int leave(IASTExpression expression)
-
leave
public int leave(IASTStatement statement)
-
leave
public int leave(IASTTypeId typeId)
-
leave
public int leave(IASTEnumerationSpecifier.IASTEnumerator enumerator)
-
leave
public int leave(IASTProblem problem)
-
leave
public int leave(ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier baseSpecifier)
- Since:
- 5.3
-
leave
public int leave(ICPPASTNamespaceDefinition namespaceDefinition)
- Since:
- 5.3
-
leave
public int leave(ICPPASTTemplateParameter templateParameter)
- Since:
- 5.3
-
leave
public int leave(ICPPASTCapture capture)
- Since:
- 5.3
-
leave
public int leave(ICASTDesignator designator)
- Since:
- 5.3
-
leave
public int leave(ICPPASTDesignator designator)
- Since:
- 6.0
-
leave
public int leave(ICPPASTVirtSpecifier virtSpecifier)
- Since:
- 5.7
-
leave
public int leave(ICPPASTClassVirtSpecifier virtSpecifier)
- Since:
- 5.7
-
leave
public int leave(ICPPASTDecltypeSpecifier decltypeSpecifier)
- Since:
- 5.8
-
visit
public int visit(org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode astAmbiguousNode)
For internal use, only. WhenshouldVisitAmbiguousNodes
is set to true, the visitor will be called for ambiguous nodes. However, the children of an ambiguous will not be traversed.- Restriction:
- This method is not intended to be referenced by clients.
- Restriction:
- This method is not intended to be re-implemented or extended by clients.
-
-