diff --git a/src/parser/parser.c b/src/parser/parser.c
index de6085fd176b7ae346b9f61d71369d8d3b2d5750..2216045b568891b507dc10ec4365f2c4f8de85ef 100644 (file)
--- a/src/parser/parser.c
+++ b/src/parser/parser.c
#include "sysdb.h"
#include "sysdb.h"
-#include "core/store.h"
-
#include "parser/ast.h"
#include "parser/parser.h"
#include "parser/grammar.h"
#include "parser/ast.h"
#include "parser/parser.h"
#include "parser/grammar.h"
} /* sdb_parser_parse */
sdb_ast_node_t *
} /* 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;
{
sdb_parser_yyscan_t scanner;
sdb_parser_yyextra_t yyextra;
assert(SDB_AST_IS_LOGICAL(node));
sdb_llist_destroy(yyextra.parsetree);
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 *
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;
{
sdb_parser_yyscan_t scanner;
sdb_parser_yyextra_t yyextra;
assert(SDB_AST_IS_ARITHMETIC(node));
sdb_llist_destroy(yyextra.parsetree);
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 */
return node;
} /* sdb_parser_parse_arith */