summaryrefslogtreecommitdiffstats
path: root/src/parse.hpp
diff options
context:
space:
mode:
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);