Package org.codehaus.groovy.syntax
Class CSTNode
- java.lang.Object
-
- org.codehaus.groovy.syntax.CSTNode
-
public abstract class CSTNode extends Object
An abstract base class for nodes in the concrete syntax tree that is the result of parsing. Note that the CSTNode is inextricably linked with the Token in that every CSTNode has a Token as its root.
-
-
Constructor Summary
Constructors Constructor Description CSTNode()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description CSTNode
add(CSTNode element)
Adds an element to the node.void
addChildrenOf(CSTNode of)
Adds all children of the specified node to this one.abstract Reduction
asReduction()
Creates aReduction
from this node.boolean
canMean(int type)
Returns true if the node can be coerced to the specified type.int
children()
Returns the number of non-root elements in the node.abstract CSTNode
get(int index)
Returns the specified element, or null.CSTNode
get(int index, boolean safe)
Returns the specified element, or Token.NULL if safe is set and the specified element is null (or doesn't exist).String
getDescription()
Returns a description of the node.int
getMeaning()
Returns the meaning of this node.int
getMeaningAs(int[] types)
Returns the first matching meaning of the specified types.abstract Token
getRoot()
Returns the root of the node.Token
getRoot(boolean safe)
Returns the root of the node, the Token that indicates its type.String
getRootText()
Returns the text of the root.int
getStartColumn()
Returns the starting column of the node.int
getStartLine()
Returns the starting line of the node.int
getType()
Returns the actual type of the node.boolean
hasChildren()
Returns true if the node has any non-root elements.boolean
isA(int type)
Returns true if the node's meaning matches the specified type.boolean
isAllOf(int[] types)
Returns true if the node's meaning matches all of the specified types.boolean
isAnExpression()
Returns true if the node is a complete expression.boolean
isEmpty()
Returns true if the node is completely empty (no root, even).boolean
isOneOf(int[] types)
Returns true if the node's meaning matches any of the specified types.void
markAsExpression()
Marks the node a complete expression.CSTNode
set(int index, CSTNode element)
Sets an element node in at the specified index.CSTNode
setMeaning(int meaning)
Sets the meaning for this node (and its root Token).abstract int
size()
Returns the number of elements in the node (including root).String
toString()
Formats the node as aString
and returns it.void
write(PrintWriter writer)
Formats the node and writes it to the specifiedWriter
.protected void
write(PrintWriter writer, String indent)
Formats the node and writes it to the specifiedWriter
.
-
-
-
Method Detail
-
getMeaning
public int getMeaning()
Returns the meaning of this node. If the node isEmpty(), returns the type of Token.NULL.
-
setMeaning
public CSTNode setMeaning(int meaning)
Sets the meaning for this node (and its root Token). Not valid if the node isEmpty(). Returns the node, for convenience.
-
getType
public int getType()
Returns the actual type of the node. If the node isEmpty(), returns the type of Token.NULL.
-
canMean
public boolean canMean(int type)
Returns true if the node can be coerced to the specified type.
-
isA
public boolean isA(int type)
Returns true if the node's meaning matches the specified type.
-
isOneOf
public boolean isOneOf(int[] types)
Returns true if the node's meaning matches any of the specified types.
-
isAllOf
public boolean isAllOf(int[] types)
Returns true if the node's meaning matches all of the specified types.
-
getMeaningAs
public int getMeaningAs(int[] types)
Returns the first matching meaning of the specified types. Returns Types.UNKNOWN if there are no matches.
-
isEmpty
public boolean isEmpty()
Returns true if the node is completely empty (no root, even).
-
size
public abstract int size()
Returns the number of elements in the node (including root).
-
hasChildren
public boolean hasChildren()
Returns true if the node has any non-root elements.
-
children
public int children()
Returns the number of non-root elements in the node.
-
get
public abstract CSTNode get(int index)
Returns the specified element, or null.
-
get
public CSTNode get(int index, boolean safe)
Returns the specified element, or Token.NULL if safe is set and the specified element is null (or doesn't exist).
-
getRoot
public abstract Token getRoot()
Returns the root of the node. By convention, all nodes have a Token as the first element (or root), which indicates the type of the node. May return null if the nodeisEmpty()
.
-
getRoot
public Token getRoot(boolean safe)
Returns the root of the node, the Token that indicates its type. Returns a Token.NULL if safe and the actual root is null.
-
getRootText
public String getRootText()
Returns the text of the root. UsesgetRoot(true)
to get the root, so you will only receive null in return if the root token returns it.
-
getDescription
public String getDescription()
Returns a description of the node.
-
getStartLine
public int getStartLine()
Returns the starting line of the node. Returns -1 if not known.
-
getStartColumn
public int getStartColumn()
Returns the starting column of the node. Returns -1 if not known.
-
markAsExpression
public void markAsExpression()
Marks the node a complete expression. Not all nodes support this operation!
-
isAnExpression
public boolean isAnExpression()
Returns true if the node is a complete expression.
-
add
public CSTNode add(CSTNode element)
Adds an element to the node. Returns the element for convenience. Not all nodes support this operation!
-
addChildrenOf
public void addChildrenOf(CSTNode of)
Adds all children of the specified node to this one. Not all nodes support this operation!
-
set
public CSTNode set(int index, CSTNode element)
Sets an element node in at the specified index. Returns the element for convenience. Not all nodes support this operation!
-
asReduction
public abstract Reduction asReduction()
Creates aReduction
from this node. Returns self if the node is already aReduction
.
-
toString
public String toString()
Formats the node as aString
and returns it.
-
write
public void write(PrintWriter writer)
Formats the node and writes it to the specifiedWriter
.
-
write
protected void write(PrintWriter writer, String indent)
Formats the node and writes it to the specifiedWriter
. The indent is prepended to each output line, and is increased for each recursion.
-
-