]> git.saurik.com Git - bison.git/blobdiff - src/parse-gram.y
(EXTRA_DIST): Add the following files, which
[bison.git] / src / parse-gram.y
index 668d9db32f53754b860877b9e6399069ad5e315c..dad4e8cf3041c5f8e41ef6356acd3c2fff87f8df 100644 (file)
@@ -120,6 +120,7 @@ int current_prec = 0;
   PERCENT_LOCATIONS     "%locations"
   PERCENT_NAME_PREFIX   "%name-prefix"
   PERCENT_NO_LINES      "%no-lines"
+  PERCENT_NONDETERMINISTIC_PARSER    "%nondeterministic-parser"
   PERCENT_OUTPUT        "%output"
   PERCENT_PARSE_PARAM   "%parse-param {...}"
   PERCENT_PURE_PARSER   "%pure-parser"
@@ -174,24 +175,26 @@ declarations:
 declaration:
   grammar_declaration
 | PROLOGUE                                 { prologue_augment ($1, @1); }
-| "%debug"                                 { debug_flag = 1; }
+| "%debug"                                 { debug_flag = true; }
 | "%define" string_content string_content  { muscle_insert ($2, $3); }
-| "%defines"                               { defines_flag = 1; }
-| "%error-verbose"                         { error_verbose = 1; }
+| "%defines"                               { defines_flag = true; }
+| "%error-verbose"                         { error_verbose = true; }
 | "%expect" INT                            { expected_conflicts = $2; }
 | "%file-prefix" "=" string_content        { spec_file_prefix = $3; }
-| "%glr-parser"                           { glr_parser = 1; }
+| "%glr-parser"                           { nondeterministic_parser = true;
+                                             glr_parser = true; }
 | "%lex-param {...}"                      { add_param ("lex_param", $1, @1); }
-| "%locations"                             { locations_flag = 1; }
+| "%locations"                             { locations_flag = true; }
 | "%name-prefix" "=" string_content        { spec_name_prefix = $3; }
-| "%no-lines"                              { no_lines_flag = 1; }
+| "%no-lines"                              { no_lines_flag = true; }
+| "%nondeterministic-parser"              { nondeterministic_parser = true; }
 | "%output" "=" string_content             { spec_outfile = $3; }
 | "%parse-param {...}"                  { add_param ("parse_param", $1, @1); }
-| "%pure-parser"                           { pure_parser = 1; }
+| "%pure-parser"                           { pure_parser = true; }
 | "%skeleton" string_content               { skeleton = $2; }
-| "%token-table"                           { token_table_flag = 1; }
+| "%token-table"                           { token_table_flag = true; }
 | "%verbose"                               { report_flag = report_states; }
-| "%yacc"                                  { yacc_flag = 1; }
+| "%yacc"                                  { yacc_flag = true; }
 | ";"
 ;
 
@@ -204,7 +207,7 @@ grammar_declaration:
     }
 | "%union {...}"
     {
-      typed = 1;
+      typed = true;
       MUSCLE_INSERT_INT ("stype_line", @1.start.line);
       muscle_insert ("stype", $1);
     }
@@ -329,7 +332,7 @@ grammar:
    body of the grammar.  */
 rules_or_grammar_declaration:
   rules
-| grammar_declaration
+| grammar_declaration ";"
     {
       if (yacc_flag)
        complain_at (@$, _("POSIX forbids declarations in the grammar"));
@@ -338,7 +341,6 @@ rules_or_grammar_declaration:
     {
       yyerrok;
     }
-| ";"
 ;
 
 rules:
@@ -348,6 +350,7 @@ rules:
 rhses.1:
   rhs                { grammar_rule_end (@1); }
 | rhses.1 "|" rhs    { grammar_rule_end (@3); }
+| rhses.1 ";"
 ;
 
 rhs: