]> git.saurik.com Git - bison.git/blobdiff - src/reader.c
Add copyright updates missed during previous cherry pick.
[bison.git] / src / reader.c
index be9f46f64a366ba4b4df6ea59228c0d9ef9b5632..17ff0f78de358533f063494d80f4a1f4bc637bce 100644 (file)
@@ -1,24 +1,22 @@
 /* Input parser for Bison
 
    Copyright (C) 1984, 1986, 1989, 1992, 1998, 2000, 2001, 2002, 2003,
-   2005, 2006, 2007 Free Software Foundation, Inc.
+   2005, 2006, 2007, 2009 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
-   Bison is free software; you can redistribute it and/or modify
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
 
-   Bison is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with Bison; see the file COPYING.  If not, write to
-   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 #include "system.h"
@@ -557,6 +555,28 @@ reader (void)
   gram_scanner_initialize ();
   gram_parse ();
 
+  /* IELR would be a better default, but LALR is historically the default.  */
+  {
+    char *lr_type;
+    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");
+    else
+      muscle_percent_define_default ("lr.default_reductions", "accepting");
+    free (lr_type);
+  }
+
+  /* Check front-end %define variable values.  */
+  {
+    static char const * const values[] = {
+      "lr.type", "LALR", "IELR", "canonical LR", NULL,
+      "lr.default_reductions", "all", "consistent", "accepting", NULL,
+      NULL
+    };
+    muscle_percent_define_check_values (values);
+  }
+
   if (! complaint_issued)
     check_and_convert_grammar ();
 
@@ -640,8 +660,11 @@ check_and_convert_grammar (void)
      rule.  For the same reason, all the `used' flags must be set before
      checking whether to remove `$' from any midrule symbol name (also in
      packgram).  */
-  for (symbol_list *sym = grammar; sym; sym = sym->next)
-    code_props_translate_code (&sym->action_props);
+  {
+    symbol_list *sym;
+    for (sym = grammar; sym; sym = sym->next)
+      code_props_translate_code (&sym->action_props);
+  }
 
   /* Convert the grammar into the format described in gram.h.  */
   packgram ();