Improved error printing torquescript

Added a vector that can lookback across x number of lines in a file, if not a file just print out the error.
This commit is contained in:
marauder2k7 2024-04-27 21:19:56 +01:00
parent f82082f59f
commit 8cf5fac497
4 changed files with 130 additions and 110 deletions

View file

@ -98,7 +98,7 @@
int outtext(char *fmt, ...);
extern int serrors;
extern char linebuf[512];
extern Vector<String> lines;
#define nil 0
#undef YY_ARGS
@ -3352,11 +3352,15 @@ yyreport_syntax_error (const yypcontext_t *ctx)
output += String::ToString("%s %s", i == 0 ? ": expected" : "or", yysymbol_name(expected[i]));
}
if (dStrlen(linebuf) > 1)
if (lines.size() > 0)
{
output += "\n";
output += String::ToString("%5d | %s\n", loc->first_line, linebuf);
output += String::ToString("%5s | %*s", "", loc->first_column, "^");
output += "\n";
for (int i = 0; i < lines.size(); i++)
{
int line = 10 - i;
output += String::ToString("%5d | ", loc->first_line - (line-1)) + lines[i] + "\n";
}
output += String::ToString("%5s | %*s", "", loc->first_column, "^");
}
yyerror(output.c_str());