]> git.saurik.com Git - bison.git/blobdiff - src/location.h
2007-02-07 Paolo Bonzini <bonzini@gnu.org>
[bison.git] / src / location.h
index b03f6d0e69e3904f5392cd812796c3f20d04665e..0b4f715a2cca17585443ddabe444034c406128d7 100644 (file)
@@ -1,5 +1,5 @@
 /* Locations for Bison
 /* Locations for Bison
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -29,15 +29,26 @@ typedef struct
   /* The name of the file that contains the boundary.  */
   uniqstr file;
 
   /* The name of the file that contains the boundary.  */
   uniqstr file;
 
-  /* The (origin-1) line that contains the boundary.  */
+  /* The (origin-1) line that contains the boundary.
+     If this is INT_MAX, the line number has overflowed.  */
   int line;
 
   /* The (origin-1) column just after the boundary.  This is neither a
   int line;
 
   /* The (origin-1) column just after the boundary.  This is neither a
-     byte count, nor a character count; it is a column count.  */
+     byte count, nor a character count; it is a column count.
+     If this is INT_MAX, the column number has overflowed.  */
   int column;
 
 } boundary;
 
   int column;
 
 } boundary;
 
+/* Set the position of \a a. */
+static inline void
+boundary_set (boundary *b, const char *f, int l, int c)
+{
+  b->file = f;
+  b->line = l;
+  b->column = c;
+}
+
 /* Return nonzero if A and B are equal boundaries.  */
 static inline bool
 equal_boundaries (boundary a, boundary b)
 /* Return nonzero if A and B are equal boundaries.  */
 static inline bool
 equal_boundaries (boundary a, boundary b)
@@ -60,8 +71,17 @@ typedef struct
 
 #define YYLTYPE location
 
 
 #define YYLTYPE location
 
+#define EMPTY_LOCATION_INIT {{NULL, 0, 0}, {NULL, 0, 0}}
 extern location const empty_location;
 
 extern location const empty_location;
 
-void location_print (FILE *, location);
+/* Set *LOC and adjust scanner cursor to account for token TOKEN of
+   size SIZE.  */
+void location_compute (location *loc,
+                      boundary *cur, char const *token, size_t size);
+
+void location_print (FILE *out, location loc);
+
+/* LOC_STR must be formatted as `file:line.column', it will be modified.  */
+void boundary_set_from_string (boundary *bound, char *loc_str);
 
 #endif /* ! defined LOCATION_H_ */
 
 #endif /* ! defined LOCATION_H_ */