From f2bc5274bb55bc2b180efae274ada107ea4716d1 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Fri, 14 Apr 2023 23:38:43 +0200 Subject: parser: Show filepath row and col when parsing fails In order to find out where a parsing error occurred, this patch introduces the exactly location following the format 'file:row:col'. Signed-off-by: Johnny Richard --- src/parser.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/parser.c') diff --git a/src/parser.c b/src/parser.c index 5d2a734..4867201 100644 --- a/src/parser.c +++ b/src/parser.c @@ -38,12 +38,22 @@ expected_token(parser_t *parser, token_kind_t kind) lexer_next_token(parser->lexer, &token); if (token.kind == TOKEN_EOF) { - fprintf(stderr, "[ERROR]: expected '%s' but got end of file\n", token_kind_to_str(kind)); + fprintf( + stderr, + "%s:%d:%d: [ERROR]: expected '%s' but got end of file\n", + token.filepath, token.row + 1, token.col + 1, + token_kind_to_str(kind) + ); exit(EXIT_FAILURE); } if (token.kind != kind) { - fprintf(stderr, "[ERROR]: expected '%s' but got '%s'\n", token_kind_to_str(kind), token_kind_to_str(token.kind)); + fprintf( + stderr, + "%s:%d:%d: [ERROR]: expected '%s' but got '%s'\n", + token.filepath, token.row + 1, token.col + 1, + token_kind_to_str(kind), token_kind_to_str(token.kind) + ); exit(EXIT_FAILURE); } -- cgit v1.2.3