summaryrefslogtreecommitdiff
path: root/src/location.h
diff options
context:
space:
mode:
authorAkim Demaille <akim@epita.fr>2002-07-09 16:24:57 +0000
committerAkim Demaille <akim@epita.fr>2002-07-09 16:24:57 +0000
commit1a715ef2fcaa8acc91ccc3e62fac830f0552dd29 (patch)
treedd6acaf3e63c829f65f0742018baee382e2af589 /src/location.h
parenta5d5099417229a48aa18477073266e9aa3b77a8e (diff)
downloadbison-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.h62
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;