Changeset: 108119103753 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=108119103753
Modified Files:
sql/server/sql_parser.y
Branch: sciql
Log Message:
many small changes to create more concise parse tree for index_exp for array
slicings, i.e., removing superfluous 'L()'
diffs (184 lines):
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -267,6 +267,7 @@ int yydebug=1;
dimension
array_dim_ref
array_cell_ref
+ index_term
%type <type>
data_type
@@ -389,7 +390,6 @@ int yydebug=1;
dim_exp
index_exp /* position indices of array cells */
index_exp_list
- index_term
array_element_def_list
@@ -1669,7 +1669,7 @@ dim_range_list:
}
;
-dim_range :
+dim_range:
'[' dim_exp ':' dim_exp ':' dim_exp ']'
{
dlist *l = L();
@@ -1693,7 +1693,7 @@ dim_range :
}
;
-dim_exp :
+dim_exp:
literal
{
$$= append_symbol(L(), $1);
@@ -1708,6 +1708,7 @@ dim_exp :
{
$$= append_symbol(L(), NULL);
}
+ ;
serial_opt_params:
/* empty: return the defaults */
@@ -3181,12 +3182,15 @@ table_ref:
append_symbol($2->data.lval, $4); }
*/
| array_dim_ref { /* allow "s1.a1[x][1:2]" */
- $$ = _symbol_create_symbol( SQL_ARRAY, $1);
+ dlist *l = L();
+ append_symbol(l, $1);
+ append_symbol(l, NULL);
+ $$ = _symbol_create_list( SQL_ARRAY, l);
}
| array_dim_ref table_name { /* allow "s1.a1[x][1:2] AS <ident>" */
dlist *l = L();
- l = append_symbol(l, $1);
- l = append_symbol(l, $2);
+ append_symbol(l, $1);
+ append_symbol(l, $2);
$$ = _symbol_create_list( SQL_ARRAY, l);
}
@@ -3234,14 +3238,17 @@ opt_group_by_clause:
/* empty */ { $$ = NULL; }
| sqlGROUP BY column_ref_commalist { $$ = _symbol_create_list( SQL_GROUPBY,
$3 );}
| sqlGROUP BY group_ref_commalist {
+ /*
dlist *l = L();
- l= append_list(l,$3);
- l= append_int(l,0);
+ append_list(l,$3);
+ append_int(l,0);
$$ = _symbol_create_list( SQL_GROUPBY, l );}
+ */
+ $$ = _symbol_create_list( SQL_GROUPBY, append_int($3,0) );}
| sqlGROUP BY DISTINCT group_ref_commalist {
dlist *l = L();
- l= append_list(l,$4);
- l= append_int(l,1);
+ append_list(l,$4);
+ append_int(l,1);
$$ = _symbol_create_list( SQL_GROUPBY, l);}
;
@@ -3252,9 +3259,8 @@ group_ref_commalist:
;
group_item:
- array_dim_ref { $$ = _symbol_create_symbol( SQL_ARRAY_INDEX, $1); }
- | array_cell_ref { $$ = _symbol_create_symbol(SQL_COLUMN, $1); }
-/* | column_ref { $$ = _symbol_create_list(SQL_COLUMN, $1); } */
+ array_dim_ref { $$ = $1; }
+ | array_cell_ref { $$ = $1; }
;
column_ref_commalist:
@@ -3653,8 +3659,8 @@ value_exp:
array_dim_ref:
qname index_exp_list {
dlist *l = L();
- l = append_list(l, $1);
- l = append_list(l, $2);
+ append_list(l, $1);
+ append_list(l, $2);
$$ = _symbol_create_list( SQL_ARRAY_INDEX, l);
}
;
@@ -3664,9 +3670,9 @@ array_dim_ref:
array_cell_ref:
array_dim_ref '.' ident {
dlist *l = L();
- l = append_symbol(l, $1);
- l = append_string(l, $3);
- $$ = _symbol_create_list( SQL_ARRAY_INDEX, l);
+ append_symbol(l, $1);
+ append_string(l, $3);
+ $$ = _symbol_create_list( SQL_COLUMN, l);
}
;
@@ -4460,45 +4466,41 @@ column_ref:
L(), $1), $3), $5);}
;
-index_exp_list :
+index_exp_list:
index_exp
{
- $$= $1;
+ $$= append_list(L(), $1);
}
| index_exp_list index_exp
{
- $$= append_list($1,$2);
+ $$ = append_list($1, $2);
}
-
-index_exp :
+;
+
+index_exp:
'[' index_term ':' index_term ':' index_term ']'
{
dlist *l = L();
- append_list(l, $2);
- append_list(l, $4);
- $$ = append_list(l, $6);
+ append_symbol(l, $2);
+ append_symbol(l, $4);
+ $$ = append_symbol(l, $6);
}
| '[' index_term ':' index_term ']'
{
dlist *l = L();
- append_list(l, $2);
- $$ = append_list(l, $4);
+ append_symbol(l, $2);
+ $$ = append_symbol(l, $4);
}
| '[' index_term ']'
{
- $$= append_list(L(), $2);
+ $$= append_symbol(L(), $2);
}
;
-index_term :
- scalar_exp
- {
- $$= append_symbol(L(), $1);
- }
- | '*'
- {
- $$= append_symbol(L(), NULL);
- }
+index_term:
+ scalar_exp { $$= $1; }
+ | '*' { $$= NULL; }
+;
cast_exp:
CAST '(' cast_value AS data_type ')'
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list