]> git.saurik.com Git - bison.git/commitdiff
* data/lalr1.cc (position.hh): Make sure "columns" never pushes
authorAkim Demaille <akim@epita.fr>
Thu, 20 Feb 2003 14:42:43 +0000 (14:42 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 20 Feb 2003 14:42:43 +0000 (14:42 +0000)
before initial_columns.
(location.hh): Use consistent variable names when defining the
operator<<.
Use "last" so that we subtract from Positions, not from unsigned.

ChangeLog
data/lalr1.cc

index 34de6a3c443823f95c9b44724ab99de45b8e8e5d..9866c18ca0cb53247fbc68f01a1bd7bc733f68cd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2003-02-20  Akim Demaille  <akim@epita.fr>
+
+       * data/lalr1.cc (position.hh): Make sure "columns" never pushes
+       before initial_columns.
+       (location.hh): Use consistent variable names when defining the
+       operator<<.
+       Use "last" so that we subtract from Positions, not from unsigned.
+
 2003-02-20  Akim Demaille  <akim@epita.fr>
 
        * data/lalr1.cc (position.hh): New subfile, including the extended
index 7a08a73dc81856f683d919649e28be457a389313..e1ad791ae7e5cc01261f7f0ae9419c1bd4e05d21 100644 (file)
@@ -923,7 +923,10 @@ namespace yy
     /** \brief (column related) Advance to the COLUMNS next columns. */
     inline void columns (int columns = 1)
     {
-      column += columns;
+      if (int (initial_column) < columns + int (column))
+       column += columns;
+      else
+       column = initial_column;
     }
     /** \} */
 
@@ -1068,19 +1071,20 @@ namespace yy
 
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
-   ** \param pos a reference to the Position to redirect
+   ** \param loc a reference to the Location to redirect
    **
-   ** Don't issue twice the line number when the location is on a single line.
+   ** Avoid duplicate information.
    */
-  inline std::ostream& operator<< (std::ostream& ostr, const Location& pos)
+  inline std::ostream& operator<< (std::ostream& ostr, const Location& loc)
   {
-    ostr << pos.begin;
-    if (pos.begin.filename != pos.end.filename)
-      ostr << '-' << pos.end - 1;
-    else if (pos.begin.line != pos.end.line)
-      ostr << '-' << pos.end.line  << '.' << pos.end.column - 1;
-    else if (pos.begin.column != pos.end.column - 1)
-      ostr << '-' << pos.end.column - 1;
+    Position last = loc.end - 1;
+    ostr << loc.begin;
+    if (loc.begin.filename != last.filename)
+      ostr << '-' << last;
+    else if (loc.begin.line != last.line)
+      ostr << '-' << last.line  << '.' << last.column;
+    else if (loc.begin.column != last.column)
+      ostr << '-' << last.column;
     return ostr;
   }