X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Ffrontend%2Fgrammar.y;h=cc0d5b94d475d6ccce027aab7e3601e957ecdc1a;hb=9a70712af541f43df7a2fb0b31442bec587eba8d;hp=4dda3c56b99f1cfd3e7b646b6595012a394550ff;hpb=83d25f827a46dc37e56857957a317fb06fb15a46;p=sysdb.git diff --git a/src/frontend/grammar.y b/src/frontend/grammar.y index 4dda3c5..cc0d5b9 100644 --- a/src/frontend/grammar.y +++ b/src/frontend/grammar.y @@ -228,7 +228,7 @@ statements: n = SDB_CONN_NODE(sdb_object_create_dT(/* name = */ NULL, conn_expr_t, conn_expr_destroy)); n->cmd = CONNECTION_EXPR; - CONN_EXPR($$)->expr = $1; + CONN_EXPR(n)->expr = $1; sdb_llist_append(pt, SDB_OBJ(n)); sdb_object_deref(SDB_OBJ(n)); @@ -450,7 +450,7 @@ compare_matcher: sdb_object_deref(SDB_OBJ($3)); } | - IDENTIFIER '[' IDENTIFIER ']' cmp expression + IDENTIFIER '[' STRING ']' cmp expression { $$ = sdb_store_matcher_parse_cmp($1, $3, $5, $6); free($1); $1 = NULL; @@ -458,23 +458,16 @@ compare_matcher: sdb_object_deref(SDB_OBJ($6)); } | - IDENTIFIER '[' IDENTIFIER ']' IS NULL_T + expression IS NULL_T { - $$ = sdb_store_matcher_parse_cmp($1, $3, "IS", NULL); - free($1); $1 = NULL; - free($3); $3 = NULL; + $$ = sdb_store_isnull_matcher($1); + sdb_object_deref(SDB_OBJ($1)); } | - IDENTIFIER '[' IDENTIFIER ']' IS NOT NULL_T + expression IS NOT NULL_T { - sdb_store_matcher_t *m; - m = sdb_store_matcher_parse_cmp($1, $3, "IS", NULL); - free($1); $1 = NULL; - free($3); $3 = NULL; - - /* sdb_store_inv_matcher return NULL if m==NULL */ - $$ = sdb_store_inv_matcher(m); - sdb_object_deref(SDB_OBJ(m)); + $$ = sdb_store_isnnull_matcher($1); + sdb_object_deref(SDB_OBJ($1)); } ; @@ -533,7 +526,7 @@ expression: $$ = sdb_store_expr_fieldvalue(field); } | - IDENTIFIER '[' IDENTIFIER ']' + IDENTIFIER '[' STRING ']' { $$ = sdb_store_expr_attrvalue($3); free($1); $1 = NULL;