]> git.saurik.com Git - bison.git/blobdiff - src/location.c
(state_number_as_int): Now inline functions rather than macros, to avoid casts.
[bison.git] / src / location.c
index b4361cd62ce0a39befbbad053dcc9d92fea8dea4..9ba9378577561f653b7691596d2830bc2dd0312f 100644 (file)
@@ -1,5 +1,5 @@
 /* Locations for Bison
-   Copyright (C) 2002  Free Software Foundation, Inc.
+   Copyright (C) 2002 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
    Boston, MA 02111-1307, USA.  */
 
 #include "system.h"
+
+#include <quotearg.h>
+
 #include "location.h"
 
-location_t empty_location = { NULL, 0, 0, 0, 0 };
+location const empty_location;
+
+/* Output to OUT the location LOC.
+   Warning: it uses quotearg's slot 3.  */
+void
+location_print (FILE *out, location loc)
+{
+  fprintf (out, "%s:%d.%d",
+          quotearg_n_style (3, escape_quoting_style, loc.start.file),
+          loc.start.line, loc.start.column);
+
+  if (loc.start.file != loc.end.file)
+    fprintf (out, "-%s:%d.%d",
+            quotearg_n_style (3, escape_quoting_style, loc.end.file),
+            loc.end.line, loc.end.column - 1);
+  else if (loc.start.line < loc.end.line)
+    fprintf (out, "-%d.%d", loc.end.line, loc.end.column - 1);
+  else if (loc.start.column < loc.end.column - 1)
+    fprintf (out, "-%d", loc.end.column - 1);
+}