[Top][All Lists]
[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