diff -r 3127ddda2be2 -r f9cff11ae622 stage4/stage4.cc --- a/stage4/stage4.cc Tue Apr 17 17:41:58 2012 +0200 +++ b/stage4/stage4.cc Wed Apr 18 13:29:08 2012 +0100 @@ -48,7 +48,23 @@ #include "stage4.hh" - +#define FIRST_(symbol1, symbol2) (((symbol1)->first_order < (symbol2)->first_order) ? (symbol1) : (symbol2)) +#define LAST_(symbol1, symbol2) (((symbol1)->last_order > (symbol2)->last_order) ? (symbol1) : (symbol2)) +#include + +void stage4err(const char *stage4_generator_id, symbol_c *symbol1, symbol_c *symbol2, const char *errmsg, ...) { + va_list argptr; + va_start(argptr, errmsg); /* second argument is last fixed pamater of stage4err() */ + + fprintf(stderr, "%s:%d-%d..%d-%d: error %s: ", + FIRST_(symbol1,symbol2)->first_file, FIRST_(symbol1,symbol2)->first_line, FIRST_(symbol1,symbol2)->first_column, + LAST_(symbol1,symbol2) ->last_line, LAST_(symbol1,symbol2) ->last_column, + stage4_generator_id); + vfprintf(stderr, errmsg, argptr); + fprintf(stderr, "\n"); + // error_count++; + va_end(argptr); +}