From ce9f0d32c33333161cf9a5c2b7446d80fa0f13b5 Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 31 Aug 2026 02:01:44 +0200 Subject: feat: add diagnostics module with source-anchored caret errors --- src/parser/parser.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/parser') diff --git a/src/parser/parser.c b/src/parser/parser.c index 7ec4474..beb6b04 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -2,11 +2,13 @@ #include #include +#include "diag/diag.h" #include "parser/parser.h" struct Parser { struct Lexer* lexer; + struct Source source; struct Token current; struct Token previous; bool had_error; @@ -25,7 +27,7 @@ static bool check(struct Parser* parser, enum TokenType type) static void error_at(struct Parser* parser, struct Token token, const char* message) { - fprintf(stderr, "error: line %u: %s\n", token.line, message); + report_error(parser->source, token, message); parser->had_error = true; } @@ -509,6 +511,8 @@ bool parse_program(struct Lexer* lexer, struct Program* out) { struct Parser parser; parser.lexer = lexer; + parser.source.name = lexer->name; + parser.source.text = lexer->source; parser.had_error = false; advance_parser(&parser); -- cgit v1.3