summaryrefslogtreecommitdiff
path: root/parse.h
diff options
context:
space:
mode:
Diffstat (limited to 'parse.h')
-rw-r--r--parse.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/parse.h b/parse.h
new file mode 100644
index 0000000..44d1c0e
--- /dev/null
+++ b/parse.h
@@ -0,0 +1,29 @@
+#ifndef PARSE
+#define PARSE
+
+/* keyword hashes */
+#define VAR_H 2317739966u
+#define DEFINE_H 1788839250
+
+typedef enum SymbolProvince {
+ NO_PROVINCE,
+ KEY_REF,
+ LITERAL
+} prov_t;
+typedef struct Symbol {
+ prov_t province;
+ void* name;
+ struct Symbol** args;
+ int argCount;
+} sym_t;
+typedef struct SymbolSet {
+ sym_t** symbols;
+ int count;
+} symset_t;
+void symbol_add_arg(sym_t* symbol, sym_t* arg);
+void symset_add_symbol(symset_t* symbolSet, sym_t* symbol);
+symset_t* parse_symbols(char** str);
+sym_t* parse_symbol_final(char* str);
+void write_symbol_visual(sym_t* symbol, int offset);
+
+#endif