Update of /cvsroot/monetdb/sql/src/server
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv29728/src/server

Modified Files:
        sql_parser.mx sql_scan.mx 
Log Message:
some more short hand bit wise operators. Not jet the xor as there is a debat 
about using ^ for power and # for xor.



U sql_scan.mx
Index: sql_scan.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_scan.mx,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -d -r1.153 -r1.154
--- sql_scan.mx 8 Sep 2009 09:51:21 -0000       1.153
+++ sql_scan.mx 13 Sep 2009 11:22:34 -0000      1.154
@@ -791,11 +791,12 @@
                lc->started = 1;
                utf8_putchar(lc, next); 
                return scanner_token(lc, cur);
+       case '*':
        case '?':
        case '%':
        case '^':
        case '+':
-       case '*':
+       case '&':
        case '/':
        case '(':
        case ')':
@@ -816,6 +817,8 @@
                        return scanner_token( lc, COMPARISON);
                } else if (cur == '>') {
                        return scanner_token( lc, COMPARISON);
+               } else if (cur == '<') {
+                       return scanner_token( lc, LEFT_SHIFT);
                } else {
                        utf8_putchar(lc, cur); 
                        return scanner_token( lc, COMPARISON);
@@ -823,7 +826,9 @@
        case '>':
                lc->started = 1;
                cur = scanner_getc(lc);
-               if (cur != '=') {
+               if (cur == '>') {
+                       return scanner_token( lc, RIGHT_SHIFT);
+               } else if (cur != '=') {
                        utf8_putchar(lc, cur); 
                        return scanner_token( lc, COMPARISON);
                } else {
@@ -845,6 +850,9 @@
                cur = scanner_getc(lc);
                if (cur == '|') {
                        return scanner_token(lc, CONCATSTRING);
+               } else {
+                       utf8_putchar(lc, cur); 
+                       return scanner_token(lc, '|');
                }
        }
        (void)sql_error( c, 3, "unexpected symbol (%c)", cur);

U sql_parser.mx
Index: sql_parser.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_parser.mx,v
retrieving revision 1.319
retrieving revision 1.320
diff -u -d -r1.319 -r1.320
--- sql_parser.mx       8 Sep 2009 09:51:21 -0000       1.319
+++ sql_parser.mx       13 Sep 2009 11:22:32 -0000      1.320
@@ -679,8 +679,9 @@
 %left <operation> '(' ')'
 %left <sval> COMPARISON /* <> < > <= >= */
 %left <operation> '='
+%left <operation> '&' '|' '^' LEFT_SHIFT RIGHT_SHIFT
 %left <operation> '+' '-'
-%left <operation> '*' '/' '%' '^'
+%left <operation> '*' '/' '%' 
 %left <operation> SUBSTRING CONCATSTRING POSITION
 %right UMINUS
 
@@ -3079,7 +3080,7 @@
                        $$ = _symbol_create_symbol(SQL_NOT, $2); }
  |  pred_exp   { $$ = $1; }
  ;
-       
+
 opt_order_by_clause:
     /* empty */                          { $$ = NULL; }
  |  ORDER BY sort_specification_list
@@ -3310,6 +3311,34 @@
                          append_symbol(l, $1);
                          append_symbol(l, $3);
                          $$ = _symbol_create_list( SQL_BINOP, l ); }
+ |  scalar_exp '&' scalar_exp
+                       { dlist *l = L();
+                         append_list(l, 
+                               append_string(L(), sa_strdup(SA, "bit_and")));
+                         append_symbol(l, $1);
+                         append_symbol(l, $3);
+                         $$ = _symbol_create_list( SQL_BINOP, l ); }
+ |  scalar_exp '|' scalar_exp
+                       { dlist *l = L();
+                         append_list(l, 
+                               append_string(L(), sa_strdup(SA, "bit_or")));
+                         append_symbol(l, $1);
+                         append_symbol(l, $3);
+                         $$ = _symbol_create_list( SQL_BINOP, l ); }
+ |  scalar_exp LEFT_SHIFT scalar_exp
+                       { dlist *l = L();
+                         append_list(l, 
+                               append_string(L(), sa_strdup(SA, 
"left_shift")));
+                         append_symbol(l, $1);
+                         append_symbol(l, $3);
+                         $$ = _symbol_create_list( SQL_BINOP, l ); }
+ |  scalar_exp RIGHT_SHIFT scalar_exp
+                       { dlist *l = L();
+                         append_list(l, 
+                               append_string(L(), sa_strdup(SA, 
"right_shift")));
+                         append_symbol(l, $1);
+                         append_symbol(l, $3);
+                         $$ = _symbol_create_list( SQL_BINOP, l ); }
  |  '+' scalar_exp %prec UMINUS 
                        { $$ = $2; }
  |  '-' scalar_exp %prec UMINUS 


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to