|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eigenbase.sql.SqlNode org.eigenbase.sql.SqlNodeList
public class SqlNodeList
A SqlNodeList
is a list of SqlNode
s. It is also a SqlNode
, so may appear in a parse tree.
Field Summary | |
---|---|
static SqlNodeList |
Empty
An immutable, empty SqlNodeList. |
private List<SqlNode> |
list
|
Fields inherited from class org.eigenbase.sql.SqlNode |
---|
emptyArray |
Constructor Summary | |
---|---|
SqlNodeList(Collection collection,
SqlParserPos pos)
Creates a SqlNodeList containing the nodes in
list . |
|
SqlNodeList(SqlParserPos pos)
Creates an empty SqlNodeList . |
Method Summary | ||
---|---|---|
(package private) void |
_andOrList(SqlWriter writer,
SqlKind sepKind)
|
|
|
accept(SqlVisitor<R> visitor)
Accepts a generic visitor. |
|
void |
add(SqlNode node)
|
|
(package private) void |
andOrList(SqlWriter writer,
SqlKind sepKind)
|
|
SqlNode |
clone(SqlParserPos pos)
Clones a SqlNode with a different position. |
|
(package private) void |
commaList(SqlWriter writer)
|
|
boolean |
equalsDeep(SqlNode node,
boolean fail)
Returns whether this node is structurally equivalent to another node. |
|
SqlNode |
get(int n)
|
|
List<SqlNode> |
getList()
|
|
static boolean |
isEmptyList(SqlNode node)
|
|
Iterator<SqlNode> |
iterator()
|
|
SqlNode |
set(int n,
SqlNode node)
|
|
int |
size()
|
|
SqlNode[] |
toArray()
|
|
void |
unparse(SqlWriter writer,
int leftPrec,
int rightPrec)
Writes a SQL representation of this node to a writer. |
|
void |
validate(SqlValidator validator,
SqlValidatorScope scope)
Validates this node. |
|
void |
validateExpr(SqlValidator validator,
SqlValidatorScope scope)
Validates this node in an expression context. |
Methods inherited from class org.eigenbase.sql.SqlNode |
---|
clone, cloneArray, equalDeep, findValidOptions, getKind, getMonotonicity, getParserPosition, isA, toSqlString, toSqlString, toString |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final SqlNodeList Empty
private final List<SqlNode> list
Constructor Detail |
---|
public SqlNodeList(SqlParserPos pos)
SqlNodeList
.
public SqlNodeList(Collection collection, SqlParserPos pos)
SqlNodeList
containing the nodes in
list
. The list is copied, but the nodes in it are not.
Method Detail |
---|
public Iterator<SqlNode> iterator()
iterator
in interface Iterable<SqlNode>
public List<SqlNode> getList()
public void add(SqlNode node)
public SqlNode clone(SqlParserPos pos)
SqlNode
clone
in class SqlNode
public SqlNode get(int n)
public SqlNode set(int n, SqlNode node)
public int size()
public void unparse(SqlWriter writer, int leftPrec, int rightPrec)
SqlNode
The leftPrec
and rightPrec
parameters give
us enough context to decide whether we need to enclose the expression in
parentheses. For example, we need parentheses around "2 + 3" if preceded
by "5 *". This is because the precedence of the "*" operator is greater
than the precedence of the "+" operator.
The algorithm handles left- and right-associative operators by giving them slightly different left- and right-precedence.
If SqlWriter.isAlwaysUseParentheses()
is true, we use
parentheses even when they are not required by the precedence rules.
For the details of this algorithm, see SqlCall.unparse(org.eigenbase.sql.SqlWriter, int, int)
.
unparse
in class SqlNode
writer
- Target writerleftPrec
- The precedence of the SqlNode
immediately
preceding this node in a depth-first scan of the parse treerightPrec
- The precedence of the SqlNode
immediatelyvoid commaList(SqlWriter writer)
void andOrList(SqlWriter writer, SqlKind sepKind)
void _andOrList(SqlWriter writer, SqlKind sepKind)
public void validate(SqlValidator validator, SqlValidatorScope scope)
SqlNode
The typical implementation of this method will make a callback to the
validator appropriate to the node type and context. The validator has
methods such as SqlValidator.validateLiteral(org.eigenbase.sql.SqlLiteral)
for these purposes.
validate
in class SqlNode
scope
- Validatorpublic <R> R accept(SqlVisitor<R> visitor)
SqlNode
Implementations of this method in subtypes simply call the appropriate
visit
method on the visitor object
.
The type parameter R
must be consistent with the type
parameter of the visitor.
accept
in class SqlNode
public boolean equalsDeep(SqlNode node, boolean fail)
SqlNode
equalsDeep
in class SqlNode
public SqlNode[] toArray()
public static boolean isEmptyList(SqlNode node)
public void validateExpr(SqlValidator validator, SqlValidatorScope scope)
SqlNode
Usually, this method does much the same as SqlNode.validate(org.eigenbase.sql.validate.SqlValidator, org.eigenbase.sql.validate.SqlValidatorScope)
, but a
SqlIdentifier
can occur in expression and non-expression
contexts.
validateExpr
in class SqlNode
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |