X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Finclude%2Ffrontend%2Fparser.h;h=d78ab20bade0e726e769fc595ec9c7bc0599306d;hb=4b45546f0aa53f9dac7c91a8149c19e118843195;hp=5491e9cac7778c24047ebb71896cdedf44b5781a;hpb=4453841c2411a02cee30d0d12e46f559fb907b7d;p=sysdb.git diff --git a/src/include/frontend/parser.h b/src/include/frontend/parser.h index 5491e9c..d78ab20 100644 --- a/src/include/frontend/parser.h +++ b/src/include/frontend/parser.h @@ -28,15 +28,34 @@ #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_scanner_init(const char *str, int len, sdb_fe_yyextra_t *yyext); void sdb_fe_scanner_destroy(sdb_fe_yyscan_t scanner); @@ -44,6 +63,12 @@ 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