summaryrefslogtreecommitdiffstats
path: root/src/parse.hpp
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2015-04-10 16:48:43 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2015-04-10 16:48:43 +0200
commit5a54699f18e3ac52fe18d854f6d57be6795ed8e5 (patch)
tree9c73cd95b8486e49b6258ff93ffbebed611dec02 /src/parse.hpp
parenta5d1689bc7e05983a44cef5310ae7c50e10fefce (diff)
downloadsolar-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.hpp28
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);