Class AbstractNode
- java.lang.Object
-
- org.eclipse.xtext.nodemodel.impl.AbstractNode
-
- All Implemented Interfaces:
java.lang.Iterable<INode>,BidiIterable<INode>,BidiTreeIterable<INode>,INode
- Direct Known Subclasses:
CompositeNode,LeafNode
public abstract class AbstractNode extends java.lang.Object implements INode, BidiTreeIterable<INode>
- Noextend:
- This class is not intended to be subclassed by clients.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractNode.NodeType
-
Constructor Summary
Constructors Constructor Description AbstractNode()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected java.lang.ObjectbasicGetGrammarElement()protected intbasicGetLineOfOffset(INode rootNode, int offset)protected AbstractNodebasicGetNextSibling()protected CompositeNodebasicGetParent()protected AbstractNodebasicGetPreviousSibling()protected org.eclipse.emf.ecore.EObjectbasicGetSemanticElement()protected booleanbasicHasNextSibling()protected booleanbasicHasPreviousSibling()protected booleanbasicHasSiblings()BidiTreeIterator<AbstractNode>basicIterator()protected voidbasicSetGrammarElement(java.lang.Object grammarElementOrArray)protected voidbasicSetNextSibling(AbstractNode next)protected voidbasicSetParent(CompositeNode parent)protected voidbasicSetPreviousSibling(AbstractNode prev)BidiTreeIterable<INode>getAsTreeIterable()Returns a tree iterable that uses this node as its origin and root instance.intgetEndLine()Returns the line number relative to the complete input where the node ends (one based, excluding hidden tokens).intgetEndOffset()Returns the end offset (exclusive) of this node excluding hidden tokens.org.eclipse.emf.ecore.EObjectgetGrammarElement()Returns the grammar element that created this node.java.lang.Iterable<ILeafNode>getLeafNodes()Returns an iterable for all contained leaf nodes.intgetLength()Returns the length of this node excluding hidden tokens.INodegetNextSibling()Returns the next sibling ornull.protected abstract AbstractNode.NodeTypegetNodeId()intgetOffset()Returns the offset of this node excluding hidden tokens.ICompositeNodegetParent()Returns the parent of the node ornullif and only if this is the root node.INodegetPreviousSibling()Returns the previous sibling ornull.ICompositeNodegetRootNode()Returns the root node of this parse tree.org.eclipse.emf.ecore.EObjectgetSemanticElement()Returns the nearest semantic object that is associated with the subtree of this node.intgetStartLine()Returns the line number relative to the complete input where the node begins (one based, excluding hidden tokens).SyntaxErrorMessagegetSyntaxErrorMessage()Returns the directly associated syntax error message ornullif none.java.lang.StringgetText()Returns the parsed text that is covered by this node (including hidden tokens).org.eclipse.xtext.util.ITextRegiongetTextRegion()org.eclipse.xtext.util.ITextRegionWithLineInformationgetTextRegionWithLineInformation()Returns aregion with line informationfor this node excluding hidden tokens: anoffsetof this region is the same as anoffsetof this node; alengthof this region is the same as alengthof this node; aline numberof this region is the same as astart lineof this node; anend line numberof this region is the same as anend lineof this node.protected org.eclipse.xtext.util.ITextRegionWithLineInformationgetTextRegionWithLineInformation(int offset, int length)intgetTotalEndLine()Returns the line number relative to the complete input where the node ends (one based, including hidden tokens).intgetTotalEndOffset()Returns the end offset (exclusive) of this node including hidden tokens.intgetTotalStartLine()Returns the line number relative to the complete input where the node begins (one based, including hidden tokens).org.eclipse.xtext.util.ITextRegiongetTotalTextRegion()Returns aregionfor this node including hidden tokens: anoffsetof this region is the same as atotal offsetof this node; and alengthof this region is the same as atotal lengthof this node.org.eclipse.xtext.util.ITextRegionWithLineInformationgetTotalTextRegionWithLineInformation()Returns aregion with line informationfor this node including hidden tokens: anoffsetof this region is the same as atotal offsetof this node; alengthof this region is the same as atotal lengthof this node; aline numberof this region is the same as atotal start lineof this node; anend line numberof this region is the same as atotal end lineof this node.booleanhasDirectSemanticElement()Returnstrueif this node as a directly associated semantic element.booleanhasNextSibling()Returnstrueif this node is not the last child of its parent.booleanhasPreviousSibling()Returnstrueif this node is not the first child of its parent.booleanhasSiblings()Returnstrueif this node has any siblings.BidiTreeIterator<INode>iterator()Returns a tree iterator that can be used forwards and backwards.protected voidreadData(java.io.DataInputStream in, DeserializationConversionContext context)BidiTreeIterable<INode>reverse()Returns a reverse version of this iterable that can be used forwards and backwards.protected voidwrite(java.io.DataOutputStream out, SerializationConversionContext scc)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.xtext.nodemodel.INode
getTotalLength, getTotalOffset
-
-
-
-
Method Detail
-
getTextRegion
public org.eclipse.xtext.util.ITextRegion getTextRegion()
Description copied from interface:INodeReturns a
regionfor this node excluding hidden tokens:- an
offsetof this region is the same as anoffsetof this node; - and a
lengthof this region is the same as alengthof this node.
This method could be more efficient than calculating an
offsetand alengthof this node separately.- Specified by:
getTextRegionin interfaceINode- Returns:
- a
regionfor this node excluding hidden tokens - Since:
- 2.5
- an
-
getTotalTextRegion
public org.eclipse.xtext.util.ITextRegion getTotalTextRegion()
Description copied from interface:INodeReturns a
regionfor this node including hidden tokens:- an
offsetof this region is the same as atotal offsetof this node; - and a
lengthof this region is the same as atotal lengthof this node.
This method could be more efficient than calculating a
total offsetand atotal lengthof this node separately.- Specified by:
getTotalTextRegionin interfaceINode- Returns:
- a
regionfor this node including hidden tokens - Since:
- 2.5
- an
-
getTextRegionWithLineInformation
public org.eclipse.xtext.util.ITextRegionWithLineInformation getTextRegionWithLineInformation()
Description copied from interface:INodeReturns a
region with line informationfor this node excluding hidden tokens:- an
offsetof this region is the same as anoffsetof this node; - a
lengthof this region is the same as alengthof this node; - a
line numberof this region is the same as astart lineof this node; - an
end line numberof this region is the same as anend lineof this node.
A
line numberand anend line numberof the returned region are one based.This method could be more efficient than calculating an
offset, alength, astart lineand anend lineof this node separately.- Specified by:
getTextRegionWithLineInformationin interfaceINode- Returns:
- a
region with line informationfor this node excluding hidden tokens - Since:
- 2.5
- an
-
getTotalTextRegionWithLineInformation
public org.eclipse.xtext.util.ITextRegionWithLineInformation getTotalTextRegionWithLineInformation()
Description copied from interface:INodeReturns a
region with line informationfor this node including hidden tokens:- an
offsetof this region is the same as atotal offsetof this node; - a
lengthof this region is the same as atotal lengthof this node; - a
line numberof this region is the same as atotal start lineof this node; - an
end line numberof this region is the same as atotal end lineof this node.
A
line numberand anend line numberof the returned region are one based.This method could be more efficient than calculating a
total offset, atotal length, atotal start lineand atotal end lineof this node separately.- Specified by:
getTotalTextRegionWithLineInformationin interfaceINode- Returns:
- a
region with line informationfor this node including hidden tokens - Since:
- 2.5
- an
-
getTextRegionWithLineInformation
protected org.eclipse.xtext.util.ITextRegionWithLineInformation getTextRegionWithLineInformation(int offset, int length)- Since:
- 2.5
-
getParent
public ICompositeNode getParent()
Description copied from interface:INodeReturns the parent of the node ornullif and only if this is the root node.
-
basicGetParent
protected CompositeNode basicGetParent()
-
basicSetParent
protected void basicSetParent(CompositeNode parent)
-
getAsTreeIterable
public BidiTreeIterable<INode> getAsTreeIterable()
Description copied from interface:INodeReturns 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.- Specified by:
getAsTreeIterablein interfaceINode- Returns:
- a tree iterable where this node represents the root instance.
-
iterator
public BidiTreeIterator<INode> iterator()
Description copied from interface:BidiTreeIterableReturns a tree iterator that can be used forwards and backwards.- Specified by:
iteratorin interfaceBidiIterable<INode>- Specified by:
iteratorin interfaceBidiTreeIterable<INode>- Specified by:
iteratorin interfacejava.lang.Iterable<INode>- Returns:
- an iterator. Never returns
null.
-
reverse
public BidiTreeIterable<INode> reverse()
Description copied from interface:BidiTreeIterableReturns a reverse version of this iterable that can be used forwards and backwards. In other words, an iterator provided by the reverse iterable will delegate its
hasNext()andnext()invocations toBidiIterator.hasPrevious()andBidiIterator.previous()respectively.This allows clients to iterate backwards by means of the enhanced for-loop:
for(T t: iterable.reverse()) { // do something with t }- Specified by:
reversein interfaceBidiIterable<INode>- Specified by:
reversein interfaceBidiTreeIterable<INode>- Returns:
- the reversed iterable. Never returns
null.
-
getLeafNodes
public java.lang.Iterable<ILeafNode> getLeafNodes()
Description copied from interface:INodeReturns an iterable for all contained leaf nodes. Nevernull.- Specified by:
getLeafNodesin interfaceINode- Returns:
- an iterable for all contained leaf nodes. Never
null.
-
basicIterator
public BidiTreeIterator<AbstractNode> basicIterator()
-
getText
public java.lang.String getText()
Description copied from interface:INodeReturns the parsed text that is covered by this node (including hidden tokens). The result is nevernullbut may be empty.
-
getTotalStartLine
public int getTotalStartLine()
Description copied from interface:INodeReturns the line number relative to the complete input where the node begins (one based, including hidden tokens).- Specified by:
getTotalStartLinein interfaceINode- Returns:
- the line number relative to the complete input where the node begins.
-
basicGetLineOfOffset
protected int basicGetLineOfOffset(INode rootNode, int offset)
- Since:
- 2.0
-
getStartLine
public int getStartLine()
Description copied from interface:INodeReturns the line number relative to the complete input where the node begins (one based, excluding hidden tokens).- Specified by:
getStartLinein interfaceINode- Returns:
- the line number relative to the complete input where the node begins.
-
getEndLine
public int getEndLine()
Description copied from interface:INodeReturns the line number relative to the complete input where the node ends (one based, excluding hidden tokens).- Specified by:
getEndLinein interfaceINode- Returns:
- the line number relative to the complete input where the node ends.
-
getTotalEndLine
public int getTotalEndLine()
Description copied from interface:INodeReturns the line number relative to the complete input where the node ends (one based, including hidden tokens).- Specified by:
getTotalEndLinein interfaceINode- Returns:
- the line number relative to the complete input where the node ends.
-
getOffset
public int getOffset()
Description copied from interface:INodeReturns 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.
-
getLength
public int getLength()
Description copied from interface:INodeReturns the length of this node excluding hidden tokens. If this node is a hidden leaf node, the total length is returned.
-
getTotalEndOffset
public int getTotalEndOffset()
Description copied from interface:INodeReturns the end offset (exclusive) of this node including hidden tokens. Yields the same result asoffset+lengthbut may be more efficient.- Specified by:
getTotalEndOffsetin interfaceINode- Returns:
- the end offset (exclusive) of this node including hidden tokens.
-
getEndOffset
public int getEndOffset()
Description copied from interface:INodeReturns the end offset (exclusive) of this node excluding hidden tokens. Yields the same result asoffset+lengthbut may be more efficient.- Specified by:
getEndOffsetin interfaceINode- Returns:
- the end offset (exclusive) of this node excluding hidden tokens.
- Since:
- 2.5
-
getRootNode
public ICompositeNode getRootNode()
Description copied from interface:INodeReturns the root node of this parse tree. Will not returnnullin a consistent tree.- Specified by:
getRootNodein interfaceINode- Returns:
- the root node of this parse tree. Will not return
nullin a consistent tree.
-
getSemanticElement
public org.eclipse.emf.ecore.EObject getSemanticElement()
Description copied from interface:INodeReturns the nearest semantic object that is associated with the subtree of this node. May returnnullwhenever 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 inNodeModelUtilsto obtain the semantic instance.- Specified by:
getSemanticElementin interfaceINode- Returns:
- the nearest semantic object that is associated with the subtree of this node. May return
null. - See Also:
INode.hasDirectSemanticElement(),NodeModelUtils.findActualSemanticObjectFor(INode)
-
basicGetSemanticElement
protected org.eclipse.emf.ecore.EObject basicGetSemanticElement()
-
hasDirectSemanticElement
public boolean hasDirectSemanticElement()
Description copied from interface:INodeReturnstrueif this node as a directly associated semantic element.- Specified by:
hasDirectSemanticElementin interfaceINode- Returns:
trueif this node as a directly associated semantic element.- See Also:
INode.getSemanticElement()
-
getGrammarElement
public org.eclipse.emf.ecore.EObject getGrammarElement()
Description copied from interface:INodeReturns the grammar element that created this node. May returnnullin case of unrecoverable syntax errors. This happens usually when a keyword occurred at an unexpected offset.- Specified by:
getGrammarElementin interfaceINode- Returns:
- the grammar element that created this node. May return
null.
-
basicGetGrammarElement
protected java.lang.Object basicGetGrammarElement()
-
basicSetGrammarElement
protected void basicSetGrammarElement(java.lang.Object grammarElementOrArray)
-
getSyntaxErrorMessage
public SyntaxErrorMessage getSyntaxErrorMessage()
Description copied from interface:INodeReturns the directly associated syntax error message ornullif none.- Specified by:
getSyntaxErrorMessagein interfaceINode- Returns:
- the directly associated syntax error message. May return
null.
-
getPreviousSibling
public INode getPreviousSibling()
Description copied from interface:INodeReturns the previous sibling ornull. The result has the sameparentas this node if it is notnull.- Specified by:
getPreviousSiblingin interfaceINode- Returns:
- the previous sibling or
null. - See Also:
INode.hasPreviousSibling(),INode.hasSiblings()
-
basicGetPreviousSibling
protected AbstractNode basicGetPreviousSibling()
-
basicSetPreviousSibling
protected void basicSetPreviousSibling(AbstractNode prev)
-
getNextSibling
public INode getNextSibling()
Description copied from interface:INode- Specified by:
getNextSiblingin interfaceINode- Returns:
- the next sibling or
null. - See Also:
INode.hasNextSibling(),INode.hasSiblings()
-
basicGetNextSibling
protected AbstractNode basicGetNextSibling()
-
basicSetNextSibling
protected void basicSetNextSibling(AbstractNode next)
-
hasPreviousSibling
public boolean hasPreviousSibling()
Description copied from interface:INodeReturnstrueif this node is not the first child of its parent.- Specified by:
hasPreviousSiblingin interfaceINode- Returns:
trueif this node has a previous sibling thusINode.getPreviousSibling()will not returnnull.
-
basicHasPreviousSibling
protected boolean basicHasPreviousSibling()
-
hasNextSibling
public boolean hasNextSibling()
Description copied from interface:INodeReturnstrueif this node is not the last child of its parent.- Specified by:
hasNextSiblingin interfaceINode- Returns:
trueif this node has a next sibling thusINode.getNextSibling()will not returnnull.
-
basicHasNextSibling
protected boolean basicHasNextSibling()
-
hasSiblings
public boolean hasSiblings()
Description copied from interface:INodeReturnstrueif this node has any siblings.- Specified by:
hasSiblingsin interfaceINode- Returns:
trueif this node has any siblings.- See Also:
INode.hasPreviousSibling(),INode.hasNextSibling()
-
basicHasSiblings
protected boolean basicHasSiblings()
-
getNodeId
protected abstract AbstractNode.NodeType getNodeId()
-
readData
protected void readData(java.io.DataInputStream in, DeserializationConversionContext context) throws java.io.IOException- Throws:
java.io.IOException
-
write
protected void write(java.io.DataOutputStream out, SerializationConversionContext scc) throws java.io.IOException- Throws:
java.io.IOException
-
-