public abstract class AbstractParseTreeVisitor<T> extends Object implements ParseTreeVisitor<T>
Constructor and Description |
---|
AbstractParseTreeVisitor() |
Modifier and Type | Method and Description |
---|---|
protected T |
aggregateResult(T aggregate,
T nextResult)
Aggregates the results of visiting multiple children of a node.
|
protected T |
defaultResult()
Gets the default value returned by visitor methods.
|
protected boolean |
shouldVisitNextChild(RuleNode node,
T currentResult)
This method is called after visiting each child in
visitChildren(org.antlr.v4.runtime.tree.RuleNode) . |
T |
visit(ParseTree tree)
Visit a parse tree, and return a user-defined result of the operation.
|
T |
visitChildren(RuleNode node)
Visit the children of a node, and return a user-defined result of the
operation.
|
T |
visitErrorNode(ErrorNode node)
Visit an error node, and return a user-defined result of the operation.
|
T |
visitTerminal(TerminalNode node)
Visit a terminal node, and return a user-defined result of the operation.
|
public T visit(ParseTree tree)
The default implementation calls ParseTree.accept(org.antlr.v4.runtime.tree.ParseTreeVisitor<? extends T>)
on the
specified tree.
visit
in interface ParseTreeVisitor<T>
tree
- The ParseTree
to visit.public T visitChildren(RuleNode node)
The default implementation initializes the aggregate result to
defaultResult()
. Before visiting each child, it
calls shouldVisitNextChild
; if the result
is false
no more children are visited and the current aggregate
result is returned. After visiting a child, the aggregate result is
updated by calling aggregateResult
with the
previous aggregate result and the result of visiting the child.
The default implementation is not safe for use in visitors that modify the tree structure. Visitors that modify the tree should override this method to behave properly in respect to the specific algorithm in use.
visitChildren
in interface ParseTreeVisitor<T>
node
- The RuleNode
whose children should be visited.public T visitTerminal(TerminalNode node)
The default implementation returns the result of
defaultResult
.
visitTerminal
in interface ParseTreeVisitor<T>
node
- The TerminalNode
to visit.public T visitErrorNode(ErrorNode node)
The default implementation returns the result of
defaultResult
.
visitErrorNode
in interface ParseTreeVisitor<T>
node
- The ErrorNode
to visit.protected T defaultResult()
visitTerminal
, visitErrorNode
.
The default implementation of visitChildren
initializes its aggregate result to this value.
The base implementation returns null
.
protected T aggregateResult(T aggregate, T nextResult)
shouldVisitNextChild(org.antlr.v4.runtime.tree.RuleNode, T)
returns
false
, the aggregate value is returned as the result of
visitChildren(org.antlr.v4.runtime.tree.RuleNode)
.
The default implementation returns nextResult
, meaning
visitChildren(org.antlr.v4.runtime.tree.RuleNode)
will return the result of the last child visited
(or return the initial value if the node has no children).
aggregate
- The previous aggregate value. In the default
implementation, the aggregate value is initialized to
defaultResult()
, which is passed as the aggregate
argument
to this method after the first child node is visited.nextResult
- The result of the immediately preceeding call to visit
a child node.protected boolean shouldVisitNextChild(RuleNode node, T currentResult)
visitChildren(org.antlr.v4.runtime.tree.RuleNode)
. This method is first called before the first
child is visited; at that point currentResult
will be the initial
value (in the default implementation, the initial value is returned by a
call to defaultResult()
. This method is not called after the last
child is visited.
The default implementation always returns true
, indicating that
visitChildren
should only return after all children are visited.
One reason to override this method is to provide a "short circuit"
evaluation option for situations where the result of visiting a single
child has the potential to determine the result of the visit operation as
a whole.
node
- The RuleNode
whose children are currently being
visited.currentResult
- The current aggregate result of the children visited
to the current point.true
to continue visiting children. Otherwise return
false
to stop visiting children and immediately return the
current aggregate result from visitChildren(org.antlr.v4.runtime.tree.RuleNode)
.Copyright © 1992–2018 ANTLR. All rights reserved.