]> git.saurik.com Git - bison.git/commitdiff
* data/bison.simple (yyparse): Do not implement @$ = @1.
authorAkim Demaille <akim@epita.fr>
Thu, 2 May 2002 16:40:54 +0000 (16:40 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 2 May 2002 16:40:54 +0000 (16:40 +0000)
(YYLLOC_DEFAULT): Adjust to do it.
* doc/bison.texinfo (Location Default Action): Fix.

ChangeLog
NEWS
data/bison.simple
doc/bison.texinfo

index 4f0f2ca0c1fc45c7d9bcf9b2382f6b2cfae132cc..819c6d2d4921d339f7900cc705ca9eafdccafa02 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-05-02  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.simple (yyparse): Do not implement @$ = @1.
+       (YYLLOC_DEFAULT): Adjust to do it.
+       * doc/bison.texinfo (Location Default Action): Fix.
+
 2002-05-02  Akim Demaille  <akim@epita.fr>
 
        * src/reader.c (parse_braces): Merge into...
diff --git a/NEWS b/NEWS
index 31587f082434b255463cefe6b268a9c5bfc6546e..ab991a8037fd056730b345718b0d23809146c3f0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -43,9 +43,11 @@ Changes in version 1.49b:
 * Revert the C++ namespace changes introduced in 1.31, as they caused too
   many portability hassles.
 
-* Items overflow
-  Bison no longer dumps core when there are too many items, it just
-  dies.
+* Default locations
+  By an accident of design, the default computation of @$ was
+  performed after another default computation was performed: @$ = @1.
+  The latter is now removed: YYLLOC_DEFAULT is fully responsible of
+  the computation of @$.
 
 * Token end-of-file
   The token end of file may be specified by the user, in which case,
index f7127a0cbc4fbc083c5ff8605409b69764608f0b..0a7804dc91149742a3a02e91907efcf23de40cbc 100644 (file)
@@ -465,16 +465,14 @@ while (0)
 #define YYERRCODE      256
 
 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
-   are run).
-
-   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
-   first token.  By default, to implement support for ranges, extend
-   its range to the last symbol.  */
+   are run).  */
 
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)               \
-   Current.last_line   = Rhs[[N]].last_line;   \
-   Current.last_column = Rhs[[N]].last_column;
+# define YYLLOC_DEFAULT(Current, Rhs, N)           \
+  Current.first_line   = Rhs[[1]].first_line;      \
+  Current.first_column = Rhs[[1]].first_column;    \
+  Current.last_line    = Rhs[[N]].last_line;       \
+  Current.last_column  = Rhs[[N]].last_column;
 #endif
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
@@ -956,9 +954,7 @@ yyreduce:
   yyval = yyvsp[1-yylen];
 
 #if YYLSP_NEEDED
-  /* Similarly for the default location.  Let the user run additional
-     commands if for instance locations are ranges.  */
-  yyloc = yylsp[1-yylen];
+  /* Default location. */
   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
 #endif
 
index 275c95ec35811c35f143bc89580c5ae829824417..b38cdb2170886f71ff2ba59c63ee6528068fd278 100644 (file)
@@ -2886,9 +2886,11 @@ By default, it is defined this way:
 
 @example
 @group
-#define YYLLOC_DEFAULT(Current, Rhs, N)         \
-  Current.last_line   = Rhs[N].last_line;       \
-  Current.last_column = Rhs[N].last_column;
+#define YYLLOC_DEFAULT(Current, Rhs, N)          \
+  Current.first_line   = Rhs[1].first_line;      \
+  Current.first_column = Rhs[1].first_column;    \
+  Current.last_line    = Rhs[N].last_line;       \
+  Current.last_column  = Rhs[N].last_column;
 @end group
 @end example
 
@@ -2900,12 +2902,8 @@ All arguments are free of side-effects. However, only the first one (the
 result) should be modified by @code{YYLLOC_DEFAULT}.
 
 @item
-Before @code{YYLLOC_DEFAULT} is executed, the output parser sets @code{@@$}
-to @code{@@1}.
-
-@item
-For consistency with semantic actions, valid indexes for the location array
-range from 1 to @var{n}.
+For consistency with semantic actions, valid indexes for the location
+array range from 1 to @var{n}.
 @end itemize
 
 @node Declarations