(file) Return to wql.y CVS log (file) (dir) Up to [OMI] / omi / wql

Diff for /omi/wql/wql.y between version 1.2 and 1.3

version 1.2, 2015/04/20 18:10:35 version 1.3, 2015/04/20 18:20:37
Line 31 
Line 31 
     unsigned char boolean;     unsigned char boolean;
 } }
  
   %left WQL_DOT
   %left WQL_COLON
 %left WQL_OR %left WQL_OR
 %left WQL_AND %left WQL_AND
 %nonassoc WQL_NOT %nonassoc WQL_NOT
Line 42 
Line 44 
 %token WQL_WHERE %token WQL_WHERE
 %token WQL_NE %token WQL_NE
 %token WQL_GT %token WQL_GT
 %token WQL_REAL  
 %token WQL_EQ %token WQL_EQ
 %token WQL_SELECT %token WQL_SELECT
 %token WQL_GE %token WQL_GE
 %token WQL_NULL %token WQL_NULL
   %token WQL_LIKE
   %token WQL_ISA
   %token WQL_DOT
   %token WQL_COLON
  
 %token <string> WQL_IDENTIFIER; %token <string> WQL_IDENTIFIER;
 %token <boolean> WQL_BOOLEAN; %token <boolean> WQL_BOOLEAN;
Line 56 
Line 61 
  
 %type <symbol> Operand; %type <symbol> Operand;
  
   %type <symbol> Property;
  
 %% %%
  
Line 78 
Line 84 
     }     }
     | PropertyList     | PropertyList
     {     {
         YACCTRACE(SelectList12);          YACCTRACE(SelectList2);
     }     }
  
 PropertyList PropertyList
Line 280 
Line 286 
         wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = $3;         wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = $3;
         wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = operator;         wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = operator;
     }     }
       | Operand WQL_LIKE Operand
       {
           WQL_Symbol operator;
   
           YACCTRACE(Predicate6);
   
           /* Only WQL LIKE is supported */
           if (wqlstate.wql->dialect != WQL_DIALECT_WQL)
           {
               yyerror("CQL LIKE not supported");
               YYABORT;
           }
   
           if (wqlstate.wql->nsymbols + 3 > WQL_MAX_SYMBOLS)
           {
               yyerror("symbol array overflow");
               YYABORT;
           }
   
           memset(&operator, 0, sizeof(WQL_Symbol));
           operator.type = WQL_TYPE_LIKE;
   
           wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = $1;
           wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = $3;
           wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = operator;
       }
       | WQL_IDENTIFIER WQL_ISA WQL_IDENTIFIER
       {
           WQL_Symbol lhs;
           WQL_Symbol rhs;
           WQL_Symbol operator;
   
           YACCTRACE(Predicate7);
   
           /* Check for symbol stack overflow */
           if (wqlstate.wql->nsymbols + 3 > WQL_MAX_SYMBOLS)
           {
               yyerror("symbol array overflow");
               YYABORT;
           }
   
           /* Left-hand-side (embedded property name) */
           memset(&lhs, 0, sizeof(WQL_Symbol));
           lhs.value.string = $1;
           lhs.type = WQL_TYPE_STRING;
   
           /* Right-hand-side (embedded class name) */
           memset(&rhs, 0, sizeof(WQL_Symbol));
           rhs.value.string = $3;
           rhs.type = WQL_TYPE_STRING;
   
           /* Operator */
           memset(&operator, 0, sizeof(WQL_Symbol));
           operator.type = WQL_TYPE_ISA;
   
           wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = lhs;
           wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = rhs;
           wqlstate.wql->symbols[wqlstate.wql->nsymbols++] = operator;
       }
  
 Operand Operand
     : WQL_BOOLEAN     : WQL_BOOLEAN
Line 306 
Line 371 
         $$.value.string = $1;         $$.value.string = $1;
         $$.type = WQL_TYPE_STRING;         $$.type = WQL_TYPE_STRING;
     }     }
     | WQL_IDENTIFIER  
     {  
         YACCTRACE(Operand5);  
         $$.value.string = $1;  
         $$.type = WQL_TYPE_IDENTIFIER;  
     }  
     | WQL_NULL     | WQL_NULL
     {     {
         YACCTRACE(Operand6);         YACCTRACE(Operand6);
         $$.value.integer = 0;         $$.value.integer = 0;
         $$.type = WQL_TYPE_NULL;         $$.type = WQL_TYPE_NULL;
     }     }
       | Property
       {
           YACCTRACE(Operand7);
           $$ = $1;
       }
  
 %%  Property
       : WQL_IDENTIFIER
       {
           YACCTRACE(Property1);
           $$.value.string = $1;
           $$.value.embeddedClassName = NULL;
           $$.value.embeddedPropertyName = NULL;
           $$.type = WQL_TYPE_IDENTIFIER;
       }
       | WQL_IDENTIFIER WQL_DOT WQL_IDENTIFIER
       {
           MI_Char* str;
           YACCTRACE(Property2);
   
           $$.value.string = $1;
           $$.value.embeddedClassName = NULL;
           $$.value.embeddedPropertyName = $3;
           $$.type = WQL_TYPE_IDENTIFIER;
       }
       | WQL_IDENTIFIER WQL_DOT WQL_IDENTIFIER WQL_COLON WQL_COLON WQL_IDENTIFIER
       {
           MI_Char* str;
           YACCTRACE(Property2);
   
           $$.value.string = $1;
           $$.value.embeddedClassName = $3;
           $$.value.embeddedPropertyName = $6;
           $$.type = WQL_TYPE_IDENTIFIER;
       }


Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

ViewCVS 0.9.2