X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Fparser%2Fparser.c;h=e3073a9a627534d6ea5c5ca2e6ac3859a0eeeafc;hp=d22ce5f3116ee4fc51fe35468b1c8be3911e2e51;hb=195f73cdb0c1087bf3f3a82267204fca9eb3104c;hpb=c8d51914ef24f01f935d2853d57f05d0b0a0af9e diff --git a/src/parser/parser.c b/src/parser/parser.c index d22ce5f..e3073a9 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -96,16 +96,13 @@ sdb_parser_parse(const char *query, int len, sdb_strbuf_t *errbuf) iter = sdb_llist_get_iter(yyextra.parsetree); while (sdb_llist_iter_has_next(iter)) { - sdb_conn_node_t *node; - node = SDB_CONN_NODE(sdb_llist_iter_get_next(iter)); - assert(node); - /* TODO - if (sdb_parser_analyze(node, errbuf)) { + sdb_ast_node_t *node; + node = SDB_AST_NODE(sdb_llist_iter_get_next(iter)); + if (sdb_parser_analyze(node, errbuf) < 0) { sdb_llist_iter_destroy(iter); sdb_llist_destroy(yyextra.parsetree); return NULL; } - */ } sdb_llist_iter_destroy(iter); return yyextra.parsetree; @@ -143,6 +140,11 @@ sdb_parser_parse_conditional(const char *cond, int len, sdb_strbuf_t *errbuf) assert(SDB_AST_IS_LOGICAL(node)); sdb_llist_destroy(yyextra.parsetree); + + if (sdb_parser_analyze_conditional(node, errbuf)) { + sdb_object_deref(SDB_OBJ(node)); + return NULL; + } return node; } /* sdb_parser_parse_conditional */ @@ -178,6 +180,11 @@ sdb_parser_parse_arith(const char *expr, int len, sdb_strbuf_t *errbuf) assert(SDB_AST_IS_ARITHMETIC(node)); sdb_llist_destroy(yyextra.parsetree); + + if (sdb_parser_analyze_arith(node, errbuf)) { + sdb_object_deref(SDB_OBJ(node)); + return NULL; + } return node; } /* sdb_parser_parse_arith */