commit 6a8bfd1a72a665b1032d14999469b217dded3078
parent d4d06f25ad81a9ab5bfe2cc9d01391eb48b828bd
Author: citbl <citbl@citbl.org>
Date: Wed, 13 May 2026 23:18:42 +1000
refac
Diffstat:
7 files changed, 75 insertions(+), 74 deletions(-)
diff --git a/src/common.h b/src/common.h
@@ -1,31 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "token.h"
-
-/////////////////////////////////////////////////
-
-typedef struct Lexer_State {
- size_t pos;
- size_t line;
- size_t col;
-} Lexer_State;
-
-typedef struct Lexer {
- const char* code;
- size_t code_len;
- const char* path;
- const char* filename;
- Lexer_State state;
- Token* tokens;
- size_t len;
- size_t cap;
-} Lexer;
-
-/////////////////////////////////////////////////
-
-// void check(bool condition, const char* message);
diff --git a/src/lexer.c b/src/lexer.c
@@ -11,46 +11,6 @@ static void add_token(Lexer* lex, Token t)
ARRAY_PUSH(lex->tokens, lex->len, lex->cap, t);
}
-void print_tokens(Lexer* lex)
-{
- Token t;
- Token_Type typ;
- size_t i;
-
- printf("------- print tokens (%zu) -------\n", lex->len);
-
- for (i = 0; i < lex->len; i++) {
- t = lex->tokens[i];
- typ = t.type;
-
- printf("%s: %zu:%zu ", t.filename, t.line, t.col);
-
- switch (typ) {
- case LIT_STRING:
- printf("STRING LITERAL: %s\n", lex->tokens[i].lexeme.value);
- break;
- case LIT_DECIMAL:
- printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value);
- break;
- case LIT_INT:
- printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value);
- break;
- case EQ:
- printf("EQ =\n");
- break;
- case SEMICOL:
- printf("SEMICOL ;\n");
- break;
- case IDENT:
- printf("IDENT: %s\n", lex->tokens[i].lexeme.value);
- break;
- default:
- printf("print_tokens: unhandled token %i\n", typ);
- break;
- }
- }
-}
-
static void add_to_string(Token* tok, char c)
{
Str* str = &tok->lexeme;
diff --git a/src/lexer.h b/src/lexer.h
@@ -1,6 +1,31 @@
#pragma once
-#include "common.h"
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "token.h"
+
+/////////////////////////////////////////////////
+
+typedef struct Lexer_State {
+ size_t pos;
+ size_t line;
+ size_t col;
+} Lexer_State;
+
+typedef struct Lexer {
+ const char* code;
+ size_t code_len;
+ const char* path;
+ const char* filename;
+ Lexer_State state;
+ Token* tokens;
+ size_t len;
+ size_t cap;
+} Lexer;
+
+/////////////////////////////////////////////////
-void print_tokens(Lexer* l);
Lexer* lexer_lex(Lexer* lexer);
diff --git a/src/lexer_tools.c b/src/lexer_tools.c
@@ -0,0 +1,42 @@
+#include "lexer.h"
+
+void print_tokens(Lexer* lex)
+{
+ Token t;
+ Token_Type typ;
+ size_t i;
+
+ printf("------- print tokens (%zu) -------\n", lex->len);
+
+ for (i = 0; i < lex->len; i++) {
+ t = lex->tokens[i];
+ typ = t.type;
+
+ printf("%s: %zu:%zu ", t.filename, t.line, t.col);
+
+ switch (typ) {
+ case LIT_STRING:
+ printf("STRING LITERAL: %s\n", lex->tokens[i].lexeme.value);
+ break;
+ case LIT_DECIMAL:
+ printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value);
+ break;
+ case LIT_INT:
+ printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value);
+ break;
+ case EQ:
+ printf("EQ =\n");
+ break;
+ case SEMICOL:
+ printf("SEMICOL ;\n");
+ break;
+ case IDENT:
+ printf("IDENT: %s\n", lex->tokens[i].lexeme.value);
+ break;
+ default:
+ printf("print_tokens: unhandled token %i\n", typ);
+ break;
+ }
+ }
+}
+
diff --git a/src/lexer_tools.h b/src/lexer_tools.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "lexer.h"
+
+void print_tokens(Lexer*);
diff --git a/src/main.c b/src/main.c
@@ -2,6 +2,7 @@
#include <string.h>
#include "lexer.h"
+#include "lexer_tools.h"
#include "utils.h"
int main(int argc, char** args)
diff --git a/src/utils.c b/src/utils.c
@@ -1,5 +1,4 @@
#include "utils.h"
-#include "common.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>