summaryrefslogtreecommitdiff
path: root/lexer.h
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2018-08-01 01:00:54 +1200
committerDavid Phillips <david@sighup.nz>2018-08-01 01:00:54 +1200
commit645acc193a739ab771fb46e8ec2cf6cd87909597 (patch)
tree482c5d59220af7ae2cc8f34a860174f4b1affd01 /lexer.h
parent96776c831e9d2fcbd69bc1e0faa16026c5ed25b0 (diff)
downloadhence-645acc193a739ab771fb46e8ec2cf6cd87909597.tar.xz
WIP: Implement more robust, separated lexer+parser passes
Diffstat (limited to 'lexer.h')
-rw-r--r--lexer.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/lexer.h b/lexer.h
new file mode 100644
index 0000000..542dd2c
--- /dev/null
+++ b/lexer.h
@@ -0,0 +1,33 @@
+#define MAX_IDENT_LENGTH 128
+
+enum TOKEN_TYPE {
+ /* Keywords */
+ TOK_MODULE,
+ TOK_INPUT,
+ TOK_EXPR,
+ TOK_COLON,
+ TOK_EOL,
+ TOK_OR,
+ TOK_AND,
+ TOK_XOR,
+ TOK_NOT,
+
+ /* Etc */
+ TOK_IDENT
+};
+
+struct location {
+ size_t line;
+ size_t column;
+};
+
+struct token {
+ enum TOKEN_TYPE type;
+ struct location loc;
+ char value[MAX_IDENT_LENGTH];
+ struct token *next;
+};
+
+struct token* lex_file(FILE*);
+const char *get_token_description(enum TOKEN_TYPE);
+