aboutsummaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/parser.c6
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);