Better logging in tokenstream
This commit is contained in:
+7
-2
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user