=head3 Value
-A Value is a Perl scalar. Depending on the type, a Visitor may be able to make
-certain decisions.
+A Value is a Perl scalar. Depending on the subtype, a Visitor may be able to
+make certain decisions. The following are the minimally-valid subtypes:
=over 4
{
type => 'Operator',
op => String,
- args => ExpressionList,
+ args => [
+ Expression,
+ ],
}
Operators have a cardinality, or expected number of arguments. Some operators,
An Expression is a meta-syntactic unit. An "Expression" unit will never appear
within the AST. It acts as a junction.
-=head3 ExpressionList
-
-An ExpressionList is a list of Expressions, generally separated by commas
-(though other separators may be appropriate at times or for different SQL
-dialects). An null separator may also be used.
-
-The hash for an ExpressionList is as follows:
-
- {
- type => 'ExpressionList',
- separator => ',',
- elements => Array of Expressions,
- }
-
-An ExpressionList is always rendered in SQL with parentheses around it.
-
=head3 Nesting
There is no specific operator or nodetype for nesting. Instead, nesting is
The hash for a for clause is composed as follows:
{
- start_with => ExpressionList,
+ start_with => [
+ Expression,
+ ],
connect_by => {
option => '< PRIOR | NOCYCLE >'
- cond => ExpressionList,
+ cond => [
+ Expression,
+ ],
},
order_siblings => orderby-clause,
}