public final class Span
extends java.lang.Object
SqlParserPos
.
Because it is mutable, it is convenient for keeping track of the positions of the tokens that go into a non-terminal. It can be passed into methods, which can add the positions of tokens consumed to it.
Some patterns:
final Span s;
declaration of a Span at the top of a production
s = span();
initializes s to a Span that includes the token we
just saw; very often occurs immediately after the first token in the
production
s.end(this);
adds the most recent token to span s and evaluates
to a SqlParserPosition that spans from beginning to end; commonly used
when making a call to a function
s.pos()
returns a position spanning all tokens in the list
s.add(node);
adds a SqlNode's parser position to a span
s.addAll(nodeList);
adds several SqlNodes' parser positions to
a span
s = Span.of();
initializes s to an empty Span, not even
including the most recent token; rarely used
Modifier and Type | Field and Description |
---|---|
private java.util.List<SqlParserPos> |
posList |
Modifier | Constructor and Description |
---|---|
private |
Span()
Use one of the
of() methods. |
Modifier and Type | Method and Description |
---|---|
Span |
add(SqlAbstractParserImpl parser)
Adds the position of the last token emitted by a parser to the list,
and returns this Span.
|
Span |
add(SqlNode n)
Adds a node's position to the list,
and returns this Span.
|
Span |
add(SqlParserPos pos)
Adds a position to the list,
and returns this Span.
|
Span |
addAll(java.lang.Iterable<? extends SqlNode> nodes)
Adds the positions of a collection of nodes to the list,
and returns this Span.
|
Span |
addIf(SqlNode n)
Adds a node's position to the list if the node is not null,
and returns this Span.
|
Span |
clear()
Clears the contents of this Span, and returns this Span.
|
SqlParserPos |
end(SqlAbstractParserImpl parser)
Adds the position of the last token emitted by a parser to the list,
and returns a position that covers the whole range.
|
SqlParserPos |
end(SqlNode n)
Adds a node's position to the list,
and returns a position that covers the whole range.
|
static Span |
of()
Creates an empty Span.
|
static Span |
of(java.util.Collection<? extends SqlNode> nodes)
Creates a Span of a list of nodes.
|
static Span |
of(SqlNode n)
Creates a Span of one node.
|
static Span |
of(SqlNode n0,
SqlNode n1)
Creates a Span between two nodes.
|
static Span |
of(SqlParserPos p)
Creates a Span with one position.
|
SqlParserPos |
pos()
Returns a position spanning the earliest position to the latest.
|
private final java.util.List<SqlParserPos> posList
private Span()
of()
methods.public static Span of()
public static Span of(SqlParserPos p)
public static Span of(java.util.Collection<? extends SqlNode> nodes)
public Span addIf(SqlNode n)
public Span add(SqlParserPos pos)
public Span addAll(java.lang.Iterable<? extends SqlNode> nodes)
public Span add(SqlAbstractParserImpl parser)
public SqlParserPos pos()
public SqlParserPos end(SqlAbstractParserImpl parser)
public SqlParserPos end(SqlNode n)
public Span clear()
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.