commit 64903e2e887e33cf2f2d0683c4a51fa91d5c45e2
parent 3b5b1e25c827f153004c3b74b2a9c10538ed0909
Author: keyle <keyle@capsule.org>
Date: Sat, 9 May 2026 16:58:33 +1000
lexer wip
Diffstat:
4 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/makefile b/makefile
@@ -1,5 +1,6 @@
cmp = clang
-warn = -Wall -Wextra -Werror
+warn = -Wall -Wextra
+pedantic = -Werror
release = -02
sane = -fsanitize=address
cfiles = src/**.c
diff --git a/src/common.h b/src/common.h
@@ -1 +1,60 @@
#pragma once
+
+typedef enum TokenType {
+ TERMINUS = 4,
+ IDENT,
+ KEYWORD,
+ SYMBOL,
+ PLUS,
+ MIN,
+ STAR,
+ SLASH,
+ BACKSLASH,
+ PERCENT,
+ LBRACE,
+ RBRACE,
+ LPAREN,
+ RPAREN,
+ EQ_EQ,
+ BANG_EQ,
+ EQ_GT,
+ LT_EQ,
+ LT_DASH,
+ DASH_GT,
+ EQ,
+ BANG,
+ NAMESPACE
+} TokenType;
+
+typedef enum Keyword {
+ IF = 130,
+ ELSE,
+ WHILE,
+ OPT,
+ LAZY,
+ MATCH,
+ DEF,
+ FOR,
+ EACH,
+ SOME,
+ NONE,
+ OK,
+ ERR,
+ IN,
+ IS,
+ CAST
+} Keyword;
+
+typedef struct Token {
+ TokenType type;
+ union Value {
+ char* as_string;
+ char as_char;
+ int as_int;
+ int as_bool;
+ } Value;
+ const char* path;
+ const char* filename;
+ int line;
+ int col;
+} Token;
diff --git a/src/lexer.c b/src/lexer.c
@@ -0,0 +1,6 @@
+#include "lexer.h"
+
+Token* lex(const char* code, const char* path, const char* filename) {
+ Token* t = {};
+ return t;
+}
diff --git a/src/lexer.h b/src/lexer.h
@@ -1 +1,5 @@
#pragma once
+
+#include "common.h"
+
+Token* lex(const char* code, const char* path, const char* filename);