+ /* Set front-end %define variable defaults. */
+ muscle_percent_define_default ("lr.keep-unreachable-states", "false");
+ {
+ char *lr_type;
+ /* IELR would be a better default, but LALR is historically the
+ default. */
+ 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 variables. */
+ {
+ 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 ();
+
+ xfclose (gram_in);
+}
+
+
+/*-------------------------------------------------------------.
+| Check the grammar that has just been read, and convert it to |
+| internal form. |
+`-------------------------------------------------------------*/