public final class AST
extends java.lang.Object
AST
instance serves as the common owner of any number of
AST nodes, and as the factory for creating new AST nodes owned by that
instance.
Abstract syntax trees may be hand constructed by clients, using the
newTYPE
factory methods to create new nodes, and the
various setCHILD
methods
(see ASTNode
and its subclasses)
to connect them together.
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 ensures that the added nodes have the correct owning AST.
There can be any number of AST nodes owned by a single AST instance that are
unparented. Each of these nodes is the root of a separate little tree of nodes.
The method ASTNode.getRoot()
navigates from any node to the root
of the tree that it is contained in. Ordinarily, an AST instance has one main
tree (rooted at a JavaScriptUnit
), with newly-created nodes appearing
as additional roots until they are parented somewhere under the main tree.
One can navigate from any node to its AST instance, but not conversely.
The class ASTParser
parses a string
containing a JavaScript 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.
JavaScript units created by ASTParser
from a
source document can be serialized after arbitrary modifications
with minimal loss of original formatting. Here is an example:
Document doc = new Document("var abc;\nfunction X() {}\n"); ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource(doc.get().toCharArray()); JavaScriptUnit cu = (JavaScriptUnit) parser.createAST(null); cu.recordModifications(); AST ast = cu.getAST(); FunctionDeclaration id = ast.newFunctionDeclaration(); id.setName(ast.newName("X2"); cu.statements().add(id); // add declaration at end TextEdit edits = cu.rewrite(document, null); UndoEdit undo = edits.apply(document);See also
ASTRewrite
for
an alternative way to describe and serialize changes to a
read-only AST.
Clients may create instances of this class using newAST(int)
,
but this class is not intended to be subclassed.
ASTParser
,
Provisional API: This class/interface is part of an interim API that is still under development and expected to
change significantly before reaching stability. It is being made available at this early stage to solicit feedback
from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
(repeatedly) as the API evolves.
Modifier and Type | Field and Description |
---|---|
static int |
JLS2
Deprecated.
Clients should use the
JLS3 AST API instead. |
static int |
JLS3
Constant for indicating the AST API that handles ECMAScript 4.
|
Constructor and Description |
---|
AST()
Deprecated.
Clients should port their code to use the new JLS3 AST API and call
AST.newAST(AST.JLS3) instead of using this constructor. |
AST(java.util.Map options)
Deprecated.
Clients should port their code to use the new JLS3 AST API and call
AST.newAST(AST.JLS3) instead of using this constructor. |
Modifier and Type | Method and Description |
---|---|
int |
apiLevel()
Return the API level supported by this AST.
|
static JavaScriptUnit |
convertCompilationUnit(int level,
org.eclipse.wst.jsdt.internal.compiler.ast.CompilationUnitDeclaration compilationUnitDeclaration,
char[] source,
java.util.Map options,
boolean isResolved,
org.eclipse.wst.jsdt.internal.core.CompilationUnit workingCopy,
int reconcileFlags,
IProgressMonitor monitor)
Internal method.
|
ASTNode |
createInstance(java.lang.Class nodeClass)
Creates an unparented node of the given node class
(non-abstract subclass of
ASTNode ). |
ASTNode |
createInstance(int nodeType)
Creates an unparented node of the given node type.
|
boolean |
hasBindingsRecovery()
Returns true if the ast tree was created with bindings recovery, false otherwise
|
boolean |
hasResolvedBindings()
Returns true if the ast tree was created with bindings, false otherwise
|
boolean |
hasStatementsRecovery()
Returns true if the ast tree was created with statements recovery, false otherwise
|
long |
modificationCount()
Returns the modification count for this AST.
|
AnonymousClassDeclaration |
newAnonymousClassDeclaration()
Creates and returns a new unparented anonymous class declaration
node owned by this AST.
|
ArrayAccess |
newArrayAccess()
Creates and returns a new unparented array access expression node
owned by this AST.
|
ArrayCreation |
newArrayCreation()
Creates and returns a new unparented array creation expression node
owned by this AST.
|
ArrayInitializer |
newArrayInitializer()
Creates and returns a new unparented array initializer node
owned by this AST.
|
ArrayName |
newArrayName()
Creates and returns a new unparented array name node.
|
ArrayType |
newArrayType(Type componentType)
Creates and returns a new unparented array type node with the given
component type, which may be another array type.
|
ArrayType |
newArrayType(Type elementType,
int dimensions)
Creates and returns a new unparented array type node with the given
element type and number of dimensions.
|
ArrowFunctionExpression |
newArrowFunctionExpression()
Creates and returns a new unparented arrow expression node
owned by this AST.
|
Assignment |
newAssignment()
Creates and returns a new unparented assignment expression node
owned by this AST.
|
AssignmentName |
newAssignmentName()
Creates and returns a new unparented assignment name (pattern) node
|
static AST |
newAST(int level)
Creates a new JavaScript abstract syntax tree
(AST) following the specified set of API rules.
|
Block |
newBlock()
Creates an unparented block node owned by this AST, for an empty list
of statements.
|
BlockComment |
newBlockComment()
Creates and returns a new block comment placeholder node.
|
BooleanLiteral |
newBooleanLiteral(boolean value)
Creates and returns a new unparented boolean literal node.
|
BooleanLiteral |
newBooleanLiteral(java.lang.String value)
Creates and returns a new unparented boolean literal node.
|
BreakStatement |
newBreakStatement()
Creates an unparented break statement node owned by this AST.
|
CatchClause |
newCatchClause()
Creates a new unparented catch clause node owned by this AST.
|
CharacterLiteral |
newCharacterLiteral()
Creates and returns a new unparented character literal node.
|
ClassInstanceCreation |
newClassInstanceCreation()
Creates and returns a new unparented class instance creation
("new") expression node owned by this AST.
|
ConditionalExpression |
newConditionalExpression()
Creates and returns a new unparented conditional expression node
owned by this AST.
|
ConstructorInvocation |
newConstructorInvocation()
Creates an unparented alternate constructor ("this(...);") invocation
statement node owned by this AST.
|
ContinueStatement |
newContinueStatement()
Creates an unparented continue statement node owned by this AST.
|
DebuggerStatement |
newDebuggerStatement()
Creates and returns a new unparented debugger statement node
owned by this AST.
|
DoStatement |
newDoStatement()
Creates a new unparented do statement node owned by this AST.
|
EmptyStatement |
newEmptyStatement()
Creates a new unparented empty statement node owned by this AST.
|
EnhancedForStatement |
newEnhancedForStatement() |
ExportDeclaration |
newExportDeclaration()
Creates and returns a new unparented meta property node
owned by this AST.
|
ExpressionStatement |
newExpressionStatement()
Creates a new unparented expression statement node owned by this AST,
for the given expression.
|
ExpressionStatement |
newExpressionStatement(Expression expression)
Creates a new unparented expression statement node owned by this AST,
for the given expression.
|
FieldAccess |
newFieldAccess()
Creates and returns a new unparented field access expression node
owned by this AST.
|
FieldDeclaration |
newFieldDeclaration(VariableDeclarationFragment fragment)
Creates a new unparented field declaration node owned by this AST,
for the given variable declaration fragment.
|
ForInStatement |
newForInStatement()
Creates a new unparented for..in statement node owned by this AST.
|
ForOfStatement |
newForOfStatement()
Creates a new unparented for..of statement node owned by this AST.
|
ForStatement |
newForStatement()
Creates a new unparented for statement node owned by this AST.
|
FunctionDeclaration |
newFunctionDeclaration()
Creates an unparented method declaration node owned by this AST.
|
Statement |
newFunctionDeclarationStatement(FunctionDeclaration declaration) |
FunctionExpression |
newFunctionExpression()
Creates and returns a new unparented function expression node
owned by this AST.
|
FunctionInvocation |
newFunctionInvocation()
Creates an unparented method invocation expression node owned by this
AST.
|
FunctionRef |
newFunctionRef()
Creates and returns a new method reference node.
|
FunctionRefParameter |
newFunctionRefParameter()
Creates and returns a new method reference node.
|
IfStatement |
newIfStatement()
Creates a new unparented if statement node owned by this AST.
|
ImportDeclaration |
newImportDeclaration()
Creates an unparented import declaration node owned by this AST.
|
InferredType |
newInferredType(java.lang.String typeName)
Creates and returns a new inferred type node with the given
type name.
|
InfixExpression |
newInfixExpression()
Creates and returns a new unparented infix expression node
owned by this AST.
|
Initializer |
newInitializer() |
InstanceofExpression |
newInstanceofExpression()
Creates and returns a new unparented instanceof expression node
owned by this AST.
|
JavaScriptUnit |
newJavaScriptUnit()
Creates an unparented javaScript unit node owned by this AST.
|
JSdoc |
newJSdoc()
Creates and returns a new doc comment node.
|
LabeledStatement |
newLabeledStatement()
Creates a new unparented labeled statement node owned by this AST.
|
LineComment |
newLineComment()
Creates and returns a new line comment placeholder node.
|
ListExpression |
newListExpression() |
MemberRef |
newMemberRef()
Creates and returns a new member reference node.
|
MetaProperty |
newMetaProperty()
Creates and returns a new unparented meta property node
owned by this AST.
|
Modifier |
newModifier(Modifier.ModifierKeyword keyword)
Creates and returns a new unparented modifier node for the given
modifier.
|
java.util.List |
newModifiers(int flags)
Creates and returns a list of new unparented modifier nodes
for the given modifier flags.
|
ModuleSpecifier |
newModuleSpecifier()
Creates and returns a new unparented meta property node
owned by this AST.
|
Name |
newName(java.lang.String qualifiedName)
Creates and returns a new unparented name node for the given name.
|
Name |
newName(java.lang.String[] identifiers)
Creates and returns a new unparented name node for the given name
segments.
|
NullLiteral |
newNullLiteral()
Creates and returns a new unparented null literal node.
|
NumberLiteral |
newNumberLiteral()
Creates and returns a new unparented number literal node.
|
NumberLiteral |
newNumberLiteral(java.lang.String literal)
Creates and returns a new unparented number literal node.
|
ObjectLiteral |
newObjectLiteral()
Creates and returns a new unparented object literal expression node
owned by this AST.
|
ObjectLiteralField |
newObjectLiteralField()
Creates and returns a new unparented object literal field expression node
owned by this AST.
|
ObjectLiteralField |
newObjectLiteralField(Expression key,
Expression value)
Creates and returns a new unparented object literal field expression node
owned by this AST.
|
ObjectName |
newObjectName()
Creates and returns a new unparented object name node
|
PackageDeclaration |
newPackageDeclaration()
Creates an unparented package declaration node owned by this AST.
|
ParenthesizedExpression |
newParenthesizedExpression()
Creates and returns a new unparented parenthesized expression node
owned by this AST.
|
ParenthesizedExpression |
newParenthesizedExpression(Expression expression)
Creates and returns a new unparented parenthesized expression node
owned by this AST.
|
PostfixExpression |
newPostfixExpression()
Creates and returns a new unparented postfix expression node
owned by this AST.
|
PrefixExpression |
newPrefixExpression()
Creates and returns a new unparented prefix expression node
owned by this AST.
|
PrimitiveType |
newPrimitiveType(PrimitiveType.Code typeCode)
Creates and returns a new unparented primitive type node with the given
type code.
|
QualifiedName |
newQualifiedName(Name qualifier,
SimpleName name)
Creates and returns a new unparented qualified name node for the given
qualifier and simple name child node.
|
QualifiedType |
newQualifiedType(Type qualifier,
SimpleName name)
Creates and returns a new unparented qualified type node with
the given qualifier type and name.
|
RegularExpressionLiteral |
newRegularExpressionLiteral()
Creates and returns a new Regular Expression literal node.
|
RegularExpressionLiteral |
newRegularExpressionLiteral(java.lang.String literal)
Creates and returns a new Regular Expression literal node.
|
RestElementName |
newRestElementName()
Creates and returns a new unparented rest element node
owned by this AST.
|
ReturnStatement |
newReturnStatement()
Creates a new unparented return statement node owned by this AST.
|
SimpleName |
newSimpleName(java.lang.String identifier)
Creates and returns a new unparented simple name node for the given
identifier.
|
SimpleType |
newSimpleType(Name typeName)
Creates and returns a new unparented simple type node with the given
type name.
|
SingleVariableDeclaration |
newSingleVariableDeclaration()
Creates an unparented single variable declaration node owned by this AST.
|
SpreadElement |
newSpreadElement()
Creates and returns a new unparented spread element node
owned by this AST.
|
StringLiteral |
newStringLiteral()
Creates and returns a new unparented string literal node for
the empty string literal.
|
StringLiteral |
newStringLiteral(java.lang.String literal)
Creates and returns a new unparented string literal node for
the given string literal.
|
SuperConstructorInvocation |
newSuperConstructorInvocation()
Creates an unparented alternate super constructor ("super(...);")
invocation statement node owned by this AST.
|
SuperFieldAccess |
newSuperFieldAccess()
Creates and returns a new unparented super field access expression node
owned by this AST.
|
SuperMethodInvocation |
newSuperMethodInvocation()
Creates an unparented "super" method invocation expression node owned by
this AST.
|
SwitchCase |
newSwitchCase()
Creates a new unparented switch case statement node owned by
this AST.
|
SwitchStatement |
newSwitchStatement()
Creates a new unparented switch statement node owned by this AST.
|
TagElement |
newTagElement()
Creates and returns a new tag element node.
|
TemplateElement |
newTemplateElement()
Creates and returns a new unparented template element node.
|
TemplateLiteral |
newTemplateLiteral()
Creates and returns a new unparented template literal node.
|
TextElement |
newTextElement()
Creates and returns a new text element node.
|
ThisExpression |
newThisExpression()
Creates and returns a new unparented "this" expression node
owned by this AST.
|
ThrowStatement |
newThrowStatement()
Creates a new unparented throw statement node owned by this AST.
|
TryStatement |
newTryStatement()
Creates a new unparented try statement node owned by this AST.
|
TypeDeclaration |
newTypeDeclaration()
Creates an unparented class declaration node owned by this AST.
|
TypeDeclarationExpression |
newTypeDeclarationExpression(AbstractTypeDeclaration declaration)
Creates a new unparented local type declaration expression node
owned by this AST, for the given type declaration.
|
TypeDeclarationStatement |
newTypeDeclarationStatement(AbstractTypeDeclaration decl)
Creates a new unparented local type declaration statement node
owned by this AST, for the given type declaration.
|
TypeDeclarationStatement |
newTypeDeclarationStatement(TypeDeclaration decl)
Creates a new unparented local type declaration statement node
owned by this AST, for the given type declaration.
|
TypeLiteral |
newTypeLiteral()
Creates and returns a new unparented type literal expression node
owned by this AST.
|
UndefinedLiteral |
newUndefinedLiteral()
Creates and returns a new unparented 'undefined' literal node.
|
VariableDeclarationExpression |
newVariableDeclarationExpression()
Creates a new unparented local variable declaration expression node
owned by this AST, for the given variable declaration fragment.
|
VariableDeclarationExpression |
newVariableDeclarationExpression(VariableDeclarationFragment fragment)
Creates a new unparented local variable declaration expression node
owned by this AST, for the given variable declaration fragment.
|
VariableDeclarationFragment |
newVariableDeclarationFragment()
Creates an unparented variable declaration fragment node owned by this
AST.
|
VariableDeclarationStatement |
newVariableDeclarationStatement()
Creates a new unparented local variable declaration statement node
owned by this AST, for the given variable declaration fragment.
|
VariableDeclarationStatement |
newVariableDeclarationStatement(VariableDeclarationFragment fragment)
Creates a new unparented local variable declaration statement node
owned by this AST, for the given variable declaration fragment.
|
WhileStatement |
newWhileStatement()
Creates a new unparented while statement node owned by this AST.
|
WithStatement |
newWithStatement()
Creates a new unparented with statement node owned by this AST.
|
YieldExpression |
newYieldExpression()
Creates and returns a new unparented yield expression node
owned by this AST.
|
ITypeBinding |
resolveWellKnownType(java.lang.String name)
Returns the type binding for a "well known" type.
|
void |
setDefaultNodeFlag(int flag)
Sets default node flags of new nodes of this AST.
|
public static final int JLS2
JLS3
AST API instead.public static final int JLS3
public AST()
AST.newAST(AST.JLS3)
instead of using this constructor.JavaScriptCore.getDefaultOptions()
public AST(java.util.Map options)
AST.newAST(AST.JLS3)
instead of using this constructor.options
- the table of options (key type: String
;
value type: String
)JavaScriptCore.getDefaultOptions()
public static JavaScriptUnit convertCompilationUnit(int level, org.eclipse.wst.jsdt.internal.compiler.ast.CompilationUnitDeclaration compilationUnitDeclaration, char[] source, java.util.Map options, boolean isResolved, org.eclipse.wst.jsdt.internal.core.CompilationUnit workingCopy, int reconcileFlags, IProgressMonitor monitor)
This method converts the given internal compiler AST for the given source string into a javaScript unit. This method is not intended to be called by clients.
level
- the API level; one of the LEVEL constantscompilationUnitDeclaration
- an internal AST node for a javaScript unit declarationsource
- the string of the JavaScript javaScript unitoptions
- validator optionsworkingCopy
- the working copy that the AST is created frommonitor
- the progress monitor used to report progress and request cancelation,
or null
if noneisResolved
- whether the given javaScript unit declaration is resolvedpublic static AST newAST(int level)
level
- the API level; one of the LEVEL constantsjava.lang.IllegalArgumentException
- if:
public long modificationCount()
The following things count as modifying an AST:
N.B. This method may be called several times in the course of a single client operation. The only promise is that the modification count increases monotonically as the AST or its nodes change; there is no promise that a modifying operation increases the count by exactly 1.
public int apiLevel()
JLS*
LEVEL
declared on AST
; assume this set is open-endedpublic void setDefaultNodeFlag(int flag)
flag
- node flags of new nodes of this ASTpublic ITypeBinding resolveWellKnownType(java.lang.String name)
Note that bindings are generally unavailable unless requested when the AST is being built.
name
- the name of a well known typenull
if the
named type is not considered well known or if no binding can be found
for itpublic ASTNode createInstance(java.lang.Class nodeClass)
ASTNode
).nodeClass
- AST node classjava.lang.IllegalArgumentException
- if nodeClass
is
null
or is not a concrete node type classpublic ASTNode createInstance(int nodeType)
createInstance(ASTNode.nodeClassForType(nodeType))
nodeType
- AST node type, one of the node type
constants declared on ASTNode
java.lang.IllegalArgumentException
- if nodeType
is
not a legal AST node typepublic SimpleName newSimpleName(java.lang.String identifier)
identifier
- the identifierjava.lang.IllegalArgumentException
- if the identifier is invalidpublic ArrayName newArrayName()
public ObjectName newObjectName()
public AssignmentName newAssignmentName()
public QualifiedName newQualifiedName(Name qualifier, SimpleName name)
qualifier
- the qualifier name nodename
- the simple name being qualifiedjava.lang.IllegalArgumentException
- if:
public Name newName(java.lang.String[] identifiers)
identifiers
- a list of 1 or more name segments, each of which
is a legal JavaScript identifierjava.lang.IllegalArgumentException
- if:
public Name newName(java.lang.String qualifiedName)
QualifiedName
if the name has
dots, and a SimpleName
otherwise. Each of the name
segments should be legal JavaScript identifiers (this constraint may or may
not be enforced), and there must be at least one name segment.
The string must not contains white space, '<', '>',
'[', ']', or other any other characters that are not
part of the JavaScript identifiers or separating '.'s.qualifiedName
- string consisting of 1 or more name segments,
each of which is a legal JavaScript identifier, separated by single dots '.'java.lang.IllegalArgumentException
- if:
public SimpleType newSimpleType(Name typeName)
This method can be used to convert a name (Name
) into a
type (Type
) by wrapping it.
Note: This Method only applies to ECMAScript 4 which is not yet supported
typeName
- the name of the class or interfacejava.lang.IllegalArgumentException
- if:
public ArrayType newArrayType(Type componentType)
componentType
- the component type (possibly another array type)java.lang.IllegalArgumentException
- if:
public ArrayType newArrayType(Type elementType, int dimensions)
Note that if the element type passed in is an array type, the element type of the result will not be the same as what was passed in.
Note: This Method only applies to ECMAScript 4 which is not yet supported
elementType
- the element type (never an array type)dimensions
- the number of dimensions, a positive numberjava.lang.IllegalArgumentException
- if:
public PrimitiveType newPrimitiveType(PrimitiveType.Code typeCode)
Note: This Method only applies to ECMAScript 4 which is not yet supported
typeCode
- one of the primitive type code constants declared in
PrimitiveType
java.lang.IllegalArgumentException
- if the primitive type code is invalidpublic InferredType newInferredType(java.lang.String typeName)
typeName
- the name of the inferred typejava.lang.IllegalArgumentException
- if:
public QualifiedType newQualifiedType(Type qualifier, SimpleName name)
Note: This Method only applies to ECMAScript 4 which is not yet supported
qualifier
- the qualifier type nodename
- the simple name being qualifiedjava.lang.IllegalArgumentException
- if:
java.lang.UnsupportedOperationException
- if this operation is used in
a JLS2 ASTpublic JavaScriptUnit newJavaScriptUnit()
public PackageDeclaration newPackageDeclaration()
Note: This Method only applies to ECMAScript 4 which is not yet supported
public ImportDeclaration newImportDeclaration()
Note: This Method only applies to ECMAScript 4 which is not yet supported
public TypeDeclaration newTypeDeclaration()
To create an interface, use this method and then call
TypeDeclaration.setInterface(true)
.
To create an enum declaration, use this method and then call
TypeDeclaration.setEnumeration(true)
.
Note: This Method only applies to ECMAScript 4 which is not yet supported
public FunctionDeclaration newFunctionDeclaration()
To create a constructor, use this method and then call
FunctionDeclaration.setConstructor(true)
and
FunctionDeclaration.setName(className)
.
public SingleVariableDeclaration newSingleVariableDeclaration()
public VariableDeclarationFragment newVariableDeclarationFragment()
public Initializer newInitializer()
public Modifier newModifier(Modifier.ModifierKeyword keyword)
Note: This Method only applies to ECMAScript 4 which is not yet supported
keyword
- one of the modifier keyword constantsjava.lang.IllegalArgumentException
- if the primitive type code is invalidjava.lang.UnsupportedOperationException
- if this operation is used in
a JLS2 ASTpublic java.util.List newModifiers(int flags)
Note: This Method only applies to ECMAScript 4 which is not yet supported
flags
- bitwise or of modifier flags declared on Modifier
Modifier
)java.lang.UnsupportedOperationException
- if this operation is used in
a JLS2 ASTpublic BlockComment newBlockComment()
Note that this node type is used to recording the source range where a comment was found in the source string. These comment nodes are normally found (only) in the comment table for parsed javaScript units.
public LineComment newLineComment()
Note that this node type is used to recording the source range where a comment was found in the source string. These comment nodes are normally found (only) in the comment table for parsed javaScript units.
public ListExpression newListExpression()
public JSdoc newJSdoc()
public TagElement newTagElement()
Note that this node type is used only inside doc comments
(JSdoc
).
public TextElement newTextElement()
Note that this node type is used only inside doc comments
(Javadoc
).
public MemberRef newMemberRef()
Note that this node type is used only inside doc comments
(JSdoc
).
public FunctionRef newFunctionRef()
Note that this node type is used only inside doc comments
(Javadoc
).
public FunctionRefParameter newFunctionRefParameter()
Note that this node type is used only inside doc comments
(JSdoc
).
public VariableDeclarationStatement newVariableDeclarationStatement()
java.lang.IllegalArgumentException
- if:
public VariableDeclarationStatement newVariableDeclarationStatement(VariableDeclarationFragment fragment)
This method can be used to convert a variable declaration fragment
(VariableDeclarationFragment
) into a statement
(Statement
) by wrapping it. Additional variable
declaration fragments can be added afterwards.
fragment
- the variable declaration fragmentjava.lang.IllegalArgumentException
- if:
public TypeDeclarationStatement newTypeDeclarationStatement(TypeDeclaration decl)
This method can be used to convert a type declaration
(TypeDeclaration
) into a statement
(Statement
) by wrapping it.
Note: This Method only applies to ECMAScript 4 which is not yet supported
decl
- the type declarationjava.lang.IllegalArgumentException
- if:
public TypeDeclarationStatement newTypeDeclarationStatement(AbstractTypeDeclaration decl)
This method can be used to convert any kind of type declaration
(AbstractTypeDeclaration
) into a statement
(Statement
) by wrapping it.
Note: This Method only applies to ECMAScript 4 which is not yet supported
decl
- the type declarationjava.lang.IllegalArgumentException
- if:
public TypeDeclarationExpression newTypeDeclarationExpression(AbstractTypeDeclaration declaration)
This method can be used to convert any kind of type declaration
(AbstractTypeDeclaration
) into an expression
(Expression
) by wrapping it.
declaratopn
- the type declarationjava.lang.IllegalArgumentException
- if:
public Block newBlock()
public ContinueStatement newContinueStatement()
public BreakStatement newBreakStatement()
public ExpressionStatement newExpressionStatement(Expression expression)
This method can be used to convert an expression
(Expression
) into a statement (Type
)
by wrapping it. Note, however, that the result is only legal for
limited expression types, including method invocations, assignments,
and increment/decrement operations.
expression
- the expressionjava.lang.IllegalArgumentException
- if:
public ExpressionStatement newExpressionStatement()
java.lang.IllegalArgumentException
- if:
public IfStatement newIfStatement()
public WhileStatement newWhileStatement()
public WithStatement newWithStatement()
public DoStatement newDoStatement()
public TryStatement newTryStatement()
public CatchClause newCatchClause()
public ReturnStatement newReturnStatement()
public ThrowStatement newThrowStatement()
public EmptyStatement newEmptyStatement()
public LabeledStatement newLabeledStatement()
public SwitchStatement newSwitchStatement()
public SwitchCase newSwitchCase()
public ForStatement newForStatement()
public ForInStatement newForInStatement()
public ForOfStatement newForOfStatement()
public EnhancedForStatement newEnhancedForStatement()
public StringLiteral newStringLiteral()
public StringLiteral newStringLiteral(java.lang.String literal)
public CharacterLiteral newCharacterLiteral()
public RegularExpressionLiteral newRegularExpressionLiteral()
public RegularExpressionLiteral newRegularExpressionLiteral(java.lang.String literal)
public NumberLiteral newNumberLiteral(java.lang.String literal)
literal
- the token for the numeric literal as it would
appear in JavaScript source codejava.lang.IllegalArgumentException
- if the literal is nullpublic NumberLiteral newNumberLiteral()
"0"
.public NullLiteral newNullLiteral()
public UndefinedLiteral newUndefinedLiteral()
public BooleanLiteral newBooleanLiteral(boolean value)
For example, the assignment expression foo = true
is generated by the following snippet:
Assignment e= ast.newAssignment();
e.setLeftHandSide(ast.newSimpleName("foo"));
e.setRightHandSide(ast.newBooleanLiteral(true));
value
- the boolean valuepublic BooleanLiteral newBooleanLiteral(java.lang.String value)
value
- a string that is parseable to booleanpublic TemplateLiteral newTemplateLiteral()
public TemplateElement newTemplateElement()
public Assignment newAssignment()
public FunctionInvocation newFunctionInvocation()
public SuperMethodInvocation newSuperMethodInvocation()
Note: This Method only applies to ECMAScript 4 which is not yet supported
public ConstructorInvocation newConstructorInvocation()
Note that this type of node is a Statement, whereas a regular method invocation is an Expression. The only valid use of these statements are as the first statement of a constructor body.
Note: This Method only applies to ECMAScript 4 which is not yet supported
public SuperConstructorInvocation newSuperConstructorInvocation()
Note that this type of node is a Statement, whereas a regular super method invocation is an Expression. The only valid use of these statements are as the first statement of a constructor body.
Note: This Method only applies to ECMAScript 4 which is not yet supported
public VariableDeclarationExpression newVariableDeclarationExpression(VariableDeclarationFragment fragment)
This method can be used to convert a variable declaration fragment
(VariableDeclarationFragment
) into an expression
(Expression
) by wrapping it. Additional variable
declaration fragments can be added afterwards.
fragment
- the first variable declaration fragmentjava.lang.IllegalArgumentException
- if:
public VariableDeclarationExpression newVariableDeclarationExpression()
This method can be used to convert a variable declaration fragment
(VariableDeclarationFragment
) into an expression
(Expression
) by wrapping it. Additional variable
declaration fragments can be added afterwards.
java.lang.IllegalArgumentException
- if:
public FieldDeclaration newFieldDeclaration(VariableDeclarationFragment fragment)
This method can be used to wrap a variable declaration fragment
(VariableDeclarationFragment
) into a field declaration
suitable for inclusion in the body of a type declaration
(FieldDeclaration
implements BodyDeclaration
).
Additional variable declaration fragments can be added afterwards.
Note: This Method only applies to ECMAScript 4 which is not yet supported
fragment
- the variable declaration fragmentjava.lang.IllegalArgumentException
- if:
public ThisExpression newThisExpression()
public FieldAccess newFieldAccess()
public SuperFieldAccess newSuperFieldAccess()
Note: This Method only applies to ECMAScript 4 which is not yet supported
public TypeLiteral newTypeLiteral()
Note: This Method only applies to ECMAScript 4 which is not yet supported
public FunctionExpression newFunctionExpression()
public ObjectLiteral newObjectLiteral()
public ObjectLiteralField newObjectLiteralField()
public ObjectLiteralField newObjectLiteralField(Expression key, Expression value)
key
- usually a literalvalue
- an expressionpublic ParenthesizedExpression newParenthesizedExpression()
public ParenthesizedExpression newParenthesizedExpression(Expression expression)
the
- expression included in paranthesespublic InfixExpression newInfixExpression()
public InstanceofExpression newInstanceofExpression()
public PostfixExpression newPostfixExpression()
public PrefixExpression newPrefixExpression()
public ArrayAccess newArrayAccess()
public ArrayCreation newArrayCreation()
public ClassInstanceCreation newClassInstanceCreation()
public AnonymousClassDeclaration newAnonymousClassDeclaration()
public ArrayInitializer newArrayInitializer()
public ConditionalExpression newConditionalExpression()
public YieldExpression newYieldExpression()
public ArrowFunctionExpression newArrowFunctionExpression()
public DebuggerStatement newDebuggerStatement()
public RestElementName newRestElementName()
public SpreadElement newSpreadElement()
public MetaProperty newMetaProperty()
public ModuleSpecifier newModuleSpecifier()
public ExportDeclaration newExportDeclaration()
public Statement newFunctionDeclarationStatement(FunctionDeclaration declaration)
statement
- public boolean hasResolvedBindings()
public boolean hasStatementsRecovery()
public boolean hasBindingsRecovery()
Copyright (c) IBM Corp. and others 2000, 2016. All Rights Reserved.