use last_column instead of first_column for error column tracking
This commit is contained in:
parent
45de80c852
commit
49afce6095
@ -85,7 +85,7 @@ static void display_error_source(int line, int column)
|
|||||||
{
|
{
|
||||||
file[i] = '\0';
|
file[i] = '\0';
|
||||||
fprintf(stderr, "%s\n", line_begin);
|
fprintf(stderr, "%s\n", line_begin);
|
||||||
for (int i = 0; i < column; i++)
|
for (int i = 0; i < (column - 1); i++)
|
||||||
{
|
{
|
||||||
fprintf(stderr, " ");
|
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",
|
fprintf(stderr, "error: %s (line %d, column %d)\n",
|
||||||
str,
|
str,
|
||||||
yylloc->first_line,
|
yylloc->last_line,
|
||||||
yylloc->first_column);
|
yylloc->last_column);
|
||||||
display_error_source(yylloc->first_line, yylloc->first_column);
|
display_error_source(yylloc->last_line, yylloc->last_column);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#define YY_USER_ACTION \
|
#define YY_USER_ACTION \
|
||||||
do { \
|
do { \
|
||||||
yylloc->first_column += yyleng; \
|
yylloc->first_column += yyleng; \
|
||||||
|
yylloc->last_column += yyleng; \
|
||||||
*yylval = Node_new(NODE_TYPE_TOKEN); \
|
*yylval = Node_new(NODE_TYPE_TOKEN); \
|
||||||
(*yylval)->token.fname = current_file; \
|
(*yylval)->token.fname = current_file; \
|
||||||
(*yylval)->token.line = current_line; \
|
(*yylval)->token.line = current_line; \
|
||||||
@ -181,9 +182,9 @@ L?\" {
|
|||||||
}
|
}
|
||||||
\n {
|
\n {
|
||||||
yylloc->first_line++;
|
yylloc->first_line++;
|
||||||
yylloc->first_column = 0;
|
yylloc->first_column = 1;
|
||||||
yylloc->last_line++;
|
yylloc->last_line++;
|
||||||
yylloc->last_column = 0;
|
yylloc->last_column = 1;
|
||||||
current_line++;
|
current_line++;
|
||||||
}
|
}
|
||||||
[ \t\v] /* ignore whitespace */
|
[ \t\v] /* ignore whitespace */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user