bison-patches
[Top][All Lists]
Advanced

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

Re: LAC (lookahead correction) for syntax error handling


From: Joel E. Denny
Subject: Re: LAC (lookahead correction) for syntax error handling
Date: Sun, 20 Mar 2011 18:17:15 -0400 (EDT)
User-agent: Alpine 2.00 (DEB 1167 2008-08-23)

On Sun, 13 Mar 2011, Joel E. Denny wrote:

> On Sun, 6 Mar 2011, Joel E. Denny wrote:
> 
> > Subject: [PATCH 2/4] lr.default-reductions: rename "all" value to "full".
> > 
> > States that shift the error token do not have default reductions,
> > and GLR disables some default reductions, so "all" was a misnomer.
> 
> On second thought, "full" doesn't answer the question of "which states".  
> That is, we had "all states", "consistent states", and "accepting state".  
> "full states" doesn't make sense.  I'm thinking of changing it to "most", 
> but I'll hold off a bit in case anyone has a better suggestion.

I pushed the following to branch-2.5 and master.

>From a6e5a28079865c4924194685723962f198fd33ff Mon Sep 17 00:00:00 2001
From: Joel E. Denny <address@hidden>
Date: Sun, 20 Mar 2011 17:35:10 -0400
Subject: [PATCH] lr.default-reductions: rename "full" value to "most".

Unlike "consistent" and "accepting", "full" doesn't answer the
question of "which states".
* doc/bison.texinfo (%define Summary): Update.
(Default Reductions): Update.
* src/print.c (print_reductions): Update.
* src/reader.c (prepare_percent_define_front_end_variables):
Update.
* src/tables.c (action_row): Update.
* tests/input.at (%define enum variables): Update.
* tests/reduce.at (%define lr.default-reductions): Update.
---
 ChangeLog         |   14 ++++++++++++++
 doc/bison.texinfo |    6 +++---
 src/print.c       |    2 +-
 src/reader.c      |    4 ++--
 src/tables.c      |    2 +-
 tests/input.at    |    2 +-
 tests/reduce.at   |   12 ++++++------
 7 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 69bcc29..bcbc9ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2011-03-20  Joel E. Denny  <address@hidden>
+
+       lr.default-reductions: rename "full" value to "most".
+       Unlike "consistent" and "accepting", "full" doesn't answer the
+       question of "which states".
+       * doc/bison.texinfo (%define Summary): Update.
+       (Default Reductions): Update.
+       * src/print.c (print_reductions): Update.
+       * src/reader.c (prepare_percent_define_front_end_variables):
+       Update.
+       * src/tables.c (action_row): Update.
+       * tests/input.at (%define enum variables): Update.
+       * tests/reduce.at (%define lr.default-reductions): Update.
+
 2011-03-13  Joel E. Denny  <address@hidden>
 
        * src/parse-gram.c, src/parse-gram.h: Regenerate.
diff --git a/doc/bison.texinfo b/doc/bison.texinfo
index ab6486a..9e366da 100644
--- a/doc/bison.texinfo
+++ b/doc/bison.texinfo
@@ -5166,11 +5166,11 @@ contain default reductions.  @xref{Default Reductions}. 
 (The ability to
 specify where default reductions should be used is experimental.  More user
 feedback will help to stabilize it.)
 
address@hidden Accepted Values: @code{full}, @code{consistent}, @code{accepting}
address@hidden Accepted Values: @code{most}, @code{consistent}, @code{accepting}
 @item Default Value:
 @itemize
 @item @code{accepting} if @code{lr.type} is @code{canonical-lr}.
address@hidden @code{full} otherwise.
address@hidden @code{most} otherwise.
 @end itemize
 @end itemize
 
@@ -7143,7 +7143,7 @@ To adjust which states have default reductions enabled, 
use the
 Specify the kind of states that are permitted to contain default reductions.
 The accepted values of @var{WHERE} are:
 @itemize
address@hidden @code{full} (default for LALR and IELR)
address@hidden @code{most} (default for LALR and IELR)
 @item @code{consistent}
 @item @code{accepting} (default for canonical LR)
 @end itemize
diff --git a/src/print.c b/src/print.c
index b117e75..7e9c580 100644
--- a/src/print.c
+++ b/src/print.c
@@ -337,7 +337,7 @@ print_reductions (FILE *out, state *s)
       char *default_reductions =
         muscle_percent_define_get ("lr.default-reductions");
       print_reduction (out, width, _("$default"), default_reduction, true);
-      aver (0 == strcmp (default_reductions, "full")
+      aver (0 == strcmp (default_reductions, "most")
             || (0 == strcmp (default_reductions, "consistent")
                 && default_reduction_only)
             || (reds->num == 1 && reds->rules[0]->number == 0));
diff --git a/src/reader.c b/src/reader.c
index 86cc82c..eb95070 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -630,7 +630,7 @@ prepare_percent_define_front_end_variables (void)
     muscle_percent_define_default ("lr.type", "lalr");
     lr_type = muscle_percent_define_get ("lr.type");
     if (0 != strcmp (lr_type, "canonical-lr"))
-      muscle_percent_define_default ("lr.default-reductions", "full");
+      muscle_percent_define_default ("lr.default-reductions", "most");
     else
       muscle_percent_define_default ("lr.default-reductions", "accepting");
     free (lr_type);
@@ -640,7 +640,7 @@ prepare_percent_define_front_end_variables (void)
   {
     static char const * const values[] = {
       "lr.type", "lalr", "ielr", "canonical-lr", NULL,
-      "lr.default-reductions", "full", "consistent", "accepting", NULL,
+      "lr.default-reductions", "most", "consistent", "accepting", NULL,
       NULL
     };
     muscle_percent_define_check_values (values);
diff --git a/src/tables.c b/src/tables.c
index 930a6a5..8f459cf 100644
--- a/src/tables.c
+++ b/src/tables.c
@@ -310,7 +310,7 @@ action_row (state *s)
   {
     char *default_reductions =
       muscle_percent_define_get ("lr.default-reductions");
-    if (0 != strcmp (default_reductions, "full") && !s->consistent)
+    if (0 != strcmp (default_reductions, "most") && !s->consistent)
       nodefault = true;
     free (default_reductions);
   }
diff --git a/tests/input.at b/tests/input.at
index 9c5db8d..9acd544 100644
--- a/tests/input.at
+++ b/tests/input.at
@@ -1034,7 +1034,7 @@ start: ;
 ]])
 AT_BISON_CHECK([[input.y]], [[1]], [[]],
 [[input.y:1.9-29: invalid value for %define variable `lr.default-reductions': 
`bogus'
-input.y:1.9-29: accepted value: `full'
+input.y:1.9-29: accepted value: `most'
 input.y:1.9-29: accepted value: `consistent'
 input.y:1.9-29: accepted value: `accepting'
 ]])
diff --git a/tests/reduce.at b/tests/reduce.at
index ad4d329..e7220cb 100644
--- a/tests/reduce.at
+++ b/tests/reduce.at
@@ -1451,12 +1451,12 @@ dnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
 m4_define([AT_TEST_LR_DEFAULT_REDUCTIONS],
 [
 AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]],
-                         [[full]], [[]],
+                         [[most]], [[]],
                          [[]],
                          [$1], [$2], [[]], [$3])
-AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions full]],
-                         [[full]], [[]],
-                         [[%define lr.default-reductions full]],
+AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions most]],
+                         [[most]], [[]],
+                         [[%define lr.default-reductions most]],
                          [$1], [$2], [[]], [$3])
 AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]],
                          [[consistent]], [[]],
@@ -1529,7 +1529,7 @@ state 3
     2      | a . b 'a'
     3      | a . c 'b'
     5 b: .  [$end, 'a']
-    6 c: .  ['b']]AT_COND_CASE([[full]], [[
+    6 c: .  ['b']]AT_COND_CASE([[most]], [[
 
     'b'       reduce using rule 6 (c)
     $default  reduce using rule 5 (b)]], [[
@@ -1556,7 +1556,7 @@ state 5
 
     'a'  shift, and go to state 7
 
-    ]AT_COND_CASE([[full]], [[$default]],
+    ]AT_COND_CASE([[most]], [[$default]],
                   [[$end]])[  reduce using rule 1 (start)
 
 
-- 
1.7.0.4




reply via email to

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