Code

frontend/grammar: Added support for the IN operator.
[sysdb.git] / src / frontend / grammar.y
index 78b45d295a1585fe93dfa9e1bb0e9b3bdd504879..23ba07ffaed4a72425173ab890d9eb3d4e690d28 100644 (file)
@@ -92,7 +92,7 @@ sdb_fe_yyerror(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *msg);
 
 %token AND OR IS NOT MATCHING FILTER
 %token CMP_EQUAL CMP_NEQUAL CMP_REGEX CMP_NREGEX
-%token CMP_LT CMP_LE CMP_GE CMP_GT
+%token CMP_LT CMP_LE CMP_GE CMP_GT IN
 %token CONCAT
 
 %token START END
@@ -115,6 +115,7 @@ sdb_fe_yyerror(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *msg);
 %left CMP_EQUAL CMP_NEQUAL
 %left CMP_LT CMP_LE CMP_GE CMP_GT
 %nonassoc CMP_REGEX CMP_NREGEX
+%nonassoc IN
 %left CONCAT
 %nonassoc IS
 %left '+' '-'
@@ -469,6 +470,13 @@ compare_matcher:
                        $$ = sdb_store_isnnull_matcher($1);
                        sdb_object_deref(SDB_OBJ($1));
                }
+       |
+       expression IN expression
+               {
+                       $$ = sdb_store_in_matcher($1, $3);
+                       sdb_object_deref(SDB_OBJ($1));
+                       sdb_object_deref(SDB_OBJ($3));
+               }
        ;
 
 expression: