diff options
author | Akim Demaille <akim@epita.fr> | 2002-07-09 16:24:57 +0000 |
---|---|---|
committer | Akim Demaille <akim@epita.fr> | 2002-07-09 16:24:57 +0000 |
commit | 1a715ef2fcaa8acc91ccc3e62fac830f0552dd29 (patch) | |
tree | dd6acaf3e63c829f65f0742018baee382e2af589 /src/location.h | |
parent | a5d5099417229a48aa18477073266e9aa3b77a8e (diff) | |
download | bison-1a715ef2fcaa8acc91ccc3e62fac830f0552dd29.tar.gz |
* lib/quotearg.h: Protect against multiple inclusions.
* src/location.h (location_t): Add a `file' member.
(LOCATION_RESET, LOCATION_PRINT): Adjust.
* src/complain.c (warn_at, complain_at, fatal_at): Drop
`error_one_per_line' support.
Diffstat (limited to 'src/location.h')
-rw-r--r-- | src/location.h | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/src/location.h b/src/location.h index 8894eea8..94afc244 100644 --- a/src/location.h +++ b/src/location.h @@ -20,9 +20,11 @@ #ifndef LOCATION_H_ # define LOCATION_H_ +# include "quotearg.h" typedef struct location_s { + const char *file; int first_line; int first_column; int last_line; @@ -31,36 +33,52 @@ typedef struct location_s #define YYLTYPE location_t /* Initialize LOC. */ -# define LOCATION_RESET(Loc) \ - (Loc).first_column = (Loc).first_line = 1; \ - (Loc).last_column = (Loc).last_line = 1; +# define LOCATION_RESET(Loc) \ +do { \ + (Loc).file = NULL; \ + (Loc).first_column = (Loc).first_line = 1; \ + (Loc).last_column = (Loc).last_line = 1; \ +} while (0) /* Advance of NUM columns. */ -# define LOCATION_COLUMNS(Loc, Num) \ - (Loc).last_column += Num; +# define LOCATION_COLUMNS(Loc, Num) \ +do { \ + (Loc).last_column += Num; \ +} while (0) + /* Advance of NUM lines. */ -# define LOCATION_LINES(Loc, Num) \ - (Loc).last_column = 1; \ - (Loc).last_line += Num; +# define LOCATION_LINES(Loc, Num) \ +do { \ + (Loc).last_column = 1; \ + (Loc).last_line += Num; \ +} while (0) + /* Restart: move the first cursor to the last position. */ -# define LOCATION_STEP(Loc) \ - (Loc).first_column = (Loc).last_column; \ - (Loc).first_line = (Loc).last_line; +# define LOCATION_STEP(Loc) \ +do { \ + (Loc).first_column = (Loc).last_column; \ + (Loc).first_line = (Loc).last_line; \ +} while (0) + /* Output LOC on the stream OUT. */ -# define LOCATION_PRINT(Out, Loc) \ - fprintf (stderr, "%s:", infile); \ - if ((Loc).first_line != (Loc).last_line) \ - fprintf (Out, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column - 1); \ - else if ((Loc).first_column < (Loc).last_column - 1) \ - fprintf (Out, "%d.%d-%d", (Loc).first_line, \ - (Loc).first_column, (Loc).last_column - 1); \ - else \ - fprintf (Out, "%d.%d", (Loc).first_line, (Loc).first_column) +# define LOCATION_PRINT(Out, Loc) \ +do { \ + fprintf (stderr, "%s:", quotearg_style (escape_quoting_style, \ + (Loc).file)); \ + if ((Loc).first_line != (Loc).last_line) \ + fprintf (Out, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column - 1); \ + else if ((Loc).first_column < (Loc).last_column - 1) \ + fprintf (Out, "%d.%d-%d", (Loc).first_line, \ + (Loc).first_column, (Loc).last_column - 1); \ + else \ + fprintf (Out, "%d.%d", (Loc).first_line, (Loc).first_column); \ +} while (0) + extern location_t empty_location; |