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.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description 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).int
getEndOffset()
Returns the end offset (exclusive) of this node 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 ornull
.int
getOffset()
Returns the offset of this node excluding hidden tokens.ICompositeNode
getParent()
Returns the parent of the node ornull
if and only if this is the root node.INode
getPreviousSibling()
Returns the previous sibling ornull
.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 ornull
if none.java.lang.String
getText()
Returns the parsed text that is covered by this node (including hidden tokens).org.eclipse.xtext.util.ITextRegion
getTextRegion()
org.eclipse.xtext.util.ITextRegionWithLineInformation
getTextRegionWithLineInformation()
Returns aregion with line information
for this node excluding hidden tokens: anoffset
of this region is the same as anoffset
of this node; alength
of this region is the same as alength
of this node; aline number
of this region is the same as astart line
of this node; anend line number
of this region is the same as anend line
of this node.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).org.eclipse.xtext.util.ITextRegion
getTotalTextRegion()
Returns aregion
for this node including hidden tokens: anoffset
of this region is the same as atotal offset
of this node; and alength
of this region is the same as atotal length
of this node.org.eclipse.xtext.util.ITextRegionWithLineInformation
getTotalTextRegionWithLineInformation()
Returns aregion with line information
for this node including hidden tokens: anoffset
of this region is the same as atotal offset
of this node; alength
of this region is the same as atotal length
of this node; aline number
of this region is the same as atotal start line
of this node; anend line number
of this region is the same as atotal end line
of this node.boolean
hasDirectSemanticElement()
Returnstrue
if this node as a directly associated semantic element.boolean
hasNextSibling()
Returnstrue
if this node is not the last child of its parent.boolean
hasPreviousSibling()
Returnstrue
if this node is not the first child of its parent.boolean
hasSiblings()
Returnstrue
if this node has any siblings.
-
-
-
Method Detail
-
getParent
ICompositeNode getParent()
Returns the parent of the node ornull
if and only if this is the root node.- Returns:
- the parent of this node or
null
.
-
hasSiblings
boolean hasSiblings()
Returnstrue
if this node has any siblings.- Returns:
true
if this node has any siblings.- See Also:
hasPreviousSibling()
,hasNextSibling()
-
hasPreviousSibling
boolean hasPreviousSibling()
Returnstrue
if this node is not the first child of its parent.- Returns:
true
if this node has a previous sibling thusgetPreviousSibling()
will not returnnull
.
-
hasNextSibling
boolean hasNextSibling()
Returnstrue
if this node is not the last child of its parent.- Returns:
true
if this node has a next sibling thusgetNextSibling()
will not returnnull
.
-
getPreviousSibling
INode getPreviousSibling()
Returns the previous sibling ornull
. The result has the sameparent
as this node if it is notnull
.- Returns:
- the previous sibling or
null
. - See Also:
hasPreviousSibling()
,hasSiblings()
-
getNextSibling
INode getNextSibling()
- Returns:
- the next sibling or
null
. - See Also:
hasNextSibling()
,hasSiblings()
-
getRootNode
ICompositeNode getRootNode()
Returns the root node of this parse tree. Will not returnnull
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. Nevernull
.- 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 asoffset
+
length
but may be more efficient.- Returns:
- the end offset (exclusive) of this node including hidden tokens.
-
getEndOffset
int getEndOffset()
Returns the end offset (exclusive) of this node excluding hidden tokens. Yields the same result asoffset
+
length
but may be more efficient.- Returns:
- the end offset (exclusive) of this node excluding hidden tokens.
- Since:
- 2.5
-
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 nevernull
but may be empty.- Returns:
- the parsed text that is covered by this node (including hidden tokens). Never
null
. - Throws:
java.lang.IllegalStateException
- if the text is not available. A possible reason is, that the node is not part of a valid node model.
-
getGrammarElement
org.eclipse.emf.ecore.EObject getGrammarElement()
Returns the grammar element that created this node. May returnnull
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 returnnull
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 inNodeModelUtils
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()
Returnstrue
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 ornull
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 byBidiTreeIterator.previous()
orBidiTreeIterator.next()
will be this instance.- Returns:
- a tree iterable where this node represents the root instance.
-
getTextRegion
org.eclipse.xtext.util.ITextRegion getTextRegion()
Returns a
region
for this node excluding hidden tokens:- an
offset
of this region is the same as anoffset
of this node; - and a
length
of this region is the same as alength
of this node.
This method could be more efficient than calculating an
offset
and alength
of this node separately.- Returns:
- a
region
for this node excluding hidden tokens - Since:
- 2.5
- an
-
getTotalTextRegion
org.eclipse.xtext.util.ITextRegion getTotalTextRegion()
Returns a
region
for this node including hidden tokens:- an
offset
of this region is the same as atotal offset
of this node; - and a
length
of this region is the same as atotal length
of this node.
This method could be more efficient than calculating a
total offset
and atotal length
of this node separately.- Returns:
- a
region
for this node including hidden tokens - Since:
- 2.5
- an
-
getTextRegionWithLineInformation
org.eclipse.xtext.util.ITextRegionWithLineInformation getTextRegionWithLineInformation()
Returns a
region with line information
for this node excluding hidden tokens:- an
offset
of this region is the same as anoffset
of this node; - a
length
of this region is the same as alength
of this node; - a
line number
of this region is the same as astart line
of this node; - an
end line number
of this region is the same as anend line
of this node.
A
line number
and anend line number
of the returned region are one based.This method could be more efficient than calculating an
offset
, alength
, astart line
and anend line
of this node separately.- Returns:
- a
region with line information
for this node excluding hidden tokens - Since:
- 2.5
- an
-
getTotalTextRegionWithLineInformation
org.eclipse.xtext.util.ITextRegionWithLineInformation getTotalTextRegionWithLineInformation()
Returns a
region with line information
for this node including hidden tokens:- an
offset
of this region is the same as atotal offset
of this node; - a
length
of this region is the same as atotal length
of this node; - a
line number
of this region is the same as atotal start line
of this node; - an
end line number
of this region is the same as atotal end line
of this node.
A
line number
and anend line number
of the returned region are one based.This method could be more efficient than calculating a
total offset
, atotal length
, atotal start line
and atotal end line
of this node separately.- Returns:
- a
region with line information
for this node including hidden tokens - Since:
- 2.5
- an
-
-