index a80969ccb14fb746ddc0a3cad3e7a9f5c7dbb481..d78ab20bade0e726e769fc595ec9c7bc0599306d 100644 (file)
#ifndef SDB_FRONTEND_PARSER_H
#define SDB_FRONTEND_PARSER_H 1
+#include "core/store.h"
#include "utils/llist.h"
#ifdef __cplusplus
extern "C" {
#endif
+/* parser modes */
+enum {
+ SDB_PARSE_DEFAULT = 0,
+ SDB_PARSE_COND = 1 << 1,
+ SDB_PARSE_EXPR = 1 << 2,
+};
+
/* YY_EXTRA data */
typedef struct {
/* list of sdb_conn_node_t objects */
sdb_llist_t *parsetree;
+
+ /* parser mode */
+ int mode;
} sdb_fe_yyextra_t;
/* see yyscan_t */
typedef void *sdb_fe_yyscan_t;
sdb_fe_yyscan_t
-sdb_fe_scanner_init(const char *str, sdb_fe_yyextra_t *yyext);
+sdb_fe_scanner_init(const char *str, int len, sdb_fe_yyextra_t *yyext);
void
sdb_fe_scanner_destroy(sdb_fe_yyscan_t scanner);
int
sdb_fe_yyparse(sdb_fe_yyscan_t scanner);
+sdb_store_matcher_t *
+sdb_fe_parse_matcher(const char *cond, int len);
+
+sdb_store_expr_t *
+sdb_fe_parse_expr(const char *expr, int len);
+
#ifdef __cplusplus
} /* extern "C" */
#endif