diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-10 16:48:43 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-10 16:48:43 +0200 |
commit | 5a54699f18e3ac52fe18d854f6d57be6795ed8e5 (patch) | |
tree | 9c73cd95b8486e49b6258ff93ffbebed611dec02 /src/parse.hpp | |
parent | a5d1689bc7e05983a44cef5310ae7c50e10fefce (diff) | |
download | solar-5a54699f18e3ac52fe18d854f6d57be6795ed8e5.tar solar-5a54699f18e3ac52fe18d854f6d57be6795ed8e5.zip |
Replace hand-written parser by one generated by solar itself :D
Diffstat (limited to 'src/parse.hpp')
-rw-r--r-- | src/parse.hpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/parse.hpp b/src/parse.hpp new file mode 100644 index 0000000..567a38c --- /dev/null +++ b/src/parse.hpp @@ -0,0 +1,28 @@ +#pragma once + + +#include "grammar.hpp" + +enum parse_token_t { + TOK_BLOCK = 256, + TOK_CHAR = 257, + TOK_EXTRA_ARG = 258, + TOK_HEADER = 259, + TOK_SOURCE = 260, + TOK_SYMBOL = 261, + TOK_SYMBOL_LC = 262, + TOK_SYMBOL_UC = 263, + TOK_TYPE = 264, +}; + +typedef struct parse_token_value { + char c; + std::string * str; +} parse_token_value_t; + +typedef struct parse_context parse_context_t; + +parse_context_t * parse_alloc(void *(*alloc_func)(size_t)); +void parse_free(parse_context_t *parser, void (*free_func)(void *)); + +int parse_push(parse_context_t *parser, int token, const parse_token_value_t *value, __attribute__((unused)) solar::grammar_t * grammar); |