diff options
Diffstat (limited to 'src/parser/parser.c')
| -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); |
