From 3a414bbfa049a2f6e0f497a230bd86fe96a87884 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Fri, 28 Aug 2009 00:57:06 -0400 Subject: [PATCH] %define lr.type: make values lowercase IDs. That is, "LALR" => "lalr", "IELR" => "ielr", and "canonical LR" => "canonical-lr". * NEWS (2.5): Update documentation. * doc/bison.texinfo (Decl Summary): Likewise. * src/ielr.c (ielr): Use new values. * src/ielr.h (ielr): Update documentation. * src/reader.c (prepare_percent_define_front_end_variables): Use and validate new values. * tests/existing.at (AT_TEST_EXISTING_GRAMMAR): Update test grammars. * tests/reduce.at (AT_TEST_LR_TYPE): Likewise. (cherry picked from commit 6ba9640406758718fdcfb7a1154e58ce4d9b196c) --- ChangeLog | 15 +++++++++++++++ NEWS | 6 +++--- doc/bison.texinfo | 10 +++++----- src/ielr.c | 6 +++--- src/ielr.h | 6 +++--- src/parse-gram.c | 4 ++-- src/parse-gram.h | 2 +- src/reader.c | 6 +++--- tests/existing.at | 6 +++--- tests/reduce.at | 12 ++++++------ 10 files changed, 44 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9a7c0d2c..360854c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2009-08-28 Joel E. Denny + + %define lr.type: make values lowercase IDs. + That is, "LALR" => "lalr", "IELR" => "ielr", and + "canonical LR" => "canonical-lr". + * NEWS (2.5): Update documentation. + * doc/bison.texinfo (Decl Summary): Likewise. + * src/ielr.c (ielr): Use new values. + * src/ielr.h (ielr): Update documentation. + * src/reader.c (prepare_percent_define_front_end_variables): Use + and validate new values. + * tests/existing.at (AT_TEST_EXISTING_GRAMMAR): Update test + grammars. + * tests/reduce.at (AT_TEST_LR_TYPE): Likewise. + 2009-08-27 Eric Blake scan-gram: avoid portability trap with ctype usage. diff --git a/NEWS b/NEWS index 57db6c2d..3dab543c 100644 --- a/NEWS +++ b/NEWS @@ -20,9 +20,9 @@ Bison News default. You can specify the type of parser tables in the grammar file with these directives: - %define lr.type "LALR" - %define lr.type "IELR" - %define lr.type "canonical LR" + %define lr.type "lalr" + %define lr.type "ielr" + %define lr.type "canonical-lr" The default reduction optimization in the parser tables can also be adjusted using `%define lr.default-reductions'. See the documentation diff --git a/doc/bison.texinfo b/doc/bison.texinfo index a4474df7..8ed32e0c 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -4956,7 +4956,7 @@ without performing any extra reductions. @item Default Value: @itemize -@item @code{"accepting"} if @code{lr.type} is @code{"canonical LR"}. +@item @code{"accepting"} if @code{lr.type} is @code{"canonical-lr"}. @item @code{"all"} otherwise. @end itemize @end itemize @@ -5020,7 +5020,7 @@ More user feedback will help to stabilize it.) @item Accepted Values: @itemize -@item @code{"LALR"}. +@item @code{"lalr"}. While Bison generates @acronym{LALR} parser tables by default for historical reasons, @acronym{IELR} or canonical @acronym{LR} is almost always preferable for deterministic parsers. @@ -5049,7 +5049,7 @@ investigate such problems while ignoring the more subtle differences from @acronym{IELR} and canonical @acronym{LR}. @end itemize -@item @code{"IELR"}. +@item @code{"ielr"}. @acronym{IELR} is a minimal @acronym{LR} algorithm. That is, given any grammar (@acronym{LR} or non-@acronym{LR}), @acronym{IELR} and canonical @acronym{LR} always accept exactly the same @@ -5063,7 +5063,7 @@ grammars, the number of conflicts for @acronym{IELR} is often an order of magnitude less as well. This can significantly reduce the complexity of developing of a grammar. -@item @code{"canonical LR"}. +@item @code{"canonical-lr"}. @cindex delayed syntax errors @cindex syntax errors delayed The only advantage of canonical @acronym{LR} over @acronym{IELR} is @@ -5079,7 +5079,7 @@ Even when canonical @acronym{LR} behavior is ultimately desired, facilitate the development of a grammar. @end itemize -@item Default Value: @code{"LALR"} +@item Default Value: @code{"lalr"} @end itemize @item namespace diff --git a/src/ielr.c b/src/ielr.c index 2c89a5b1..399d53be 100644 --- a/src/ielr.c +++ b/src/ielr.c @@ -1095,11 +1095,11 @@ ielr (void) /* Examine user options. */ { char *type = muscle_percent_define_get ("lr.type"); - if (0 == strcmp (type, "LALR")) + if (0 == strcmp (type, "lalr")) lr_type = LR_TYPE__LALR; - else if (0 == strcmp (type, "IELR")) + else if (0 == strcmp (type, "ielr")) lr_type = LR_TYPE__IELR; - else if (0 == strcmp (type, "canonical LR")) + else if (0 == strcmp (type, "canonical-lr")) lr_type = LR_TYPE__CANONICAL_LR; else aver (false); diff --git a/src/ielr.h b/src/ielr.h index 27b3a445..feab49a8 100644 --- a/src/ielr.h +++ b/src/ielr.h @@ -33,9 +33,9 @@ * - \c ::states is of size \c ::nstates (which might be greater than * ::nstates \@pre) and defines the type of parser specified by * the value of the \c \%define variable \c lr.type. Its value can be: - * - \c "LALR". - * - \c "IELR". - * - \c "canonical LR". + * - \c "lalr". + * - \c "ielr". + * - \c "canonical-lr". */ void ielr (void); diff --git a/src/parse-gram.c b/src/parse-gram.c index d4ac32e6..d6d3d537 100644 --- a/src/parse-gram.c +++ b/src/parse-gram.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 2.4.1.124-faff. */ +/* A Bison parser, made by GNU Bison 2.4.1.128-4bb9. */ /* Skeleton implementation for Bison's Yacc-like parsers in C @@ -45,7 +45,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.4.1.124-faff" +#define YYBISON_VERSION "2.4.1.128-4bb9" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" diff --git a/src/parse-gram.h b/src/parse-gram.h index 1b5f2662..db6cb83a 100644 --- a/src/parse-gram.h +++ b/src/parse-gram.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 2.4.1.124-faff. */ +/* A Bison parser, made by GNU Bison 2.4.1.128-4bb9. */ /* Skeleton interface for Bison's Yacc-like parsers in C diff --git a/src/reader.c b/src/reader.c index 4ac5977d..043fea8b 100644 --- a/src/reader.c +++ b/src/reader.c @@ -608,9 +608,9 @@ prepare_percent_define_front_end_variables (void) char *lr_type; /* IELR would be a better default, but LALR is historically the default. */ - muscle_percent_define_default ("lr.type", "LALR"); + muscle_percent_define_default ("lr.type", "lalr"); lr_type = muscle_percent_define_get ("lr.type"); - if (0 != strcmp (lr_type, "canonical LR")) + if (0 != strcmp (lr_type, "canonical-lr")) muscle_percent_define_default ("lr.default-reductions", "all"); else muscle_percent_define_default ("lr.default-reductions", "accepting"); @@ -620,7 +620,7 @@ prepare_percent_define_front_end_variables (void) /* Check %define front-end variables. */ { static char const * const values[] = { - "lr.type", "LALR", "IELR", "canonical LR", NULL, + "lr.type", "lalr", "ielr", "canonical-lr", NULL, "lr.default-reductions", "all", "consistent", "accepting", NULL, NULL }; diff --git a/tests/existing.at b/tests/existing.at index 976ab0c6..5a897324 100644 --- a/tests/existing.at +++ b/tests/existing.at @@ -42,18 +42,18 @@ AT_CHECK([[diff -u input-lalr.output input.output \ [[0]], [$1])]) AT_TEST_TABLES_AND_PARSE([$2[: LALR(1)]], [[LALR]], [[last-state]], - [[%define lr.type "LALR" + [[%define lr.type "lalr" ]$3], [$4], [$5], [$6], [$7], [AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12]) AT_TEST_TABLES_AND_PARSE([$2[: IELR(1)]], [[IELR]], [[last-state]], - [[%define lr.type "IELR" + [[%define lr.type "ielr" ]$3], [$4], [$5], [$6], [$7], [AT_LALR1_DIFF_CHECK([$8])$9], [$10], [$11], [$12]) AT_TEST_TABLES_AND_PARSE([$2[: Canonical LR(1)]], [[canonical LR]], [[last-state,no-xml]], - [[%define lr.type "canonical LR" + [[%define lr.type "canonical-lr" ]$3], [$4], [$5], [$6], [$7], [$9], [$10], [$11], [$12]) diff --git a/tests/reduce.at b/tests/reduce.at index 0db3830b..45a856a5 100644 --- a/tests/reduce.at +++ b/tests/reduce.at @@ -375,19 +375,19 @@ m4_define([AT_TEST_LR_TYPE], AT_TEST_TABLES_AND_PARSE([[no %define lr.type: ]$1], [[LALR]], [[]], [$2], m4_shiftn(2, $@)) -AT_TEST_TABLES_AND_PARSE([[%define lr.type "LALR": ]$1], +AT_TEST_TABLES_AND_PARSE([[%define lr.type "lalr": ]$1], [[LALR]], [[]], - [[%define lr.type "LALR" + [[%define lr.type "lalr" ]$2], m4_shiftn(2, $@)) -AT_TEST_TABLES_AND_PARSE([[%define lr.type "IELR": ]$1], +AT_TEST_TABLES_AND_PARSE([[%define lr.type "ielr": ]$1], [[IELR]], [[]], - [[%define lr.type "IELR" + [[%define lr.type "ielr" ]$2], m4_shiftn(2, $@)) -AT_TEST_TABLES_AND_PARSE([[%define lr.type "canonical LR": ]$1], +AT_TEST_TABLES_AND_PARSE([[%define lr.type "canonical-lr": ]$1], [[canonical LR]], [[]], - [[%define lr.type "canonical LR" + [[%define lr.type "canonical-lr" ]$2], m4_shiftn(2, $@)) ]) -- 2.45.2