]> git.saurik.com Git - bison.git/blobdiff - src/reader.c
build: lower gettext requirements.
[bison.git] / src / reader.c
index 1b2dcfceee7002c014feac12340c17f07754839a..4ac5977dea2f4fb5c4137f7978ea31b61e76e032 100644 (file)
@@ -36,6 +36,7 @@
 #include "scan-gram.h"
 #include "scan-code.h"
 
 #include "scan-gram.h"
 #include "scan-code.h"
 
+static void prepare_percent_define_front_end_variables (void);
 static void check_and_convert_grammar (void);
 
 static symbol_list *grammar = NULL;
 static void check_and_convert_grammar (void);
 
 static symbol_list *grammar = NULL;
@@ -590,8 +591,18 @@ reader (void)
   gram_debug = trace_flag & trace_parse;
   gram_scanner_initialize ();
   gram_parse ();
   gram_debug = trace_flag & trace_parse;
   gram_scanner_initialize ();
   gram_parse ();
+  prepare_percent_define_front_end_variables ();
 
 
-  /* Set front-end %define variable defaults.  */
+  if (! complaint_issued)
+    check_and_convert_grammar ();
+
+  xfclose (gram_in);
+}
+
+static void
+prepare_percent_define_front_end_variables (void)
+{
+  /* Set %define front-end variable defaults.  */
   muscle_percent_define_default ("lr.keep-unreachable-states", "false");
   {
     char *lr_type;
   muscle_percent_define_default ("lr.keep-unreachable-states", "false");
   {
     char *lr_type;
@@ -606,7 +617,7 @@ reader (void)
     free (lr_type);
   }
 
     free (lr_type);
   }
 
-  /* Check front-end %define variables.  */
+  /* Check %define front-end variables.  */
   {
     static char const * const values[] = {
       "lr.type", "LALR", "IELR", "canonical LR", NULL,
   {
     static char const * const values[] = {
       "lr.type", "LALR", "IELR", "canonical LR", NULL,
@@ -615,11 +626,6 @@ reader (void)
     };
     muscle_percent_define_check_values (values);
   }
     };
     muscle_percent_define_check_values (values);
   }
-
-  if (! complaint_issued)
-    check_and_convert_grammar ();
-
-  xfclose (gram_in);
 }
 
 
 }
 
 
@@ -635,9 +641,6 @@ check_and_convert_grammar (void)
   if (nrules == 0)
     fatal (_("no rules in the input grammar"));
 
   if (nrules == 0)
     fatal (_("no rules in the input grammar"));
 
-  /* Report any undefined symbols and consider them nonterminals.  */
-  symbols_check_defined ();
-
   /* If the user did not define her ENDTOKEN, do it now. */
   if (!endtoken)
     {
   /* If the user did not define her ENDTOKEN, do it now. */
   if (!endtoken)
     {
@@ -648,6 +651,9 @@ check_and_convert_grammar (void)
       endtoken->user_token_number = 0;
     }
 
       endtoken->user_token_number = 0;
     }
 
+  /* Report any undefined symbols and consider them nonterminals.  */
+  symbols_check_defined ();
+
   /* Find the start symbol if no %start.  */
   if (!start_flag)
     {
   /* Find the start symbol if no %start.  */
   if (!start_flag)
     {