In the file bison\src\location.c, find the function unsigned location_print (location loc, FILE *out) - and replace it with:
unsigned location_print (location loc, FILE *out) { unsigned res = 0; int end_col = 0 != loc.end.column ? loc.end.column - 1 : 0; res += fprintf (out, "%s", quotearg_n_style (3, escape_quoting_style, loc.start.file)); if(0 <= loc.start.line||loc.start.file != loc.end.file||0 <= loc.end.line) res += fprintf (out, "("); if (0 <= loc.start.line) { res += fprintf (out, "%d", loc.start.line); if (0 <= loc.start.column) res += fprintf (out, ",%d", loc.start.column); } if (loc.start.file != loc.end.file) { // Ignore: Visual Studio can't cope with this case. } if(0 <= loc.start.line||loc.start.file != loc.end.file||0 <= loc.end.line) res += fprintf (out, ")"); return res; }That fixes it for Bison. For Flex, in flex/src/parse.c, change the function line_pinpoint( str, line ) to
void line_pinpoint( str, line ) const char *str; int line; { fprintf( stderr, "%s(%d): %s\n", infilename, line, str ); }
My branch incorporating these changes is here.
No comments:
Post a Comment