diff options
| author | hachem <im@hachem.wtf> | 2026-08-31 02:01:44 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-31 02:01:44 +0200 |
| commit | ce9f0d32c33333161cf9a5c2b7446d80fa0f13b5 (patch) | |
| tree | 3ceb2594de443f7928c5300d42c00428778eae11 /src/parser | |
| parent | cf24f576891ece60bdf04928d3c39dd0bbb9b5f6 (diff) | |
feat: add diagnostics module with source-anchored caret errors
Diffstat (limited to 'src/parser')
| -rw-r--r-- | src/parser/parser.c | 6 |
1 files changed, 5 insertions, 1 deletions
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 <stdlib.h> #include <string.h> +#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); |
