com.sonar.sslr.api
Class AstNode

java.lang.Object
  extended by com.sonar.sslr.api.AstNode

public class AstNode
extends Object

the parser is in charge to construct an abstract syntax tree (AST) which is a tree representation of the abstract syntactic structure of source code. Each node of the tree is an AstNode and each node denotes a construct occurring in the source code which starts at a given Token.

See Also:
Token

Field Summary
protected  AstNodeType type
           
 
Constructor Summary
AstNode(AstNodeType type, String name, Token token)
           
AstNode(Token token)
           
 
Method Summary
 void addChild(AstNode child)
           
 List<AstNode> findChildren(AstNodeType... nodeTypes)
          Deprecated. in 1.17, use getDescendants(AstNodeType...) instead, but don't forget that those methods behave differently due to bug SSLR-249
 List<AstNode> findDirectChildren(AstNodeType... nodeTypes)
          Deprecated. in 1.17, use getChildren(AstNodeType...) instead
 AstNode findFirstChild(AstNodeType... nodeTypes)
          Deprecated. in 1.17, use getFirstDescendant(AstNodeType...) instead
 AstNode findFirstDirectChild(AstNodeType... nodeTypes)
          Deprecated. in 1.17, use getFirstChild(AstNodeType...) instead
 AstNode findFirstParent(AstNodeType nodeType)
          Deprecated. in 1.17, use getFirstAncestor(AstNodeType) instead
 AstNode getChild(int index)
          Deprecated. in 1.19.2, use getFirstChild(AstNodeType...) instead
 List<AstNode> getChildren()
          Get the list of children.
 List<AstNode> getChildren(AstNodeType... nodeTypes)
          Returns children of specified types.
 List<AstNode> getDescendants(AstNodeType... nodeTypes)
          Returns descendants of specified types.
 AstNode getFirstAncestor(AstNodeType... nodeTypes)
           
 AstNode getFirstAncestor(AstNodeType nodeType)
           
 AstNode getFirstChild()
          Returns the first child of this node.
 AstNode getFirstChild(AstNodeType... nodeTypes)
          Returns first child of one of specified types.
 AstNode getFirstDescendant(AstNodeType... nodeTypes)
          Returns first descendant of one of specified types.
 int getFromIndex()
           
 AstNode getLastChild()
          Returns the last child of this node.
 Token getLastToken()
           
 String getName()
           
 AstNode getNextAstNode()
          Get the next sibling AstNode in the tree and if this node doesn't exist try to get the next AST Node of the parent.
 AstNode getNextSibling()
          Get the next sibling AstNode if exists in the tree.
 int getNumberOfChildren()
           
 AstNode getParent()
          Get the parent of this node in the tree.
 AstNode getPreviousAstNode()
          Get the previous sibling AstNode in the tree and if this node doesn't exist try to get the next AST Node of the parent.
 AstNode getPreviousSibling()
          Get the previous sibling AstNode if exists in the tree.
 int getToIndex()
           
 Token getToken()
          Get the Token associated to this AstNode
 int getTokenLine()
          Get the Token's line associated to this AstNode
 String getTokenOriginalValue()
          Get the Token's original value associated to this AstNode
 List<Token> getTokens()
          Return all tokens contained in this tree node.
 String getTokenValue()
          Get the Token's value associated to this AstNode
 AstNodeType getType()
           
 boolean hasAncestor(AstNodeType... nodeTypes)
           
 boolean hasAncestor(AstNodeType nodeType)
           
 boolean hasChildren()
           
 boolean hasChildren(AstNodeType... nodeTypes)
          Deprecated. in 1.17, use hasDescendant(AstNodeType...) instead. Be careful the name of this method is misleading as the check is done on descendant nodes and not only on child nodes.
 boolean hasDescendant(AstNodeType... nodeTypes)
           
 boolean hasDirectChildren(AstNodeType... nodeTypes)
           
 boolean hasParent(AstNodeType... nodeTypes)
           
 boolean hasParents(AstNodeType nodeType)
          Deprecated. in 1.17, use hasAncestor(AstNodeType) instead
 boolean hasToBeSkippedFromAst()
          For internal use only.
 boolean hasToken()
           
 boolean is(AstNodeType... types)
           
 boolean isCopyBookOrGeneratedNode()
           
 boolean isNot(AstNodeType... types)
           
 AstNode nextAstNode()
          Deprecated. in 1.17, use getNextAstNode() instead
 AstNode nextSibling()
          Deprecated. in 1.17, use getNextSibling() instead
 AstNode previousAstNode()
          Deprecated. in 1.17, use getPreviousAstNode() instead
 AstNode previousSibling()
          Deprecated. in 1.17, use getPreviousSibling()
 AstSelect select()
           
 void setFromIndex(int fromIndex)
           
 void setToIndex(int toIndex)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

type

protected AstNodeType type
Constructor Detail

AstNode

public AstNode(Token token)

AstNode

public AstNode(AstNodeType type,
               String name,
               @Nullable
               Token token)
Method Detail

getParent

public AstNode getParent()
Get the parent of this node in the tree.


addChild

public void addChild(AstNode child)

hasChildren

public boolean hasChildren()
Returns:
true if this AstNode has some children.

getChildren

public List<AstNode> getChildren()
Get the list of children.

Returns:
list of children

getNumberOfChildren

public int getNumberOfChildren()

getChild

@Deprecated
public AstNode getChild(int index)
Deprecated. in 1.19.2, use getFirstChild(AstNodeType...) instead


nextAstNode

@Deprecated
public AstNode nextAstNode()
Deprecated. in 1.17, use getNextAstNode() instead


getNextAstNode

public AstNode getNextAstNode()
Get the next sibling AstNode in the tree and if this node doesn't exist try to get the next AST Node of the parent.

Since:
1.17

previousAstNode

@Deprecated
public AstNode previousAstNode()
Deprecated. in 1.17, use getPreviousAstNode() instead


getPreviousAstNode

public AstNode getPreviousAstNode()
Get the previous sibling AstNode in the tree and if this node doesn't exist try to get the next AST Node of the parent.

Since:
1.17

nextSibling

@Deprecated
public AstNode nextSibling()
Deprecated. in 1.17, use getNextSibling() instead


getNextSibling

public AstNode getNextSibling()
Get the next sibling AstNode if exists in the tree.

Returns:
next sibling, or null if not exists
Since:
1.17

previousSibling

@Deprecated
public AstNode previousSibling()
Deprecated. in 1.17, use getPreviousSibling()


getPreviousSibling

public AstNode getPreviousSibling()
Get the previous sibling AstNode if exists in the tree.

Returns:
previous sibling, or null if not exists
Since:
1.17

getTokenValue

public String getTokenValue()
Get the Token's value associated to this AstNode

Returns:
token's value

getTokenOriginalValue

public String getTokenOriginalValue()
Get the Token's original value associated to this AstNode

Returns:
token's original value

getToken

public Token getToken()
Get the Token associated to this AstNode


getTokenLine

public int getTokenLine()
Get the Token's line associated to this AstNode

Returns:
token's line

hasToken

public boolean hasToken()

getName

public String getName()

getFromIndex

public int getFromIndex()

setFromIndex

public void setFromIndex(int fromIndex)

getToIndex

public int getToIndex()

hasToBeSkippedFromAst

public boolean hasToBeSkippedFromAst()
For internal use only.


setToIndex

public void setToIndex(int toIndex)

is

public boolean is(AstNodeType... types)

isNot

public boolean isNot(AstNodeType... types)

findFirstDirectChild

@Deprecated
public AstNode findFirstDirectChild(AstNodeType... nodeTypes)
Deprecated. in 1.17, use getFirstChild(AstNodeType...) instead


getFirstChild

public AstNode getFirstChild(AstNodeType... nodeTypes)
Returns first child of one of specified types.

In the following case, getFirstChild("B") would return "B2":

 A1
  |__ C1
  |    |__ B1
  |__ B2
  |__ B3
 

Returns:
first child of one of specified types, or null if not found
Since:
1.17

findFirstChild

@Deprecated
public AstNode findFirstChild(AstNodeType... nodeTypes)
Deprecated. in 1.17, use getFirstDescendant(AstNodeType...) instead


getFirstDescendant

public AstNode getFirstDescendant(AstNodeType... nodeTypes)
Returns first descendant of one of specified types.

In the following case, getFirstDescendant("B") would return "B1":

 A1
  |__ C1
  |    |__ B1
  |__ B2
  |__ B3
 

Returns:
first descendant of one of specified types, or null if not found
Since:
1.17

getFirstChild

public AstNode getFirstChild()
Returns the first child of this node.

Returns:
the first child, or null if there is no child

findDirectChildren

@Deprecated
public List<AstNode> findDirectChildren(AstNodeType... nodeTypes)
Deprecated. in 1.17, use getChildren(AstNodeType...) instead


getChildren

public List<AstNode> getChildren(AstNodeType... nodeTypes)
Returns children of specified types. In the following case, getChildren("B") would return "B2" and "B3":

 A1
  |__ C1
  |    |__ B1
  |__ B2
  |__ B3
 

Returns:
children of specified types, never null
Since:
1.17

findChildren

@Deprecated
public List<AstNode> findChildren(AstNodeType... nodeTypes)
Deprecated. in 1.17, use getDescendants(AstNodeType...) instead, but don't forget that those methods behave differently due to bug SSLR-249


getDescendants

public List<AstNode> getDescendants(AstNodeType... nodeTypes)
Returns descendants of specified types. Be careful, this method searches among all descendants whatever is their depth, so favor getChildren(AstNodeType...) when possible.

In the following case, getDescendants("B", "C") would return "C1", "B1", "B2" and "B3":

 A1
  |__ C1
  |    |__ B1
  |__ B2
  |__ D1
  |__ B3
 

Returns:
descendants of specified types, never null
Since:
1.17

getLastChild

public AstNode getLastChild()
Returns the last child of this node.

Returns:
the last child, or null if there is no child

hasDirectChildren

public boolean hasDirectChildren(AstNodeType... nodeTypes)
Returns:
true if this node has some children with the requested node types

hasChildren

@Deprecated
public boolean hasChildren(AstNodeType... nodeTypes)
Deprecated. in 1.17, use hasDescendant(AstNodeType...) instead. Be careful the name of this method is misleading as the check is done on descendant nodes and not only on child nodes.


hasDescendant

public boolean hasDescendant(AstNodeType... nodeTypes)
Returns:
true if this node has a descendant of one of specified types
Since:
1.17

hasParents

@Deprecated
public boolean hasParents(AstNodeType nodeType)
Deprecated. in 1.17, use hasAncestor(AstNodeType) instead


hasParent

public boolean hasParent(AstNodeType... nodeTypes)
Since:
1.19.2

hasAncestor

public boolean hasAncestor(AstNodeType nodeType)
Returns:
true if this node has an ancestor of the specified type
Since:
1.17

hasAncestor

public boolean hasAncestor(AstNodeType... nodeTypes)
Returns:
true if this node has an ancestor of one of specified types
Since:
1.19.2

findFirstParent

@Deprecated
public AstNode findFirstParent(AstNodeType nodeType)
Deprecated. in 1.17, use getFirstAncestor(AstNodeType) instead


getFirstAncestor

public AstNode getFirstAncestor(AstNodeType nodeType)
Returns:
first ancestor of the specified type, or null if not found
Since:
1.17

getFirstAncestor

public AstNode getFirstAncestor(AstNodeType... nodeTypes)
Returns:
first ancestor of one of specified types, or null if not found
Since:
1.19.2

isCopyBookOrGeneratedNode

public boolean isCopyBookOrGeneratedNode()

getType

public AstNodeType getType()

getTokens

public List<Token> getTokens()
Return all tokens contained in this tree node. Those tokens can be directly or indirectly attached to this node.


toString

public String toString()
Overrides:
toString in class Object

getLastToken

public Token getLastToken()

select

@Beta
public AstSelect select()
Since:
1.18


Copyright © 2009-2014 SonarSource. All Rights Reserved.