States that shift the error token do not have default reductions,
and GLR disables some default reductions, so "all" was a misnomer.
* 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-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ 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.
+ * 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-06 Joel E. Denny <joeldenny@joeldenny.org>
doc: create a new Tuning LR section in the manual.
2011-03-06 Joel E. Denny <joeldenny@joeldenny.org>
doc: create a new Tuning LR section in the manual.
specify where default reductions should be used is experimental. More user
feedback will help to stabilize it.)
specify where default reductions should be used is experimental. More user
feedback will help to stabilize it.)
-@item Accepted Values: @code{all}, @code{consistent}, @code{accepting}
+@item Accepted Values: @code{full}, @code{consistent}, @code{accepting}
@item Default Value:
@itemize
@item @code{accepting} if @code{lr.type} is @code{canonical-lr}.
@item Default Value:
@itemize
@item @code{accepting} if @code{lr.type} is @code{canonical-lr}.
-@item @code{all} otherwise.
+@item @code{full} otherwise.
@end itemize
@end itemize
@end itemize
@end itemize
Specify the kind of states that are permitted to contain default reductions.
The accepted values of @var{WHERE} are:
@itemize
Specify the kind of states that are permitted to contain default reductions.
The accepted values of @var{WHERE} are:
@itemize
-@item @code{all} (default for LALR and IELR)
+@item @code{full} (default for LALR and IELR)
@item @code{consistent}
@item @code{accepting} (default for canonical LR)
@end itemize
@item @code{consistent}
@item @code{accepting} (default for canonical LR)
@end itemize
experimental. More user feedback will help to stabilize it.)
@end deffn
experimental. More user feedback will help to stabilize it.)
@end deffn
-FIXME: Because of the exceptions described above, @code{all} is a misnomer.
-Rename to @code{full}.
-
@node LAC
@subsection LAC
@findex %define parse.lac
@node LAC
@subsection LAC
@findex %define parse.lac
char *default_reductions =
muscle_percent_define_get ("lr.default-reductions");
print_reduction (out, width, _("$default"), default_reduction, true);
char *default_reductions =
muscle_percent_define_get ("lr.default-reductions");
print_reduction (out, width, _("$default"), default_reduction, true);
- aver (0 == strcmp (default_reductions, "all")
+ aver (0 == strcmp (default_reductions, "full")
|| (0 == strcmp (default_reductions, "consistent")
&& default_reduction_only)
|| (reds->num == 1 && reds->rules[0]->number == 0));
|| (0 == strcmp (default_reductions, "consistent")
&& default_reduction_only)
|| (reds->num == 1 && reds->rules[0]->number == 0));
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.type", "lalr");
lr_type = muscle_percent_define_get ("lr.type");
if (0 != strcmp (lr_type, "canonical-lr"))
- muscle_percent_define_default ("lr.default-reductions", "all");
+ muscle_percent_define_default ("lr.default-reductions", "full");
else
muscle_percent_define_default ("lr.default-reductions", "accepting");
free (lr_type);
else
muscle_percent_define_default ("lr.default-reductions", "accepting");
free (lr_type);
{
static char const * const values[] = {
"lr.type", "lalr", "ielr", "canonical-lr", NULL,
{
static char const * const values[] = {
"lr.type", "lalr", "ielr", "canonical-lr", NULL,
- "lr.default-reductions", "all", "consistent", "accepting", NULL,
+ "lr.default-reductions", "full", "consistent", "accepting", NULL,
NULL
};
muscle_percent_define_check_values (values);
NULL
};
muscle_percent_define_check_values (values);
{
char *default_reductions =
muscle_percent_define_get ("lr.default-reductions");
{
char *default_reductions =
muscle_percent_define_get ("lr.default-reductions");
- if (0 != strcmp (default_reductions, "all") && !s->consistent)
+ if (0 != strcmp (default_reductions, "full") && !s->consistent)
nodefault = true;
free (default_reductions);
}
nodefault = true;
free (default_reductions);
}
]])
AT_BISON_CHECK([[input.y]], [[1]], [[]],
[[input.y:1.9-29: invalid value for %define variable `lr.default-reductions': `bogus'
]])
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: `all'
+input.y:1.9-29: accepted value: `full'
input.y:1.9-29: accepted value: `consistent'
input.y:1.9-29: accepted value: `accepting'
]])
input.y:1.9-29: accepted value: `consistent'
input.y:1.9-29: accepted value: `accepting'
]])
m4_define([AT_TEST_LR_DEFAULT_REDUCTIONS],
[
AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]],
m4_define([AT_TEST_LR_DEFAULT_REDUCTIONS],
[
AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]],
[[]],
[$1], [$2], [[]], [$3])
[[]],
[$1], [$2], [[]], [$3])
-AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions all]],
- [[all]], [[]],
- [[%define lr.default-reductions all]],
+AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions full]],
+ [[full]], [[]],
+ [[%define lr.default-reductions full]],
[$1], [$2], [[]], [$3])
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]],
[[consistent]], [[]],
[$1], [$2], [[]], [$3])
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]],
[[consistent]], [[]],
2 | a . b 'a'
3 | a . c 'b'
5 b: . [$end, 'a']
2 | a . b 'a'
3 | a . c 'b'
5 b: . [$end, 'a']
- 6 c: . ['b']]AT_COND_CASE([[all]], [[
+ 6 c: . ['b']]AT_COND_CASE([[full]], [[
'b' reduce using rule 6 (c)
$default reduce using rule 5 (b)]], [[
'b' reduce using rule 6 (c)
$default reduce using rule 5 (b)]], [[
'a' shift, and go to state 7
'a' shift, and go to state 7
- ]AT_COND_CASE([[all]], [[$default]], [[$end]])[ reduce using rule 1 (start)
+ ]AT_COND_CASE([[full]], [[$default]],
+ [[$end]])[ reduce using rule 1 (start)