|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.eclipse.jdt.core.dom.ASTNode
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
set
method), its parent link is set automatically
and the parent link of the former child is set to null
.
For nodes with properties that include a list of children (for example,
Block
whose statements
property is a list
of statements), adding or removing an element to/for the list property
automatically updates the parent links.
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:
Expression
Name
(a sub-kind of expression)Statement
Type
BodyDeclaration
Abstract syntax trees may be hand constructed by clients, using the
new
factory methods (see AST
) to
create new nodes, and the various set
methods
to connect them together.
The static method AST.parseCompilationUnit
parses a string
containing a Java compilation unit and returns the abstract syntax tree
for it. The resulting nodes carry a source range 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.
getProperty
and setProperty
are used to access
these properties.
AST nodes are not thread-safe; this is true even for trees that
are read-only. If 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 ASTVisitor
for details.
AST.parseCompilationUnit(org.eclipse.jdt.core.ICompilationUnit, boolean)
,
ASTVisitor
Field Summary | |
static int |
ANONYMOUS_CLASS_DECLARATION
Node type constant indicating a node of type AnonymousClassDeclaration . |
static int |
ARRAY_ACCESS
Node type constant indicating a node of type ArrayAccess . |
static int |
ARRAY_CREATION
Node type constant indicating a node of type ArrayCreation . |
static int |
ARRAY_INITIALIZER
Node type constant indicating a node of type ArrayInitializer . |
static int |
ARRAY_TYPE
Node type constant indicating a node of type ArrayType . |
static int |
ASSERT_STATEMENT
Node type constant indicating a node of type AssertStatement . |
static int |
ASSIGNMENT
Node type constant indicating a node of type Assignment . |
static int |
BLOCK
Node type constant indicating a node of type Block . |
static int |
BOOLEAN_LITERAL
Node type constant indicating a node of type BooleanLiteral . |
static int |
BREAK_STATEMENT
Node type constant indicating a node of type BreakStatement . |
static int |
CAST_EXPRESSION
Node type constant indicating a node of type CastExpression . |
static int |
CATCH_CLAUSE
Node type constant indicating a node of type CatchClause . |
static int |
CHARACTER_LITERAL
Node type constant indicating a node of type CharacterLiteral . |
static int |
CLASS_INSTANCE_CREATION
Node type constant indicating a node of type ClassInstanceCreation . |
static int |
COMPILATION_UNIT
Node type constant indicating a node of type CompilationUnit . |
static int |
CONDITIONAL_EXPRESSION
Node type constant indicating a node of type ConditionalExpression . |
static int |
CONSTRUCTOR_INVOCATION
Node type constant indicating a node of type ConstructorInvocation . |
static int |
CONTINUE_STATEMENT
Node type constant indicating a node of type ContinueStatement . |
static int |
DO_STATEMENT
Node type constant indicating a node of type DoStatement . |
static int |
EMPTY_STATEMENT
Node type constant indicating a node of type EmptyStatement . |
static int |
EXPRESSION_STATEMENT
Node type constant indicating a node of type ExpressionStatement . |
static int |
FIELD_ACCESS
Node type constant indicating a node of type FieldAccess . |
static int |
FIELD_DECLARATION
Node type constant indicating a node of type FieldDeclaration . |
static int |
FOR_STATEMENT
Node type constant indicating a node of type ForStatement . |
static int |
IF_STATEMENT
Node type constant indicating a node of type IfStatement . |
static int |
IMPORT_DECLARATION
Node type constant indicating a node of type ImportDeclaration . |
static int |
INFIX_EXPRESSION
Node type constant indicating a node of type InfixExpression . |
static int |
INITIALIZER
Node type constant indicating a node of type Initializer . |
static int |
INSTANCEOF_EXPRESSION
Node type constant indicating a node of type InstanceofExpression . |
static int |
JAVADOC
Node type constant indicating a node of type Javadoc . |
static int |
LABELED_STATEMENT
Node type constant indicating a node of type LabeledStatement . |
static int |
MALFORMED
Flag constant (bit mask, value 1) indicating that there is something not quite right with this AST node. |
static int |
METHOD_DECLARATION
Node type constant indicating a node of type MethodDeclaration . |
static int |
METHOD_INVOCATION
Node type constant indicating a node of type MethodInvocation . |
static int |
NULL_LITERAL
Node type constant indicating a node of type NullLiteral . |
static int |
NUMBER_LITERAL
Node type constant indicating a node of type NumberLiteral . |
static int |
PACKAGE_DECLARATION
Node type constant indicating a node of type PackageDeclaration . |
static int |
PARENTHESIZED_EXPRESSION
Node type constant indicating a node of type ParenthesizedExpression . |
static int |
POSTFIX_EXPRESSION
Node type constant indicating a node of type PostfixExpression . |
static int |
PREFIX_EXPRESSION
Node type constant indicating a node of type PrefixExpression . |
static int |
PRIMITIVE_TYPE
Node type constant indicating a node of type PrimitiveType . |
static int |
QUALIFIED_NAME
Node type constant indicating a node of type QualifiedName . |
static int |
RETURN_STATEMENT
Node type constant indicating a node of type ReturnStatement . |
static int |
SIMPLE_NAME
Node type constant indicating a node of type SimpleName . |
static int |
SIMPLE_TYPE
Node type constant indicating a node of type SimpleType . |
static int |
SINGLE_VARIABLE_DECLARATION
Node type constant indicating a node of type SingleVariableDeclaration . |
static int |
STRING_LITERAL
Node type constant indicating a node of type StringLiteral . |
static int |
SUPER_CONSTRUCTOR_INVOCATION
Node type constant indicating a node of type SuperConstructorInvocation . |
static int |
SUPER_FIELD_ACCESS
Node type constant indicating a node of type SuperFieldAccess . |
static int |
SUPER_METHOD_INVOCATION
Node type constant indicating a node of type SuperMethodInvocation . |
static int |
SWITCH_CASE
Node type constant indicating a node of type SwitchCase . |
static int |
SWITCH_STATEMENT
Node type constant indicating a node of type SwitchStatement . |
static int |
SYNCHRONIZED_STATEMENT
Node type constant indicating a node of type SynchronizedStatement . |
static int |
THIS_EXPRESSION
Node type constant indicating a node of type ThisExpression . |
static int |
THROW_STATEMENT
Node type constant indicating a node of type ThrowStatement . |
static int |
TRY_STATEMENT
Node type constant indicating a node of type TryStatement . |
static int |
TYPE_DECLARATION
Node type constant indicating a node of type TypeDeclaration . |
static int |
TYPE_DECLARATION_STATEMENT
Node type constant indicating a node of type TypeDeclarationStatement . |
static int |
TYPE_LITERAL
Node type constant indicating a node of type TypeLiteral . |
static int |
VARIABLE_DECLARATION_EXPRESSION
Node type constant indicating a node of type VariableDeclarationExpression . |
static int |
VARIABLE_DECLARATION_FRAGMENT
Node type constant indicating a node of type VariableDeclarationFragment . |
static int |
VARIABLE_DECLARATION_STATEMENT
Node type constant indicating a node of type VariableDeclarationStatement . |
static int |
WHILE_STATEMENT
Node type constant indicating a node of type WhileStatement . |
Method Summary | |
void |
accept(ASTVisitor visitor)
Accepts the given visitor on a visit of the current node. |
static ASTNode |
copySubtree(AST target,
ASTNode node)
Returns a deep copy of the subtree of AST nodes rooted at the given node. |
static List |
copySubtrees(AST target,
List nodes)
Returns a deep copy of the subtrees of AST nodes rooted at the given list of nodes. |
boolean |
equals(Object obj)
The ASTNode implementation of this Object
method uses object identity (==). |
AST |
getAST()
Returns this node's AST. |
int |
getFlags()
Returns the flags associated with this node. |
int |
getLength()
Returns the length in characters of the original source file indicating where the source fragment corresponding to this node ends. |
abstract int |
getNodeType()
Returns an integer value identifying the type of this concrete AST node. |
ASTNode |
getParent()
Returns this node's parent node, or null if this is the
root node. |
Object |
getProperty(String propertyName)
Returns the named property of this node, or null if none. |
ASTNode |
getRoot()
Returns the root node at or above this node; returns this node if it is a root. |
int |
getStartPosition()
Returns the character index into the original source file indicating where the source fragment corresponding to this node begins. |
Map |
properties()
Returns an unmodifiable table of the properties of this node with non- null values. |
void |
setFlags(int flags)
Sets the flags associated with this node to the given value. |
void |
setProperty(String propertyName,
Object data)
Sets the named property of this node to the given value, or to null to clear it. |
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. |
int |
subtreeBytes()
Returns an estimate of the memory footprint in bytes of the entire subtree rooted at this node. |
abstract 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. |
String |
toString()
Returns a string representation of this node suitable for debugging purposes only. |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final int ANONYMOUS_CLASS_DECLARATION
AnonymousClassDeclaration
.
AnonymousClassDeclaration
,
Constant Field Valuespublic static final int ARRAY_ACCESS
ArrayAccess
.
ArrayAccess
,
Constant Field Valuespublic static final int ARRAY_CREATION
ArrayCreation
.
ArrayCreation
,
Constant Field Valuespublic static final int ARRAY_INITIALIZER
ArrayInitializer
.
ArrayInitializer
,
Constant Field Valuespublic static final int ARRAY_TYPE
ArrayType
.
ArrayType
,
Constant Field Valuespublic static final int ASSERT_STATEMENT
AssertStatement
.
AssertStatement
,
Constant Field Valuespublic static final int ASSIGNMENT
Assignment
.
Assignment
,
Constant Field Valuespublic static final int BLOCK
Block
.
Block
,
Constant Field Valuespublic static final int BOOLEAN_LITERAL
BooleanLiteral
.
BooleanLiteral
,
Constant Field Valuespublic static final int BREAK_STATEMENT
BreakStatement
.
BreakStatement
,
Constant Field Valuespublic static final int CAST_EXPRESSION
CastExpression
.
CastExpression
,
Constant Field Valuespublic static final int CATCH_CLAUSE
CatchClause
.
CatchClause
,
Constant Field Valuespublic static final int CHARACTER_LITERAL
CharacterLiteral
.
CharacterLiteral
,
Constant Field Valuespublic static final int CLASS_INSTANCE_CREATION
ClassInstanceCreation
.
ClassInstanceCreation
,
Constant Field Valuespublic static final int COMPILATION_UNIT
CompilationUnit
.
CompilationUnit
,
Constant Field Valuespublic static final int CONDITIONAL_EXPRESSION
ConditionalExpression
.
ConditionalExpression
,
Constant Field Valuespublic static final int CONSTRUCTOR_INVOCATION
ConstructorInvocation
.
ConstructorInvocation
,
Constant Field Valuespublic static final int CONTINUE_STATEMENT
ContinueStatement
.
ContinueStatement
,
Constant Field Valuespublic static final int DO_STATEMENT
DoStatement
.
DoStatement
,
Constant Field Valuespublic static final int EMPTY_STATEMENT
EmptyStatement
.
EmptyStatement
,
Constant Field Valuespublic static final int EXPRESSION_STATEMENT
ExpressionStatement
.
ExpressionStatement
,
Constant Field Valuespublic static final int FIELD_ACCESS
FieldAccess
.
FieldAccess
,
Constant Field Valuespublic static final int FIELD_DECLARATION
FieldDeclaration
.
FieldDeclaration
,
Constant Field Valuespublic static final int FOR_STATEMENT
ForStatement
.
ForStatement
,
Constant Field Valuespublic static final int IF_STATEMENT
IfStatement
.
IfStatement
,
Constant Field Valuespublic static final int IMPORT_DECLARATION
ImportDeclaration
.
ImportDeclaration
,
Constant Field Valuespublic static final int INFIX_EXPRESSION
InfixExpression
.
InfixExpression
,
Constant Field Valuespublic static final int INITIALIZER
Initializer
.
Initializer
,
Constant Field Valuespublic static final int JAVADOC
Javadoc
.
Javadoc
,
Constant Field Valuespublic static final int LABELED_STATEMENT
LabeledStatement
.
LabeledStatement
,
Constant Field Valuespublic static final int METHOD_DECLARATION
MethodDeclaration
.
MethodDeclaration
,
Constant Field Valuespublic static final int METHOD_INVOCATION
MethodInvocation
.
MethodInvocation
,
Constant Field Valuespublic static final int NULL_LITERAL
NullLiteral
.
NullLiteral
,
Constant Field Valuespublic static final int NUMBER_LITERAL
NumberLiteral
.
NumberLiteral
,
Constant Field Valuespublic static final int PACKAGE_DECLARATION
PackageDeclaration
.
PackageDeclaration
,
Constant Field Valuespublic static final int PARENTHESIZED_EXPRESSION
ParenthesizedExpression
.
ParenthesizedExpression
,
Constant Field Valuespublic static final int POSTFIX_EXPRESSION
PostfixExpression
.
PostfixExpression
,
Constant Field Valuespublic static final int PREFIX_EXPRESSION
PrefixExpression
.
PrefixExpression
,
Constant Field Valuespublic static final int PRIMITIVE_TYPE
PrimitiveType
.
PrimitiveType
,
Constant Field Valuespublic static final int QUALIFIED_NAME
QualifiedName
.
QualifiedName
,
Constant Field Valuespublic static final int RETURN_STATEMENT
ReturnStatement
.
ReturnStatement
,
Constant Field Valuespublic static final int SIMPLE_NAME
SimpleName
.
SimpleName
,
Constant Field Valuespublic static final int SIMPLE_TYPE
SimpleType
.
SimpleType
,
Constant Field Valuespublic static final int SINGLE_VARIABLE_DECLARATION
SingleVariableDeclaration
.
SingleVariableDeclaration
,
Constant Field Valuespublic static final int STRING_LITERAL
StringLiteral
.
StringLiteral
,
Constant Field Valuespublic static final int SUPER_CONSTRUCTOR_INVOCATION
SuperConstructorInvocation
.
SuperConstructorInvocation
,
Constant Field Valuespublic static final int SUPER_FIELD_ACCESS
SuperFieldAccess
.
SuperFieldAccess
,
Constant Field Valuespublic static final int SUPER_METHOD_INVOCATION
SuperMethodInvocation
.
SuperMethodInvocation
,
Constant Field Valuespublic static final int SWITCH_CASE
SwitchCase
.
SwitchCase
,
Constant Field Valuespublic static final int SWITCH_STATEMENT
SwitchStatement
.
SwitchStatement
,
Constant Field Valuespublic static final int SYNCHRONIZED_STATEMENT
SynchronizedStatement
.
SynchronizedStatement
,
Constant Field Valuespublic static final int THIS_EXPRESSION
ThisExpression
.
ThisExpression
,
Constant Field Valuespublic static final int THROW_STATEMENT
ThrowStatement
.
ThrowStatement
,
Constant Field Valuespublic static final int TRY_STATEMENT
TryStatement
.
TryStatement
,
Constant Field Valuespublic static final int TYPE_DECLARATION
TypeDeclaration
.
TypeDeclaration
,
Constant Field Valuespublic static final int TYPE_DECLARATION_STATEMENT
TypeDeclarationStatement
.
TypeDeclarationStatement
,
Constant Field Valuespublic static final int TYPE_LITERAL
TypeLiteral
.
TypeLiteral
,
Constant Field Valuespublic static final int VARIABLE_DECLARATION_EXPRESSION
VariableDeclarationExpression
.
VariableDeclarationExpression
,
Constant Field Valuespublic static final int VARIABLE_DECLARATION_FRAGMENT
VariableDeclarationFragment
.
VariableDeclarationFragment
,
Constant Field Valuespublic static final int VARIABLE_DECLARATION_STATEMENT
VariableDeclarationStatement
.
VariableDeclarationStatement
,
Constant Field Valuespublic static final int WHILE_STATEMENT
WhileStatement
.
WhileStatement
,
Constant Field Valuespublic static final int INSTANCEOF_EXPRESSION
InstanceofExpression
.
InstanceofExpression
,
Constant Field Valuespublic static final int MALFORMED
The standard parser (AST.parseCompilationUnit
) sets this
flag on a node to indicate a syntax error detected in the vicinity.
Method Detail |
public AST getAST()
Note that the relationship between an AST node and its owing AST does not change over the lifetime of a node.
public ASTNode getParent()
null
if 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.
null
if nonepublic ASTNode getRoot()
public Object getProperty(String propertyName)
null
if none.
propertyName
- the property name
null
if nonesetProperty(java.lang.String, java.lang.Object)
public void setProperty(String propertyName, Object data)
null
to 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.
propertyName
- the property namedata
- the new property value, or null
if nonegetProperty(java.lang.String)
public Map properties()
null
values.
String
; value type: Object
)public int getFlags()
No flags are associated with newly created nodes.
The flags are the bitwise-or of individual flags. The following flags are currently defined:
MALFORMED
- indicates node is syntactically
malformed
setFlags(int)
,
MALFORMED
public void setFlags(int flags)
The flags are the bitwise-or of individual flags. The following flags are currently defined:
MALFORMED
- indicates node is syntactically
malformed
flags
- the bitwise-or of individual flagsgetFlags()
,
MALFORMED
public abstract int getNodeType()
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
CastExpression
is ASTNode.CAST_EXPRESSION
.
public final boolean equals(Object obj)
ASTNode
implementation of this Object
method uses object identity (==). Use subtreeMatch
to
compare two subtrees for equality.
equals
in class Object
subtreeMatch(ASTMatcher matcher, Object other)
public abstract boolean subtreeMatch(ASTMatcher matcher, Object other)
matcher
- the matcherother
- the other object, or null
true
if the subtree matches, or
false
if they do not matchpublic static ASTNode copySubtree(AST target, ASTNode node)
Note that client properties are not carried over to the new nodes.
target
- the AST that is to own the nodes in the resultnode
- the node to copy, or null
if none
null
if node
is null
public static List copySubtrees(AST target, List nodes)
Note that client properties are not carried over to the new nodes.
target
- the AST that is to own the nodes in the resultnodes
- the list of nodes to copy
(element type: ASTNode
)
ASTNode
)public final void accept(ASTVisitor visitor)
visitor
- the visitor object
IllegalArgumentException
- if the visitor is nullpublic int getStartPosition()
-1
if no source position information is recorded for this nodegetLength()
public int getLength()
0
if no source position information is recorded for this nodegetStartPosition()
public void setSourceRange(int startPosition, int length)
startPosition
- a 0-based character index,
or -1
if no source position information is
available for this nodelength
- a (possibly 0) length,
or 0
if no source position information is recorded
for this nodegetStartPosition()
,
getLength()
public final String toString()
toString
in class Object
public final int subtreeBytes()
|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |