Class ASTNode
- java.lang.Object
-
- org.eclipse.jdt.core.dom.ASTNode
-
- Direct Known Subclasses:
AnonymousClassDeclaration,BodyDeclaration,CatchClause,Comment,CompilationUnit,Dimension,Expression,ImportDeclaration,MemberRef,MemberValuePair,MethodRef,MethodRefParameter,Modifier,ModuleDeclaration,ModuleDirective,ModuleModifier,PackageDeclaration,Statement,TagElement,TextElement,Type,TypeParameter,VariableDeclaration
public abstract class ASTNode extends Object
Abstract superclass of all Abstract Syntax Tree (AST) node types.An AST node represents a Java source code construct, such as a name, type, expression, statement, or declaration.
Each AST node belongs to a unique AST instance, called the owning AST. The children of an AST node always have the same owner as their parent node. If a node from one AST is to be added to a different AST, the subtree must be cloned first to ensure that the added nodes have the correct owning AST.
When an AST node is part of an AST, it has a unique parent node. Clients can navigate upwards, from child to parent, as well as downwards, from parent to child. Newly created nodes are unparented. When an unparented node is set as a child of a node (using a
setCHILDmethod), its parent link is set automatically and the parent link of the former child is set tonull. For nodes with properties that include a list of children (for example,Blockwhosestatementsproperty is a list of statements), adding or removing an element to/for the list property automatically updates the parent links. These lists support theList.setmethod; however, the constraint that the same node cannot appear more than once means that this method cannot be used to swap elements without first removing the node.ASTs must not contain cycles. All operations that could create a cycle detect this possibility and fail.
ASTs do not contain "holes" (missing subtrees). If a node is required to have a certain property, a syntactically plausible initial value is always supplied.
The hierarchy of AST node types has some convenient groupings marked by abstract superclasses:
- expressions -
Expression - names -
Name(a sub-kind of expression) - statements -
Statement - types -
Type - type body declarations -
BodyDeclaration
Abstract syntax trees may be hand constructed by clients, using the
newTYPEfactory methods (seeAST) to create new nodes, and the varioussetCHILDmethods to connect them together.The class
ASTParserparses a string containing a Java source code and returns an abstract syntax tree for it. The resulting nodes carry source ranges relating the node back to the original source characters. The source range covers the construct as a whole.Each AST node carries bit flags, which may convey additional information about the node. For instance, the parser uses a flag to indicate a syntax error. Newly created nodes have no flags set.
Each AST node is capable of carrying an open-ended collection of client-defined properties. Newly created nodes have none.
getPropertyandsetPropertyare used to access these properties.AST nodes are thread-safe for readers provided there are no active writers. If one thread is modifying an AST, including creating new nodes or cloning existing ones, it is not safe for another thread to read, visit, write, create, or clone any of the nodes on the same AST. When synchronization is required, consider using the common AST object that owns the node; that is, use
synchronize (node.getAST()) {...}.ASTs also support the visitor pattern; see the class
ASTVisitorfor details. TheNodeFinderclass can be used to find a specific node inside a tree.Compilation units created by
ASTParserfrom a source document can be serialized after arbitrary modifications with minimal loss of original formatting. SeeCompilationUnit.recordModifications()for details. See alsoASTRewritefor an alternative way to describe and serialize changes to a read-only AST.- Since:
- 2.0
- See Also:
ASTParser,ASTVisitor,NodeFinder- Restriction:
- This class is not intended to be subclassed by clients.
-
-
Field Summary
Fields Modifier and Type Field Description static intANNOTATION_TYPE_DECLARATIONNode type constant indicating a node of typeAnnotationTypeDeclaration.static intANNOTATION_TYPE_MEMBER_DECLARATIONNode type constant indicating a node of typeAnnotationTypeMemberDeclaration.static intANONYMOUS_CLASS_DECLARATIONNode type constant indicating a node of typeAnonymousClassDeclaration.static intARRAY_ACCESSNode type constant indicating a node of typeArrayAccess.static intARRAY_CREATIONNode type constant indicating a node of typeArrayCreation.static intARRAY_INITIALIZERNode type constant indicating a node of typeArrayInitializer.static intARRAY_TYPENode type constant indicating a node of typeArrayType.static intASSERT_STATEMENTNode type constant indicating a node of typeAssertStatement.static intASSIGNMENTNode type constant indicating a node of typeAssignment.static intBLOCKNode type constant indicating a node of typeBlock.static intBLOCK_COMMENTNode type constant indicating a node of typeBlockComment.static intBOOLEAN_LITERALNode type constant indicating a node of typeBooleanLiteral.static intBREAK_STATEMENTNode type constant indicating a node of typeBreakStatement.static intCAST_EXPRESSIONNode type constant indicating a node of typeCastExpression.static intCATCH_CLAUSENode type constant indicating a node of typeCatchClause.static intCHARACTER_LITERALNode type constant indicating a node of typeCharacterLiteral.static intCLASS_INSTANCE_CREATIONNode type constant indicating a node of typeClassInstanceCreation.static intCOMPILATION_UNITNode type constant indicating a node of typeCompilationUnit.static intCONDITIONAL_EXPRESSIONNode type constant indicating a node of typeConditionalExpression.static intCONSTRUCTOR_INVOCATIONNode type constant indicating a node of typeConstructorInvocation.static intCONTINUE_STATEMENTNode type constant indicating a node of typeContinueStatement.static intCREATION_REFERENCENode type constant indicating a node of typeCreationReference.static intDIMENSIONNode type constant indicating a node of typeDimension.static intDO_STATEMENTNode type constant indicating a node of typeDoStatement.static intEMPTY_STATEMENTNode type constant indicating a node of typeEmptyStatement.static intENHANCED_FOR_STATEMENTNode type constant indicating a node of typeEnhancedForStatement.static intENUM_CONSTANT_DECLARATIONNode type constant indicating a node of typeEnumConstantDeclaration.static intENUM_DECLARATIONNode type constant indicating a node of typeEnumDeclaration.static intEXPORTS_DIRECTIVENode type constant indicating a node of typeExportsDirective.static intEXPRESSION_METHOD_REFERENCENode type constant indicating a node of typeExpressionMethodReference.static intEXPRESSION_STATEMENTNode type constant indicating a node of typeExpressionStatement.static intFIELD_ACCESSNode type constant indicating a node of typeFieldAccess.static intFIELD_DECLARATIONNode type constant indicating a node of typeFieldDeclaration.static intFOR_STATEMENTNode type constant indicating a node of typeForStatement.static intIF_STATEMENTNode type constant indicating a node of typeIfStatement.static intIMPORT_DECLARATIONNode type constant indicating a node of typeImportDeclaration.static intINFIX_EXPRESSIONNode type constant indicating a node of typeInfixExpression.static intINITIALIZERNode type constant indicating a node of typeInitializer.static intINSTANCEOF_EXPRESSIONNode type constant indicating a node of typeInstanceofExpression.static intINTERSECTION_TYPENode type constant indicating a node of typeIntersectionType.static intJAVADOCNode type constant indicating a node of typeJavadoc.static intLABELED_STATEMENTNode type constant indicating a node of typeLabeledStatement.static intLAMBDA_EXPRESSIONNode type constant indicating a node of typeLambdaExpression.static intLINE_COMMENTNode type constant indicating a node of typeLineComment.static intMALFORMEDFlag constant (bit mask, value 1) indicating that there is something not quite right with this AST node.static intMARKER_ANNOTATIONNode type constant indicating a node of typeMarkerAnnotation.static intMEMBER_REFNode type constant indicating a node of typeMemberRef.static intMEMBER_VALUE_PAIRNode type constant indicating a node of typeMemberValuePair.static intMETHOD_DECLARATIONNode type constant indicating a node of typeMethodDeclaration.static intMETHOD_INVOCATIONNode type constant indicating a node of typeMethodInvocation.static intMETHOD_REFNode type constant indicating a node of typeMethodRef.static intMETHOD_REF_PARAMETERNode type constant indicating a node of typeMethodRefParameter.static intMODIFIERNode type constant indicating a node of typeModifier.static intMODULE_DECLARATIONNode type constant indicating a node of typeModuleDeclaration.static intMODULE_MODIFIERNode type constant indicating a node of typeModuleModifier.static intNAME_QUALIFIED_TYPENode type constant indicating a node of typeNameQualifiedType.static intNORMAL_ANNOTATIONNode type constant indicating a node of typeNormalAnnotation.static intNULL_LITERALNode type constant indicating a node of typeNullLiteral.static intNUMBER_LITERALNode type constant indicating a node of typeNumberLiteral.static intOPENS_DIRECTIVENode type constant indicating a node of typeOpensDirective.static intORIGINALFlag constant (bit mask, value 2) indicating that this is a node that was created by the parser (as opposed to one created by another party).static intPACKAGE_DECLARATIONNode type constant indicating a node of typePackageDeclaration.static intPARAMETERIZED_TYPENode type constant indicating a node of typeParameterizedType.static intPARENTHESIZED_EXPRESSIONNode type constant indicating a node of typeParenthesizedExpression.static intPOSTFIX_EXPRESSIONNode type constant indicating a node of typePostfixExpression.static intPREFIX_EXPRESSIONNode type constant indicating a node of typePrefixExpression.static intPRIMITIVE_TYPENode type constant indicating a node of typePrimitiveType.static intPROTECTFlag constant (bit mask, value 4) indicating that this node is unmodifiable.static intPROVIDES_DIRECTIVENode type constant indicating a node of typeProvidesDirective.static intQUALIFIED_NAMENode type constant indicating a node of typeQualifiedName.static intQUALIFIED_TYPENode type constant indicating a node of typeQualifiedType.static intRECORD_DECLARATIONNode type constant indicating a node of typeRecordDeclaration.static intRECOVEREDFlag constant (bit mask, value 8) indicating that this node or a part of this node is recovered from source that contains a syntax error detected in the vicinity.static intREQUIRES_DIRECTIVENode type constant indicating a node of typeRequiresDirective.static intRETURN_STATEMENTNode type constant indicating a node of typeReturnStatement.static intSIMPLE_NAMENode type constant indicating a node of typeSimpleName.static intSIMPLE_TYPENode type constant indicating a node of typeSimpleType.static intSINGLE_MEMBER_ANNOTATIONNode type constant indicating a node of typeSingleMemberAnnotation.static intSINGLE_VARIABLE_DECLARATIONNode type constant indicating a node of typeSingleVariableDeclaration.static intSTRING_LITERALNode type constant indicating a node of typeStringLiteral.static intSUPER_CONSTRUCTOR_INVOCATIONNode type constant indicating a node of typeSuperConstructorInvocation.static intSUPER_FIELD_ACCESSNode type constant indicating a node of typeSuperFieldAccess.static intSUPER_METHOD_INVOCATIONNode type constant indicating a node of typeSuperMethodInvocation.static intSUPER_METHOD_REFERENCENode type constant indicating a node of typeSuperMethhodReference.static intSWITCH_CASENode type constant indicating a node of typeSwitchCase.static intSWITCH_EXPRESSIONNode type constant indicating a node of typeSwitchExpression.static intSWITCH_STATEMENTNode type constant indicating a node of typeSwitchStatement.static intSYNCHRONIZED_STATEMENTNode type constant indicating a node of typeSynchronizedStatement.static intTAG_ELEMENTNode type constant indicating a node of typeTagElement.static intTEXT_BLOCKNode type constant indicating a node of typeTextBlock.static intTEXT_ELEMENTNode type constant indicating a node of typeTextElement.static intTHIS_EXPRESSIONNode type constant indicating a node of typeThisExpression.static intTHROW_STATEMENTNode type constant indicating a node of typeThrowStatement.static intTRY_STATEMENTNode type constant indicating a node of typeTryStatement.static intTYPE_DECLARATIONNode type constant indicating a node of typeTypeDeclaration.static intTYPE_DECLARATION_STATEMENTNode type constant indicating a node of typeTypeDeclarationStatement.static intTYPE_LITERALNode type constant indicating a node of typeTypeLiteral.static intTYPE_METHOD_REFERENCENode type constant indicating a node of typeTypeMethodReference.static intTYPE_PARAMETERNode type constant indicating a node of typeTypeParameter.static intUNION_TYPENode type constant indicating a node of typeUnionType.static intUSES_DIRECTIVENode type constant indicating a node of typeUsesDirective.static intVARIABLE_DECLARATION_EXPRESSIONNode type constant indicating a node of typeVariableDeclarationExpression.static intVARIABLE_DECLARATION_FRAGMENTNode type constant indicating a node of typeVariableDeclarationFragment.static intVARIABLE_DECLARATION_STATEMENTNode type constant indicating a node of typeVariableDeclarationStatement.static intWHILE_STATEMENTNode type constant indicating a node of typeWhileStatement.static intWILDCARD_TYPENode type constant indicating a node of typeWildcardType.static intYIELD_STATEMENTNode type constant indicating a node of typeYieldStatement.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(ASTVisitor visitor)Accepts the given visitor on a visit of the current node.static ASTNodecopySubtree(AST target, ASTNode node)Returns a deep copy of the subtree of AST nodes rooted at the given node.static ListcopySubtrees(AST target, List nodes)Returns a deep copy of the subtrees of AST nodes rooted at the given list of nodes.voiddelete()Removes this node from its parent.booleanequals(Object obj)TheASTNodeimplementation of thisObjectmethod uses object identity (==).ASTgetAST()Returns this node's AST.intgetFlags()Returns the flags associated with this node.intgetLength()Returns the length in characters of the original source file indicating where the source fragment corresponding to this node ends.StructuralPropertyDescriptorgetLocationInParent()Returns the location of this node within its parent, ornullif this is a root node.intgetNodeType()Returns an integer value identifying the type of this concrete AST node.ASTNodegetParent()Returns this node's parent node, ornullif this is the root node.ObjectgetProperty(String propertyName)Returns the value of the named property of this node, ornullif none.ASTNodegetRoot()Returns the root node at or above this node; returns this node if it is a root.intgetStartPosition()Returns the character index into the original source file indicating where the source fragment corresponding to this node begins.ObjectgetStructuralProperty(StructuralPropertyDescriptor property)Returns the value of the given structural property for this node.inthashCode()static ClassnodeClassForType(int nodeType)Returns the node class for the corresponding node type.Mapproperties()Returns an unmodifiable table of the properties of this node with non-nullvalues.voidsetFlags(int flags)Sets the flags associated with this node to the given value.voidsetProperty(String propertyName, Object data)Sets the named property of this node to the given value, or tonullto clear it.voidsetSourceRange(int startPosition, int length)Sets the source range of the original source file where the source fragment corresponding to this node was found.voidsetStructuralProperty(StructuralPropertyDescriptor property, Object value)Sets the value of the given structural property for this node.ListstructuralPropertiesForType()Returns a list of structural property descriptors for nodes of the same type as this node.intsubtreeBytes()Returns an estimate of the memory footprint in bytes of the entire subtree rooted at this node.booleansubtreeMatch(ASTMatcher matcher, Object other)Returns whether the subtree rooted at the given node matches the given other object as decided by the given matcher.StringtoString()Returns a string representation of this node suitable for debugging purposes only.
-
-
-
Field Detail
-
ANONYMOUS_CLASS_DECLARATION
public static final int ANONYMOUS_CLASS_DECLARATION
Node type constant indicating a node of typeAnonymousClassDeclaration.- See Also:
AnonymousClassDeclaration, Constant Field Values
-
ARRAY_ACCESS
public static final int ARRAY_ACCESS
Node type constant indicating a node of typeArrayAccess.- See Also:
ArrayAccess, Constant Field Values
-
ARRAY_CREATION
public static final int ARRAY_CREATION
Node type constant indicating a node of typeArrayCreation.- See Also:
ArrayCreation, Constant Field Values
-
ARRAY_INITIALIZER
public static final int ARRAY_INITIALIZER
Node type constant indicating a node of typeArrayInitializer.- See Also:
ArrayInitializer, Constant Field Values
-
ARRAY_TYPE
public static final int ARRAY_TYPE
Node type constant indicating a node of typeArrayType.- See Also:
ArrayType, Constant Field Values
-
ASSERT_STATEMENT
public static final int ASSERT_STATEMENT
Node type constant indicating a node of typeAssertStatement.- See Also:
AssertStatement, Constant Field Values
-
ASSIGNMENT
public static final int ASSIGNMENT
Node type constant indicating a node of typeAssignment.- See Also:
Assignment, Constant Field Values
-
BLOCK
public static final int BLOCK
Node type constant indicating a node of typeBlock.- See Also:
Block, Constant Field Values
-
BOOLEAN_LITERAL
public static final int BOOLEAN_LITERAL
Node type constant indicating a node of typeBooleanLiteral.- See Also:
BooleanLiteral, Constant Field Values
-
BREAK_STATEMENT
public static final int BREAK_STATEMENT
Node type constant indicating a node of typeBreakStatement.- See Also:
BreakStatement, Constant Field Values
-
CAST_EXPRESSION
public static final int CAST_EXPRESSION
Node type constant indicating a node of typeCastExpression.- See Also:
CastExpression, Constant Field Values
-
CATCH_CLAUSE
public static final int CATCH_CLAUSE
Node type constant indicating a node of typeCatchClause.- See Also:
CatchClause, Constant Field Values
-
CHARACTER_LITERAL
public static final int CHARACTER_LITERAL
Node type constant indicating a node of typeCharacterLiteral.- See Also:
CharacterLiteral, Constant Field Values
-
CLASS_INSTANCE_CREATION
public static final int CLASS_INSTANCE_CREATION
Node type constant indicating a node of typeClassInstanceCreation.- See Also:
ClassInstanceCreation, Constant Field Values
-
COMPILATION_UNIT
public static final int COMPILATION_UNIT
Node type constant indicating a node of typeCompilationUnit.- See Also:
CompilationUnit, Constant Field Values
-
CONDITIONAL_EXPRESSION
public static final int CONDITIONAL_EXPRESSION
Node type constant indicating a node of typeConditionalExpression.- See Also:
ConditionalExpression, Constant Field Values
-
CONSTRUCTOR_INVOCATION
public static final int CONSTRUCTOR_INVOCATION
Node type constant indicating a node of typeConstructorInvocation.- See Also:
ConstructorInvocation, Constant Field Values
-
CONTINUE_STATEMENT
public static final int CONTINUE_STATEMENT
Node type constant indicating a node of typeContinueStatement.- See Also:
ContinueStatement, Constant Field Values
-
DO_STATEMENT
public static final int DO_STATEMENT
Node type constant indicating a node of typeDoStatement.- See Also:
DoStatement, Constant Field Values
-
EMPTY_STATEMENT
public static final int EMPTY_STATEMENT
Node type constant indicating a node of typeEmptyStatement.- See Also:
EmptyStatement, Constant Field Values
-
EXPRESSION_STATEMENT
public static final int EXPRESSION_STATEMENT
Node type constant indicating a node of typeExpressionStatement.- See Also:
ExpressionStatement, Constant Field Values
-
FIELD_ACCESS
public static final int FIELD_ACCESS
Node type constant indicating a node of typeFieldAccess.- See Also:
FieldAccess, Constant Field Values
-
FIELD_DECLARATION
public static final int FIELD_DECLARATION
Node type constant indicating a node of typeFieldDeclaration.- See Also:
FieldDeclaration, Constant Field Values
-
FOR_STATEMENT
public static final int FOR_STATEMENT
Node type constant indicating a node of typeForStatement.- See Also:
ForStatement, Constant Field Values
-
IF_STATEMENT
public static final int IF_STATEMENT
Node type constant indicating a node of typeIfStatement.- See Also:
IfStatement, Constant Field Values
-
IMPORT_DECLARATION
public static final int IMPORT_DECLARATION
Node type constant indicating a node of typeImportDeclaration.- See Also:
ImportDeclaration, Constant Field Values
-
INFIX_EXPRESSION
public static final int INFIX_EXPRESSION
Node type constant indicating a node of typeInfixExpression.- See Also:
InfixExpression, Constant Field Values
-
INITIALIZER
public static final int INITIALIZER
Node type constant indicating a node of typeInitializer.- See Also:
Initializer, Constant Field Values
-
JAVADOC
public static final int JAVADOC
Node type constant indicating a node of typeJavadoc.- See Also:
Javadoc, Constant Field Values
-
LABELED_STATEMENT
public static final int LABELED_STATEMENT
Node type constant indicating a node of typeLabeledStatement.- See Also:
LabeledStatement, Constant Field Values
-
METHOD_DECLARATION
public static final int METHOD_DECLARATION
Node type constant indicating a node of typeMethodDeclaration.- See Also:
MethodDeclaration, Constant Field Values
-
METHOD_INVOCATION
public static final int METHOD_INVOCATION
Node type constant indicating a node of typeMethodInvocation.- See Also:
MethodInvocation, Constant Field Values
-
NULL_LITERAL
public static final int NULL_LITERAL
Node type constant indicating a node of typeNullLiteral.- See Also:
NullLiteral, Constant Field Values
-
NUMBER_LITERAL
public static final int NUMBER_LITERAL
Node type constant indicating a node of typeNumberLiteral.- See Also:
NumberLiteral, Constant Field Values
-
PACKAGE_DECLARATION
public static final int PACKAGE_DECLARATION
Node type constant indicating a node of typePackageDeclaration.- See Also:
PackageDeclaration, Constant Field Values
-
PARENTHESIZED_EXPRESSION
public static final int PARENTHESIZED_EXPRESSION
Node type constant indicating a node of typeParenthesizedExpression.- See Also:
ParenthesizedExpression, Constant Field Values
-
POSTFIX_EXPRESSION
public static final int POSTFIX_EXPRESSION
Node type constant indicating a node of typePostfixExpression.- See Also:
PostfixExpression, Constant Field Values
-
PREFIX_EXPRESSION
public static final int PREFIX_EXPRESSION
Node type constant indicating a node of typePrefixExpression.- See Also:
PrefixExpression, Constant Field Values
-
PRIMITIVE_TYPE
public static final int PRIMITIVE_TYPE
Node type constant indicating a node of typePrimitiveType.- See Also:
PrimitiveType, Constant Field Values
-
QUALIFIED_NAME
public static final int QUALIFIED_NAME
Node type constant indicating a node of typeQualifiedName.- See Also:
QualifiedName, Constant Field Values
-
RETURN_STATEMENT
public static final int RETURN_STATEMENT
Node type constant indicating a node of typeReturnStatement.- See Also:
ReturnStatement, Constant Field Values
-
SIMPLE_NAME
public static final int SIMPLE_NAME
Node type constant indicating a node of typeSimpleName.- See Also:
SimpleName, Constant Field Values
-
SIMPLE_TYPE
public static final int SIMPLE_TYPE
Node type constant indicating a node of typeSimpleType.- See Also:
SimpleType, Constant Field Values
-
SINGLE_VARIABLE_DECLARATION
public static final int SINGLE_VARIABLE_DECLARATION
Node type constant indicating a node of typeSingleVariableDeclaration.- See Also:
SingleVariableDeclaration, Constant Field Values
-
STRING_LITERAL
public static final int STRING_LITERAL
Node type constant indicating a node of typeStringLiteral.- See Also:
StringLiteral, Constant Field Values
-
SUPER_CONSTRUCTOR_INVOCATION
public static final int SUPER_CONSTRUCTOR_INVOCATION
Node type constant indicating a node of typeSuperConstructorInvocation.- See Also:
SuperConstructorInvocation, Constant Field Values
-
SUPER_FIELD_ACCESS
public static final int SUPER_FIELD_ACCESS
Node type constant indicating a node of typeSuperFieldAccess.- See Also:
SuperFieldAccess, Constant Field Values
-
SUPER_METHOD_INVOCATION
public static final int SUPER_METHOD_INVOCATION
Node type constant indicating a node of typeSuperMethodInvocation.- See Also:
SuperMethodInvocation, Constant Field Values
-
SWITCH_CASE
public static final int SWITCH_CASE
Node type constant indicating a node of typeSwitchCase.- See Also:
SwitchCase, Constant Field Values
-
SWITCH_STATEMENT
public static final int SWITCH_STATEMENT
Node type constant indicating a node of typeSwitchStatement.- See Also:
SwitchStatement, Constant Field Values
-
SYNCHRONIZED_STATEMENT
public static final int SYNCHRONIZED_STATEMENT
Node type constant indicating a node of typeSynchronizedStatement.- See Also:
SynchronizedStatement, Constant Field Values
-
THIS_EXPRESSION
public static final int THIS_EXPRESSION
Node type constant indicating a node of typeThisExpression.- See Also:
ThisExpression, Constant Field Values
-
THROW_STATEMENT
public static final int THROW_STATEMENT
Node type constant indicating a node of typeThrowStatement.- See Also:
ThrowStatement, Constant Field Values
-
TRY_STATEMENT
public static final int TRY_STATEMENT
Node type constant indicating a node of typeTryStatement.- See Also:
TryStatement, Constant Field Values
-
TYPE_DECLARATION
public static final int TYPE_DECLARATION
Node type constant indicating a node of typeTypeDeclaration.- See Also:
TypeDeclaration, Constant Field Values
-
TYPE_DECLARATION_STATEMENT
public static final int TYPE_DECLARATION_STATEMENT
Node type constant indicating a node of typeTypeDeclarationStatement.- See Also:
TypeDeclarationStatement, Constant Field Values
-
TYPE_LITERAL
public static final int TYPE_LITERAL
Node type constant indicating a node of typeTypeLiteral.- See Also:
TypeLiteral, Constant Field Values
-
VARIABLE_DECLARATION_EXPRESSION
public static final int VARIABLE_DECLARATION_EXPRESSION
Node type constant indicating a node of typeVariableDeclarationExpression.
-
VARIABLE_DECLARATION_FRAGMENT
public static final int VARIABLE_DECLARATION_FRAGMENT
Node type constant indicating a node of typeVariableDeclarationFragment.- See Also:
VariableDeclarationFragment, Constant Field Values
-
VARIABLE_DECLARATION_STATEMENT
public static final int VARIABLE_DECLARATION_STATEMENT
Node type constant indicating a node of typeVariableDeclarationStatement.
-
WHILE_STATEMENT
public static final int WHILE_STATEMENT
Node type constant indicating a node of typeWhileStatement.- See Also:
WhileStatement, Constant Field Values
-
INSTANCEOF_EXPRESSION
public static final int INSTANCEOF_EXPRESSION
Node type constant indicating a node of typeInstanceofExpression.- See Also:
InstanceofExpression, Constant Field Values
-
LINE_COMMENT
public static final int LINE_COMMENT
Node type constant indicating a node of typeLineComment.- Since:
- 3.0
- See Also:
LineComment, Constant Field Values
-
BLOCK_COMMENT
public static final int BLOCK_COMMENT
Node type constant indicating a node of typeBlockComment.- Since:
- 3.0
- See Also:
BlockComment, Constant Field Values
-
TAG_ELEMENT
public static final int TAG_ELEMENT
Node type constant indicating a node of typeTagElement.- Since:
- 3.0
- See Also:
TagElement, Constant Field Values
-
TEXT_ELEMENT
public static final int TEXT_ELEMENT
Node type constant indicating a node of typeTextElement.- Since:
- 3.0
- See Also:
TextElement, Constant Field Values
-
MEMBER_REF
public static final int MEMBER_REF
Node type constant indicating a node of typeMemberRef.- Since:
- 3.0
- See Also:
MemberRef, Constant Field Values
-
METHOD_REF
public static final int METHOD_REF
Node type constant indicating a node of typeMethodRef.- Since:
- 3.0
- See Also:
MethodRef, Constant Field Values
-
METHOD_REF_PARAMETER
public static final int METHOD_REF_PARAMETER
Node type constant indicating a node of typeMethodRefParameter.- Since:
- 3.0
- See Also:
MethodRefParameter, Constant Field Values
-
ENHANCED_FOR_STATEMENT
public static final int ENHANCED_FOR_STATEMENT
Node type constant indicating a node of typeEnhancedForStatement.- Since:
- 3.1
- See Also:
EnhancedForStatement, Constant Field Values
-
ENUM_DECLARATION
public static final int ENUM_DECLARATION
Node type constant indicating a node of typeEnumDeclaration.- Since:
- 3.1
- See Also:
EnumDeclaration, Constant Field Values
-
ENUM_CONSTANT_DECLARATION
public static final int ENUM_CONSTANT_DECLARATION
Node type constant indicating a node of typeEnumConstantDeclaration.- Since:
- 3.1
- See Also:
EnumConstantDeclaration, Constant Field Values
-
TYPE_PARAMETER
public static final int TYPE_PARAMETER
Node type constant indicating a node of typeTypeParameter.- Since:
- 3.1
- See Also:
TypeParameter, Constant Field Values
-
PARAMETERIZED_TYPE
public static final int PARAMETERIZED_TYPE
Node type constant indicating a node of typeParameterizedType.- Since:
- 3.1
- See Also:
ParameterizedType, Constant Field Values
-
QUALIFIED_TYPE
public static final int QUALIFIED_TYPE
Node type constant indicating a node of typeQualifiedType.- Since:
- 3.1
- See Also:
QualifiedType, Constant Field Values
-
WILDCARD_TYPE
public static final int WILDCARD_TYPE
Node type constant indicating a node of typeWildcardType.- Since:
- 3.1
- See Also:
WildcardType, Constant Field Values
-
NORMAL_ANNOTATION
public static final int NORMAL_ANNOTATION
Node type constant indicating a node of typeNormalAnnotation.- Since:
- 3.1
- See Also:
NormalAnnotation, Constant Field Values
-
MARKER_ANNOTATION
public static final int MARKER_ANNOTATION
Node type constant indicating a node of typeMarkerAnnotation.- Since:
- 3.1
- See Also:
MarkerAnnotation, Constant Field Values
-
SINGLE_MEMBER_ANNOTATION
public static final int SINGLE_MEMBER_ANNOTATION
Node type constant indicating a node of typeSingleMemberAnnotation.- Since:
- 3.1
- See Also:
SingleMemberAnnotation, Constant Field Values
-
MEMBER_VALUE_PAIR
public static final int MEMBER_VALUE_PAIR
Node type constant indicating a node of typeMemberValuePair.- Since:
- 3.1
- See Also:
MemberValuePair, Constant Field Values
-
ANNOTATION_TYPE_DECLARATION
public static final int ANNOTATION_TYPE_DECLARATION
Node type constant indicating a node of typeAnnotationTypeDeclaration.- Since:
- 3.1
- See Also:
AnnotationTypeDeclaration, Constant Field Values
-
ANNOTATION_TYPE_MEMBER_DECLARATION
public static final int ANNOTATION_TYPE_MEMBER_DECLARATION
Node type constant indicating a node of typeAnnotationTypeMemberDeclaration.- Since:
- 3.1
- See Also:
AnnotationTypeMemberDeclaration, Constant Field Values
-
MODIFIER
public static final int MODIFIER
Node type constant indicating a node of typeModifier.- Since:
- 3.1
- See Also:
Modifier, Constant Field Values
-
UNION_TYPE
public static final int UNION_TYPE
Node type constant indicating a node of typeUnionType.- Since:
- 3.7.1
- See Also:
UnionType, Constant Field Values
-
DIMENSION
public static final int DIMENSION
Node type constant indicating a node of typeDimension.- Since:
- 3.10
- See Also:
Dimension, Constant Field Values
-
LAMBDA_EXPRESSION
public static final int LAMBDA_EXPRESSION
Node type constant indicating a node of typeLambdaExpression.- Since:
- 3.10
- See Also:
LambdaExpression, Constant Field Values
-
INTERSECTION_TYPE
public static final int INTERSECTION_TYPE
Node type constant indicating a node of typeIntersectionType.- Since:
- 3.10
- See Also:
IntersectionType, Constant Field Values
-
NAME_QUALIFIED_TYPE
public static final int NAME_QUALIFIED_TYPE
Node type constant indicating a node of typeNameQualifiedType.- Since:
- 3.10
- See Also:
NameQualifiedType, Constant Field Values
-
CREATION_REFERENCE
public static final int CREATION_REFERENCE
Node type constant indicating a node of typeCreationReference.- Since:
- 3.10
- See Also:
CreationReference, Constant Field Values
-
EXPRESSION_METHOD_REFERENCE
public static final int EXPRESSION_METHOD_REFERENCE
Node type constant indicating a node of typeExpressionMethodReference.- Since:
- 3.10
- See Also:
ExpressionMethodReference, Constant Field Values
-
SUPER_METHOD_REFERENCE
public static final int SUPER_METHOD_REFERENCE
Node type constant indicating a node of typeSuperMethhodReference.- Since:
- 3.10
- See Also:
SuperMethodReference, Constant Field Values
-
TYPE_METHOD_REFERENCE
public static final int TYPE_METHOD_REFERENCE
Node type constant indicating a node of typeTypeMethodReference.- Since:
- 3.10
- See Also:
TypeMethodReference, Constant Field Values
-
MODULE_DECLARATION
public static final int MODULE_DECLARATION
Node type constant indicating a node of typeModuleDeclaration.- Since:
- 3.14
- See Also:
ModuleDeclaration, Constant Field Values
-
REQUIRES_DIRECTIVE
public static final int REQUIRES_DIRECTIVE
Node type constant indicating a node of typeRequiresDirective.- Since:
- 3.14
- See Also:
RequiresDirective, Constant Field Values
-
EXPORTS_DIRECTIVE
public static final int EXPORTS_DIRECTIVE
Node type constant indicating a node of typeExportsDirective.- Since:
- 3.14
- See Also:
ExportsDirective, Constant Field Values
-
OPENS_DIRECTIVE
public static final int OPENS_DIRECTIVE
Node type constant indicating a node of typeOpensDirective.- Since:
- 3.14
- See Also:
OpensDirective, Constant Field Values
-
USES_DIRECTIVE
public static final int USES_DIRECTIVE
Node type constant indicating a node of typeUsesDirective.- Since:
- 3.14
- See Also:
UsesDirective, Constant Field Values
-
PROVIDES_DIRECTIVE
public static final int PROVIDES_DIRECTIVE
Node type constant indicating a node of typeProvidesDirective.- Since:
- 3.14
- See Also:
ProvidesDirective, Constant Field Values
-
MODULE_MODIFIER
public static final int MODULE_MODIFIER
Node type constant indicating a node of typeModuleModifier.- Since:
- 3.14
- See Also:
ModuleModifier, Constant Field Values
-
SWITCH_EXPRESSION
public static final int SWITCH_EXPRESSION
Node type constant indicating a node of typeSwitchExpression.- Since:
- 3.18
- See Also:
SwitchExpression, Constant Field Values
-
YIELD_STATEMENT
public static final int YIELD_STATEMENT
Node type constant indicating a node of typeYieldStatement.- Since:
- 3.20
- See Also:
YieldStatement, Constant Field Values
-
TEXT_BLOCK
public static final int TEXT_BLOCK
Node type constant indicating a node of typeTextBlock.- Since:
- 3.20
- See Also:
TextBlock, Constant Field Values
-
RECORD_DECLARATION
public static final int RECORD_DECLARATION
Node type constant indicating a node of typeRecordDeclaration.- Since:
- 3.22
- See Also:
RecordDeclaration, Constant Field Values
-
MALFORMED
public static final int MALFORMED
Flag constant (bit mask, value 1) indicating that there is something not quite right with this AST node.The standard parser (
ASTParser) sets this flag on a node to indicate a syntax error detected in the vicinity.- See Also:
- Constant Field Values
-
ORIGINAL
public static final int ORIGINAL
Flag constant (bit mask, value 2) indicating that this is a node that was created by the parser (as opposed to one created by another party).The standard parser (
ASTParser) sets this flag on the nodes it creates.- Since:
- 3.0
- See Also:
- Constant Field Values
-
PROTECT
public static final int PROTECT
Flag constant (bit mask, value 4) indicating that this node is unmodifiable. When a node is marked unmodifiable, the following operations result in a runtime exception:- Change a simple property of this node.
- Add or remove a child node from this node.
- Parent (or reparent) this node.
The standard parser (
ASTParser) does not set this flag on the nodes it creates. However, clients may set this flag on a node to prevent further modification of the its structural properties.- Since:
- 3.0
- See Also:
- Constant Field Values
-
RECOVERED
public static final int RECOVERED
Flag constant (bit mask, value 8) indicating that this node or a part of this node is recovered from source that contains a syntax error detected in the vicinity.The standard parser (
ASTParser) sets this flag on a node to indicate a recovered node.- Since:
- 3.2
- See Also:
- Constant Field Values
-
-
Method Detail
-
nodeClassForType
public static Class nodeClassForType(int nodeType)
Returns the node class for the corresponding node type.- Parameters:
nodeType- AST node type- Returns:
- the corresponding
ASTNodesubclass - Throws:
IllegalArgumentException- ifnodeTypeis not a legal AST node type- Since:
- 3.0
- See Also:
getNodeType()
-
getAST
public final AST getAST()
Returns this node's AST.Note that the relationship between an AST node and its owing AST does not change over the lifetime of a node.
- Returns:
- the AST that owns this node
-
getParent
public final ASTNode getParent()
Returns this node's parent node, ornullif this is the root node.Note that the relationship between an AST node and its parent node may change over the lifetime of a node.
- Returns:
- the parent of this node, or
nullif none
-
getLocationInParent
public final StructuralPropertyDescriptor getLocationInParent()
Returns the location of this node within its parent, ornullif this is a root node.ASTNode node = ...; ASTNode parent = node.getParent(); StructuralPropertyDescriptor location = node.getLocationInParent(); assert (parent != null) == (location != null); if ((location != null) && location.isChildProperty()) assert parent.getStructuralProperty(location) == node; if ((location != null) && location.isChildListProperty()) assert ((List) parent.getStructuralProperty(location)).contains(node);Note that the relationship between an AST node and its parent node may change over the lifetime of a node.
- Returns:
- the location of this node in its parent,
or
nullif this node has no parent - Since:
- 3.0
-
getRoot
public final ASTNode getRoot()
Returns the root node at or above this node; returns this node if it is a root.- Returns:
- the root node at or above this node
-
getStructuralProperty
public final Object getStructuralProperty(StructuralPropertyDescriptor property)
Returns the value of the given structural property for this node. The value returned depends on the kind of property:SimplePropertyDescriptor- the value of the given simple property, ornullif none; primitive values are "boxed"ChildPropertyDescriptor- the child node (typeASTNode), ornullif noneChildListPropertyDescriptor- the list (element type:ASTNode)
- Parameters:
property- the property- Returns:
- the value, or
nullif none - Throws:
RuntimeException- if this node does not have the given property- Since:
- 3.0
-
setStructuralProperty
public final void setStructuralProperty(StructuralPropertyDescriptor property, Object value)
Sets the value of the given structural property for this node. The value passed depends on the kind of property:SimplePropertyDescriptor- the new value of the given simple property, ornullif none; primitive values are "boxed"ChildPropertyDescriptor- the new child node (typeASTNode), ornullif noneChildListPropertyDescriptor- not allowed
- Parameters:
property- the propertyvalue- the property value- Throws:
RuntimeException- if this node does not have the given property, or if the given property cannot be set- Since:
- 3.0
-
structuralPropertiesForType
public final List structuralPropertiesForType()
Returns a list of structural property descriptors for nodes of the same type as this node. Clients must not modify the result.Note that property descriptors are a meta-level mechanism for manipulating ASTNodes in a generic way. They are unrelated to
get/setProperty.- Returns:
- a list of property descriptors (element type:
StructuralPropertyDescriptor) - Since:
- 3.0
-
delete
public final void delete()
Removes this node from its parent. Has no effect if this node is unparented. If this node appears as an element of a child list property of its parent, then this node is removed from the list usingList.remove. If this node appears as the value of a child property of its parent, then this node is detached from its parent by passingnullto the appropriate setter method; this operation fails if this node is in a mandatory property.- Since:
- 3.0
-
getProperty
public final Object getProperty(String propertyName)
Returns the value of the named property of this node, ornullif none.- Parameters:
propertyName- the property name- Returns:
- the property value, or
nullif none - See Also:
setProperty(String,Object)
-
setProperty
public final void setProperty(String propertyName, Object data)
Sets the named property of this node to the given value, or tonullto clear it.Clients should employ property names that are sufficiently unique to avoid inadvertent conflicts with other clients that might also be setting properties on the same node.
Note that modifying a property is not considered a modification to the AST itself. This is to allow clients to decorate existing nodes with their own properties without jeopardizing certain things (like the validity of bindings), which rely on the underlying tree remaining static.
- Parameters:
propertyName- the property namedata- the new property value, ornullif none- Throws:
IllegalArgumentException- if the given property name isnull- See Also:
getProperty(String)
-
properties
public final Map properties()
Returns an unmodifiable table of the properties of this node with non-nullvalues.- Returns:
- the table of property values keyed by property name
(key type:
String; value type:Object)
-
getFlags
public final int getFlags()
Returns the flags associated with this node.No flags are associated with newly created nodes.
The flags are the bitwise-or of individual flags. The following flags are currently defined:
Other bit positions are reserved for future use.- Returns:
- the bitwise-or of individual flags
- See Also:
setFlags(int)
-
setFlags
public final void setFlags(int flags)
Sets the flags associated with this node to the given value.The flags are the bitwise-or of individual flags. The following flags are currently defined:
MALFORMED- indicates node is syntactically malformedORIGINAL- indicates original node created by ASTParserPROTECT- indicates node is protected from further modificationRECOVERED- indicates node or a part of this node is recovered from source that contains a syntax error
Note that the flags are not considered a structural property of the node, and can be changed even if the node is marked as protected.
- Parameters:
flags- the bitwise-or of individual flags- See Also:
getFlags()
-
getNodeType
public final int getNodeType()
Returns an integer value identifying the type of this concrete AST node. The values are small positive integers, suitable for use in switch statements.For each concrete node type there is a unique node type constant (name and value). The unique node type constant for a concrete node type such as
CastExpressionisASTNode.CAST_EXPRESSION.- Returns:
- one of the node type constants
-
equals
public final boolean equals(Object obj)
TheASTNodeimplementation of thisObjectmethod uses object identity (==). UsesubtreeMatchto compare two subtrees for equality.- Overrides:
equalsin classObject- Parameters:
obj-- Returns:
- See Also:
subtreeMatch(ASTMatcher matcher, Object other)
-
subtreeMatch
public final boolean subtreeMatch(ASTMatcher matcher, Object other)
Returns whether the subtree rooted at the given node matches the given other object as decided by the given matcher.- Parameters:
matcher- the matcherother- the other object, ornull- Returns:
trueif the subtree matches, orfalseif they do not match
-
copySubtree
public static ASTNode copySubtree(AST target, ASTNode node)
Returns a deep copy of the subtree of AST nodes rooted at the given node. The resulting nodes are owned by the given AST, which may be different from the ASTs of the given node. Even if the given node has a parent, the result node will be unparented.Source range information on the original nodes is automatically copied to the new nodes. Client properties (
properties) are not carried over.The node's
ASTand the targetASTmust support the same API level.- Parameters:
target- the AST that is to own the nodes in the resultnode- the node to copy, ornullif none- Returns:
- the copied node, or
nullifnodeisnull
-
copySubtrees
public static List copySubtrees(AST target, List nodes)
Returns a deep copy of the subtrees of AST nodes rooted at the given list of nodes. The resulting nodes are owned by the given AST, which may be different from the ASTs of the nodes in the list. Even if the nodes in the list have parents, the nodes in the result will be unparented.Source range information on the original nodes is automatically copied to the new nodes. Client properties (
properties) are not carried over.
-
accept
public final void accept(ASTVisitor visitor)
Accepts the given visitor on a visit of the current node.- Parameters:
visitor- the visitor object- Throws:
IllegalArgumentException- if the visitor is null
-
getStartPosition
public final int getStartPosition()
Returns the character index into the original source file indicating where the source fragment corresponding to this node begins.The parser supplies useful well-defined source ranges to the nodes it creates. See
ASTParser.setKind(int)for details on precisely where source ranges begin and end.- Returns:
- the 0-based character index, or
-1if no source position information is recorded for this node - See Also:
getLength(),ASTParser
-
getLength
public final int getLength()
Returns the length in characters of the original source file indicating where the source fragment corresponding to this node ends.The parser supplies useful well-defined source ranges to the nodes it creates. See
ASTParser.setKind(int)methods for details on precisely where source ranges begin and end.- Returns:
- a (possibly 0) length, or
0if no source position information is recorded for this node - See Also:
getStartPosition(),ASTParser
-
setSourceRange
public final void setSourceRange(int startPosition, int length)Sets the source range of the original source file where the source fragment corresponding to this node was found.See
ASTParser.setKind(int)for details on precisely where source ranges are supposed to begin and end.- Parameters:
startPosition- a 0-based character index, or-1if no source position information is available for this nodelength- a (possibly 0) length, or0if no source position information is recorded for this node- See Also:
getStartPosition(),getLength(),ASTParser
-
toString
public final String toString()
Returns a string representation of this node suitable for debugging purposes only.
-
subtreeBytes
public final int subtreeBytes()
Returns an estimate of the memory footprint in bytes of the entire subtree rooted at this node.- Returns:
- the size of this subtree in bytes
-
-