bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Fix precedence for end token.


From: Joel E. Denny
Subject: [PATCH] Fix precedence for end token.
Date: Sun, 1 May 2011 23:21:36 -0400 (EDT)
User-agent: Alpine 2.00 (DEB 1167 2008-08-23)

I pushed this to branch-2.5 and master.

>From 9d6af153184eea964fef7f87d76a60fe29f715b5 Mon Sep 17 00:00:00 2001
From: Joel E. Denny <address@hidden>
Date: Sun, 1 May 2011 21:53:35 -0400
Subject: [PATCH] Fix precedence for end token.

Since Bison 2.3b, which restored the ability of precedence
directives to assign user token numbers, doing so for user token
number 0 has produced an assertion failure.
* NEWS (2.5): Document fix.
* src/symtab.c (symbol_user_token_number_set): In the case of the
end token, don't decrement ntokens if it was never incremented.
* tests/regression.at (Token number in precedence declaration):
Extend.
---
 ChangeLog           |   12 ++++++++++++
 NEWS                |   10 ++++++++++
 src/symtab.c        |    5 +++--
 tests/regression.at |   10 +++++++---
 4 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ce38095..d29e4f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2011-05-01  Joel E. Denny  <address@hidden>
 
+       Fix precedence for end token.
+       Since Bison 2.3b, which restored the ability of precedence
+       directives to assign user token numbers, doing so for user token
+       number 0 has produced an assertion failure.
+       * NEWS (2.5): Document fix.
+       * src/symtab.c (symbol_user_token_number_set): In the case of the
+       end token, don't decrement ntokens if it was never incremented.
+       * tests/regression.at (Token number in precedence declaration):
+       Extend.
+
+2011-05-01  Joel E. Denny  <address@hidden>
+
        Prepare for 2.5 release.
        * NEWS (2.5_rc1): Rename back to...
        (2.5): ... this, and unset date.
diff --git a/NEWS b/NEWS
index 3eb2cc6..e063b78 100644
--- a/NEWS
+++ b/NEWS
@@ -343,6 +343,16 @@ Bison News
 
     bison -Wnone gram.y
 
+** Precedence directives can now assign token number 0:
+
+  Since Bison 2.3b, which restored the ability of precedence
+  directives to assign token numbers, doing so for token number 0 has
+  produced an assertion failure.  For example:
+
+    %left END 0
+
+  This bug has been fixed.
+
 * Changes in version 2.4.3 (2010-08-05):
 
 ** Bison now obeys -Werror and --warnings=error for warnings about
diff --git a/src/symtab.c b/src/symtab.c
index f9f78b3..f065c80 100644
--- a/src/symtab.c
+++ b/src/symtab.c
@@ -368,10 +368,11 @@ symbol_user_token_number_set (symbol *sym, int 
user_token_number, location loc)
   if (user_token_number == 0)
     {
       endtoken = sym;
-      endtoken->number = 0;
       /* It is always mapped to 0, so it was already counted in
         NTOKENS.  */
-      --ntokens;
+      if (endtoken->number != NUMBER_UNDEFINED)
+        --ntokens;
+      endtoken->number = 0;
     }
 }
 
diff --git a/tests/regression.at b/tests/regression.at
index 68a4131..c07b744 100644
--- a/tests/regression.at
+++ b/tests/regression.at
@@ -1205,12 +1205,15 @@ AT_DATA_GRAMMAR([input.y],
 %}
 
 %error-verbose
+%right END 0
 %left TK1 1 TK2 2 "tok alias" 3
 
 %%
 
-start: TK1 sr_conflict "tok alias" ;
-
+start:
+    TK1 sr_conflict "tok alias"
+  | start %prec END
+  ;
 sr_conflict:
   TK2
   | TK2 "tok alias"
@@ -1240,7 +1243,8 @@ main (void)
 ]])
 
 AT_BISON_CHECK([[-o input.c input.y]], [[0]],,
-[[input.y:24.5-19: warning: rule useless in parser due to conflicts: 
sr_conflict: TK2 "tok alias"
+[[input.y:23.5-19: warning: rule useless in parser due to conflicts: start: 
start
+input.y:27.5-19: warning: rule useless in parser due to conflicts: 
sr_conflict: TK2 "tok alias"
 ]])
 AT_COMPILE([[input]])
 AT_PARSER_CHECK([[./input]])
-- 
1.7.0.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]