X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fparser%2Fparser.c;h=2216045b568891b507dc10ec4365f2c4f8de85ef;hb=07dada8e5c614f0ef90fed8e86183ba7acd0e6e8;hp=de6085fd176b7ae346b9f61d71369d8d3b2d5750;hpb=1ea57919cda96d83e7625999019269dffefdb329;p=sysdb.git diff --git a/src/parser/parser.c b/src/parser/parser.c index de6085f..2216045 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -27,8 +27,6 @@ #include "sysdb.h" -#include "core/store.h" - #include "parser/ast.h" #include "parser/parser.h" #include "parser/grammar.h" @@ -109,7 +107,8 @@ sdb_parser_parse(const char *query, int len, sdb_strbuf_t *errbuf) } /* sdb_parser_parse */ sdb_ast_node_t * -sdb_parser_parse_conditional(const char *cond, int len, sdb_strbuf_t *errbuf) +sdb_parser_parse_conditional(int context, + const char *cond, int len, sdb_strbuf_t *errbuf) { sdb_parser_yyscan_t scanner; sdb_parser_yyextra_t yyextra; @@ -140,11 +139,17 @@ 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(context, node, errbuf)) { + sdb_object_deref(SDB_OBJ(node)); + return NULL; + } return node; } /* sdb_parser_parse_conditional */ sdb_ast_node_t * -sdb_parser_parse_arith(const char *expr, int len, sdb_strbuf_t *errbuf) +sdb_parser_parse_arith(int context, + const char *expr, int len, sdb_strbuf_t *errbuf) { sdb_parser_yyscan_t scanner; sdb_parser_yyextra_t yyextra; @@ -175,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(context, node, errbuf)) { + sdb_object_deref(SDB_OBJ(node)); + return NULL; + } return node; } /* sdb_parser_parse_arith */