Better logging in tokenstream

This commit is contained in:
2026-04-24 20:40:31 +02:00
parent 451a9a2a22
commit 0306530fe8
8 changed files with 58 additions and 17 deletions
+7 -2
View File
@@ -1,9 +1,11 @@
#include "token.h"
#include "log.h"
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct TokenStream {
const char* filename;
const char* code;
size_t pos;
int line;
@@ -100,7 +102,7 @@ static Token create_token(TokenStream* ts, TokenType type, const char* text, siz
return t;
}
TokenStream* tokenstream_open(const char* code) {
TokenStream* tokenstream_open(const char* filename, const char* code) {
if (code == NULL) return NULL;
TokenStream* ts = (TokenStream*)malloc(sizeof(struct TokenStream));
@@ -108,6 +110,7 @@ TokenStream* tokenstream_open(const char* code) {
return NULL;
}
ts->filename = filename ? filename : "unknown";
ts->code = code;
ts->pos = 0;
ts->line = 1;
@@ -187,5 +190,7 @@ Token tokenstream_next(TokenStream* ts) {
}
/* Unknown character */
return create_token(ts, TOKEN_UNKNOWN, start_text, 1, start_line, start_column, line_start);
Token t = create_token(ts, TOKEN_UNKNOWN, start_text, 1, start_line, start_column, line_start);
log_on_line(ts->filename, t.line_text, t.line, t.column, t.column, "unexpected token '%c'", c);
return t;
}