aboutsummaryrefslogtreecommitdiff
path: root/src/lexer/lexer.h
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-30 02:15:04 +0200
committerhachem <im@hachem.wtf>2026-08-30 02:15:04 +0200
commit8fd64902c7752a9607974b093cd1946bc5ff79d6 (patch)
tree36d0274b2b45bae3d1201da0f5c045161873ddcd /src/lexer/lexer.h
parentd235876f94f84dca15520a20bb476b916b927afb (diff)
add: start basic work on the lexer
Diffstat (limited to 'src/lexer/lexer.h')
-rw-r--r--src/lexer/lexer.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/lexer/lexer.h b/src/lexer/lexer.h
new file mode 100644
index 0000000..4c40354
--- /dev/null
+++ b/src/lexer/lexer.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#include <stddef.h>
+#include <stdint.h>
+
+enum TokenType
+{
+ TOKEN_EOF,
+ TOKEN_IDENTIFIER,
+ TOKEN_INTEGER,
+
+ TOKEN_EQUAL,
+ TOKEN_PLUS,
+ TOKEN_MINUS,
+ TOKEN_STAR,
+ TOKEN_SLASH,
+ TOKEN_CARET,
+ TOKEN_DOT,
+ TOKEN_COMMA,
+ TOKEN_COLON,
+ TOKEN_LEFT_PAREN,
+ TOKEN_RIGHT_PAREN,
+ TOKEN_LEFT_BRACKET,
+ TOKEN_RIGHT_BRACKET,
+ TOKEN_LEFT_BRACE,
+ TOKEN_RIGHT_BRACE,
+
+ TOKEN_UNKNOWN,
+};
+
+struct Token
+{
+ enum TokenType type;
+ const char* start;
+ size_t length;
+ uint32_t line;
+};
+
+struct Lexer
+{
+ const char* source;
+ const char* current;
+ uint32_t line;
+};
+
+struct Lexer create_lexer(const char* source);
+struct Token scan_token(struct Lexer* lexer);
+const char* token_type_name(enum TokenType type);