org.eclipse.xtext.nodemodel
Interface INode

All Known Subinterfaces:
ICompositeNode, ILeafNode
All Known Implementing Classes:
AbstractNode, CompositeNode, CompositeNodeWithSemanticElement, CompositeNodeWithSemanticElementAndSyntaxError, CompositeNodeWithSyntaxError, HiddenLeafNode, HiddenLeafNodeWithSyntaxError, LeafNode, LeafNodeWithSyntaxError, RootNode, SyntheticCompositeNode

public interface INode

A node in the parse tree. Clients will usually deal with fully initialized nodes thus the expected behavior and described contracts are only valid if the data structure's invariant is fulfilled.

Nodes may be considered immutable from a clients perspective. However, clients should never keep a reference to a node as it may be invalidated at any time and the very same object could be reused in another subtree of the full parse tree.

Author:
Sebastian Zarnekow - Initial contribution and API

Method Summary
 BidiTreeIterable<INode> getAsTreeIterable()
          Returns a tree iterable that uses this node as its origin and root instance.
 int getEndLine()
          Returns the line number relative to the complete input where the node ends (one based, excluding hidden tokens).
 org.eclipse.emf.ecore.EObject getGrammarElement()
          Returns the grammar element that created this node.
 java.lang.Iterable<ILeafNode> getLeafNodes()
          Returns an iterable for all contained leaf nodes.
 int getLength()
          Returns the length of this node excluding hidden tokens.
 INode getNextSibling()
          Returns the next sibling or null.
 int getOffset()
          Returns the offset of this node excluding hidden tokens.
 ICompositeNode getParent()
          Returns the parent of the node or null if and only if this is the root node.
 INode getPreviousSibling()
          Returns the previous sibling or null.
 ICompositeNode getRootNode()
          Returns the root node of this parse tree.
 org.eclipse.emf.ecore.EObject getSemanticElement()
          Returns the nearest semantic object that is associated with the subtree of this node.
 int getStartLine()
          Returns the line number relative to the complete input where the node begins (one based, excluding hidden tokens).
 SyntaxErrorMessage getSyntaxErrorMessage()
          Returns the directly associated syntax error message or null if none.
 java.lang.String getText()
          Returns the parsed text that is covered by this node (including hidden tokens).
 int getTotalEndLine()
          Returns the line number relative to the complete input where the node ends (one based, including hidden tokens).
 int getTotalEndOffset()
          Returns the end offset (exclusive) of this node including hidden tokens.
 int getTotalLength()
          Returns the length of this node including hidden tokens.
 int getTotalOffset()
          Returns the offset of this node including hidden tokens.
 int getTotalStartLine()
          Returns the line number relative to the complete input where the node begins (one based, including hidden tokens).
 boolean hasDirectSemanticElement()
          Returns true if this node as a directly associated semantic element.
 boolean hasNextSibling()
          Returns true if this node is not the last child of its parent.
 boolean hasPreviousSibling()
          Returns true if this node is not the first child of its parent.
 boolean hasSiblings()
          Returns true if this node has any siblings.
 

Method Detail

getParent

ICompositeNode getParent()
Returns the parent of the node or null if and only if this is the root node.

Returns:
the parent of this node or null.

hasSiblings

boolean hasSiblings()
Returns true if this node has any siblings.

Returns:
true if this node has any siblings.
See Also:
hasPreviousSibling(), hasNextSibling()

hasPreviousSibling

boolean hasPreviousSibling()
Returns true if this node is not the first child of its parent.


hasNextSibling

boolean hasNextSibling()
Returns true if this node is not the last child of its parent.


getPreviousSibling

INode getPreviousSibling()
Returns the previous sibling or null. The result has the same parent as this node if it is not null.

Returns:
the previous sibling or null.
See Also:
hasPreviousSibling(), hasSiblings()

getNextSibling

INode getNextSibling()
Returns the next sibling or null. The result has the same parent as this node if it is not null.

Returns:
the next sibling or null.
See Also:
hasNextSibling(), hasSiblings()

getRootNode

ICompositeNode getRootNode()
Returns the root node of this parse tree. Will not return null in a consistent tree.

Returns:
the root node of this parse tree. Will not return null in a consistent tree.

getLeafNodes

java.lang.Iterable<ILeafNode> getLeafNodes()
Returns an iterable for all contained leaf nodes. Never null.

Returns:
an iterable for all contained leaf nodes. Never null.

getTotalOffset

int getTotalOffset()
Returns the offset of this node including hidden tokens.

Returns:
the offset of this node including hidden tokens.

getOffset

int getOffset()
Returns the offset of this node excluding hidden tokens. If this node is a hidden leaf node or a composite node that does only contain hidden leaf nodes, the total offset is returned.

Returns:
the offset of this node excluding hidden tokens.

getTotalLength

int getTotalLength()
Returns the length of this node including hidden tokens.

Returns:
the length of this node including hidden tokens.

getLength

int getLength()
Returns the length of this node excluding hidden tokens. If this node is a hidden leaf node, the total length is returned.

Returns:
the length of this node excluding hidden tokens.

getTotalEndOffset

int getTotalEndOffset()
Returns the end offset (exclusive) of this node including hidden tokens. Yields the same result as offset + length but may be more efficient.

Returns:
the end offset (exclusive) of this node including hidden tokens.

getTotalStartLine

int getTotalStartLine()
Returns the line number relative to the complete input where the node begins (one based, including hidden tokens).

Returns:
the line number relative to the complete input where the node begins.

getStartLine

int getStartLine()
Returns the line number relative to the complete input where the node begins (one based, excluding hidden tokens).

Returns:
the line number relative to the complete input where the node begins.

getTotalEndLine

int getTotalEndLine()
Returns the line number relative to the complete input where the node ends (one based, including hidden tokens).

Returns:
the line number relative to the complete input where the node ends.

getEndLine

int getEndLine()
Returns the line number relative to the complete input where the node ends (one based, excluding hidden tokens).

Returns:
the line number relative to the complete input where the node ends.

getText

java.lang.String getText()
Returns the parsed text that is covered by this node (including hidden tokens). The result is never null but may be empty.

Returns:
the parsed text that is covered by this node (including hidden tokens). Never null.

getGrammarElement

org.eclipse.emf.ecore.EObject getGrammarElement()
Returns the grammar element that created this node. May return null in case of unrecoverable syntax errors. This happens usually when a keyword occurred at an unexpected offset.

Returns:
the grammar element that created this node. May return null.

getSemanticElement

org.eclipse.emf.ecore.EObject getSemanticElement()
Returns the nearest semantic object that is associated with the subtree of this node. May return null whenever the parser refused to create any objects due to unrecoverable errors. Implementations will usually walk up the node tree to find the semantic object. As the node model structure does not reflect the containment structure of the semantic object graph, clients should usually use the utilities in NodeModelUtils to obtain the semantic instance.

Returns:
the nearest semantic object that is associated with the subtree of this node. May return null.
See Also:
hasDirectSemanticElement(), NodeModelUtils.findActualSemanticObjectFor(INode)

hasDirectSemanticElement

boolean hasDirectSemanticElement()
Returns true if this node as a directly associated semantic element.

Returns:
true if this node as a directly associated semantic element.
See Also:
getSemanticElement()

getSyntaxErrorMessage

SyntaxErrorMessage getSyntaxErrorMessage()
Returns the directly associated syntax error message or null if none.

Returns:
the directly associated syntax error message. May return null.

getAsTreeIterable

BidiTreeIterable<INode> getAsTreeIterable()
Returns a tree iterable that uses this node as its origin and root instance. Its iterator will not return any siblings of this root. However, the first element returned by BidiTreeIterator.previous() or BidiTreeIterator.next() will be this instance.

Returns:
a tree iterable where this node represents the root instance.