X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/9dd5b37815e95c3c48e63f48489ced76e79acf42..916708d59e02812675ce2d85597b7e1f2d677213:/src/parse-gram.y diff --git a/src/parse-gram.y b/src/parse-gram.y index c5d8024f..606ec569 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -1,5 +1,6 @@ /* Bison Grammar Parser -*- C -*- - Copyright (C) 2002 Free Software Foundation, Inc. + + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -119,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" @@ -179,14 +181,16 @@ declaration: | "%error-verbose" { error_verbose = 1; } | "%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; } | "%name-prefix" "=" string_content { spec_name_prefix = $3; } | "%no-lines" { no_lines_flag = 1; } +| "%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; } | "%verbose" { report_flag = report_states; } @@ -413,8 +417,8 @@ static YYLTYPE lloc_default (YYLTYPE const *rhs, int n) { int i; - YYLTYPE r; - r.start = r.end = rhs[n].end; + YYLTYPE loc; + loc.start = loc.end = rhs[n].end; /* Ignore empty nonterminals the start of the the right-hand side. Do not bother to ignore them at the end of the right-hand side, @@ -422,11 +426,11 @@ lloc_default (YYLTYPE const *rhs, int n) for (i = 1; i <= n; i++) if (! equal_boundaries (rhs[i].start, rhs[i].end)) { - r.start = rhs[i].start; + loc.start = rhs[i].start; break; } - return r; + return loc; }