|
Eclipse JDT 2.1 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | 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. These lists support the
List.set
method; 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:
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.
Note that there is no built-in way to serialize a modified AST to a source code string. Naive serialization of a newly-constructed AST to a string is a straightforward application of an AST visitor. However, preserving comments and formatting from the originating source code string is a challenging problem (support for this is planned for a future release).
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
public static final int ARRAY_ACCESS
ArrayAccess
.ArrayAccess
public static final int ARRAY_CREATION
ArrayCreation
.ArrayCreation
public static final int ARRAY_INITIALIZER
ArrayInitializer
.ArrayInitializer
public static final int ARRAY_TYPE
ArrayType
.ArrayType
public static final int ASSERT_STATEMENT
AssertStatement
.AssertStatement
public static final int ASSIGNMENT
Assignment
.Assignment
public static final int BLOCK
Block
.Block
public static final int BOOLEAN_LITERAL
BooleanLiteral
.BooleanLiteral
public static final int BREAK_STATEMENT
BreakStatement
.BreakStatement
public static final int CAST_EXPRESSION
CastExpression
.CastExpression
public static final int CATCH_CLAUSE
CatchClause
.CatchClause
public static final int CHARACTER_LITERAL
CharacterLiteral
.CharacterLiteral
public static final int CLASS_INSTANCE_CREATION
ClassInstanceCreation
.ClassInstanceCreation
public static final int COMPILATION_UNIT
CompilationUnit
.CompilationUnit
public static final int CONDITIONAL_EXPRESSION
ConditionalExpression
.ConditionalExpression
public static final int CONSTRUCTOR_INVOCATION
ConstructorInvocation
.ConstructorInvocation
public static final int CONTINUE_STATEMENT
ContinueStatement
.ContinueStatement
public static final int DO_STATEMENT
DoStatement
.DoStatement
public static final int EMPTY_STATEMENT
EmptyStatement
.EmptyStatement
public static final int EXPRESSION_STATEMENT
ExpressionStatement
.ExpressionStatement
public static final int FIELD_ACCESS
FieldAccess
.FieldAccess
public static final int FIELD_DECLARATION
FieldDeclaration
.FieldDeclaration
public static final int FOR_STATEMENT
ForStatement
.ForStatement
public static final int IF_STATEMENT
IfStatement
.IfStatement
public static final int IMPORT_DECLARATION
ImportDeclaration
.ImportDeclaration
public static final int INFIX_EXPRESSION
InfixExpression
.InfixExpression
public static final int INITIALIZER
Initializer
.Initializer
public static final int JAVADOC
Javadoc
.Javadoc
public static final int LABELED_STATEMENT
LabeledStatement
.LabeledStatement
public static final int METHOD_DECLARATION
MethodDeclaration
.MethodDeclaration
public static final int METHOD_INVOCATION
MethodInvocation
.MethodInvocation
public static final int NULL_LITERAL
NullLiteral
.NullLiteral
public static final int NUMBER_LITERAL
NumberLiteral
.NumberLiteral
public static final int PACKAGE_DECLARATION
PackageDeclaration
.PackageDeclaration
public static final int PARENTHESIZED_EXPRESSION
ParenthesizedExpression
.ParenthesizedExpression
public static final int POSTFIX_EXPRESSION
PostfixExpression
.PostfixExpression
public static final int PREFIX_EXPRESSION
PrefixExpression
.PrefixExpression
public static final int PRIMITIVE_TYPE
PrimitiveType
.PrimitiveType
public static final int QUALIFIED_NAME
QualifiedName
.QualifiedName
public static final int RETURN_STATEMENT
ReturnStatement
.ReturnStatement
public static final int SIMPLE_NAME
SimpleName
.SimpleName
public static final int SIMPLE_TYPE
SimpleType
.SimpleType
public static final int SINGLE_VARIABLE_DECLARATION
SingleVariableDeclaration
.SingleVariableDeclaration
public static final int STRING_LITERAL
StringLiteral
.StringLiteral
public static final int SUPER_CONSTRUCTOR_INVOCATION
SuperConstructorInvocation
.SuperConstructorInvocation
public static final int SUPER_FIELD_ACCESS
SuperFieldAccess
.SuperFieldAccess
public static final int SUPER_METHOD_INVOCATION
SuperMethodInvocation
.SuperMethodInvocation
public static final int SWITCH_CASE
SwitchCase
.SwitchCase
public static final int SWITCH_STATEMENT
SwitchStatement
.SwitchStatement
public static final int SYNCHRONIZED_STATEMENT
SynchronizedStatement
.SynchronizedStatement
public static final int THIS_EXPRESSION
ThisExpression
.ThisExpression
public static final int THROW_STATEMENT
ThrowStatement
.ThrowStatement
public static final int TRY_STATEMENT
TryStatement
.TryStatement
public static final int TYPE_DECLARATION
TypeDeclaration
.TypeDeclaration
public static final int TYPE_DECLARATION_STATEMENT
TypeDeclarationStatement
.TypeDeclarationStatement
public static final int TYPE_LITERAL
TypeLiteral
.TypeLiteral
public static final int VARIABLE_DECLARATION_EXPRESSION
VariableDeclarationExpression
.VariableDeclarationExpression
public static final int VARIABLE_DECLARATION_FRAGMENT
VariableDeclarationFragment
.VariableDeclarationFragment
public static final int VARIABLE_DECLARATION_STATEMENT
VariableDeclarationStatement
.VariableDeclarationStatement
public static final int WHILE_STATEMENT
WhileStatement
.WhileStatement
public static final int INSTANCEOF_EXPRESSION
InstanceofExpression
.InstanceofExpression
public 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 namenull
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
malformedsetFlags(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
malformedflags
- 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)
Source range information on the original nodes is automatically copied to the new
nodes. Client properties (properties
) are not carried over.
target
- the AST that is to own the nodes in the resultnode
- the node to copy, or null
if nonenull
if node
is null
public static List copySubtrees(AST target, List nodes)
Source range information on the original nodes is automatically copied to the new
nodes. Client properties (properties
) are not carried over.
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 objectIllegalArgumentException
- 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.1 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |