From 49afce6095b199c2bc4cdfd6f2ab58d7ed5d230a Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 23 Apr 2018 23:26:43 -0400 Subject: [PATCH] use last_column instead of first_column for error column tracking --- src/parser/parser.c | 8 ++++---- src/parser/parser.l | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/parser/parser.c b/src/parser/parser.c index 117f257..5eb6213 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -85,7 +85,7 @@ static void display_error_source(int line, int column) { file[i] = '\0'; fprintf(stderr, "%s\n", line_begin); - for (int i = 0; i < column; i++) + for (int i = 0; i < (column - 1); i++) { fprintf(stderr, " "); } @@ -101,7 +101,7 @@ void handle_parse_error(const char * str, const YYLTYPE * yylloc) { fprintf(stderr, "error: %s (line %d, column %d)\n", str, - yylloc->first_line, - yylloc->first_column); - display_error_source(yylloc->first_line, yylloc->first_column); + yylloc->last_line, + yylloc->last_column); + display_error_source(yylloc->last_line, yylloc->last_column); } diff --git a/src/parser/parser.l b/src/parser/parser.l index 04fda0f..519d8b4 100644 --- a/src/parser/parser.l +++ b/src/parser/parser.l @@ -11,6 +11,7 @@ #define YY_USER_ACTION \ do { \ yylloc->first_column += yyleng; \ + yylloc->last_column += yyleng; \ *yylval = Node_new(NODE_TYPE_TOKEN); \ (*yylval)->token.fname = current_file; \ (*yylval)->token.line = current_line; \ @@ -181,9 +182,9 @@ L?\" { } \n { yylloc->first_line++; - yylloc->first_column = 0; + yylloc->first_column = 1; yylloc->last_line++; - yylloc->last_column = 0; + yylloc->last_column = 1; current_line++; } [ \t\v] /* ignore whitespace */