mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-12 05:43:03 +00:00
Actually handle the yytable zero value correctly this time.
* data/bison.m4 (b4_integral_parser_tables_map): Don't mention zero values in the YYTABLE comments. * data/glr.c (yytable_value_is_error): Don't check for zero value. * data/lalr1.cc (yy_table_value_is_error_): Likewise. * data/yacc.c (yytable_value_is_error): Likewise. * data/lalr1.java (yy_table_value_is_error_): Likewise. (yysyntax_error): Fix typo in code: use yytable_ not yycheck_. * src/tables.h: In header comments, explain why it's useless to check for a zero value in yytable.
This commit is contained in:
633
src/parse-gram.c
633
src/parse-gram.c
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
/* A Bison parser, made by GNU Bison 2.4.388-53f03. */
|
||||
/* A Bison parser, made by GNU Bison 2.4.390-0aaa. */
|
||||
|
||||
/* Interface for Bison's Yacc-like parsers in C
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef union YYSTYPE
|
||||
{
|
||||
/* Line 1609 of yacc.c */
|
||||
/* Line 1608 of yacc.c */
|
||||
#line 94 "parse-gram.y"
|
||||
|
||||
symbol *symbol;
|
||||
@@ -171,7 +171,7 @@ typedef union YYSTYPE
|
||||
named_ref *named_ref;
|
||||
|
||||
|
||||
/* Line 1609 of yacc.c */
|
||||
/* Line 1608 of yacc.c */
|
||||
#line 176 "src/parse-gram.h"
|
||||
} YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
|
||||
@@ -126,7 +126,7 @@ static int table_size = 32768;
|
||||
base_number *table;
|
||||
base_number *check;
|
||||
/* The value used in TABLE to denote explicit syntax errors
|
||||
(%nonassoc), a negative infinite. First defaults to ACTION_NUMBER_MININUM,
|
||||
(%nonassoc), a negative infinite. First defaults to ACTION_NUMBER_MINIMUM,
|
||||
but in order to keep small tables, renumbered as TABLE_ERROR, which
|
||||
is the smallest (non error) value minus 1. */
|
||||
base_number table_ninf = 0;
|
||||
|
||||
14
src/tables.h
14
src/tables.h
@@ -48,7 +48,7 @@
|
||||
YYFINAL = the state number of the termination state.
|
||||
|
||||
YYTABLE = a vector filled with portions for different uses, found
|
||||
via YYPACT and YYPGOTO.
|
||||
via YYPACT and YYPGOTO, described below.
|
||||
|
||||
YYLAST ( = high) the number of the last element of YYTABLE, i.e.,
|
||||
sizeof (YYTABLE) - 1.
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
If the value is negative, it is minus a rule number to reduce by.
|
||||
|
||||
If the value is zero or YYTABLE_NINF, it's a syntax error.
|
||||
If the value is YYTABLE_NINF, it's a syntax error.
|
||||
|
||||
YYPGOTO[I] = the index in YYTABLE of the portion describing what to
|
||||
do after reducing a rule that derives variable I + NTOKENS. This
|
||||
@@ -99,6 +99,16 @@
|
||||
YYCHECK[YYPGOTO[I] + S] != S), then the default state (that is,
|
||||
YYDEFGOTO[I]) should be used instead of YYTABLE. Otherwise,
|
||||
YYTABLE[YYPGOTO[I] + S] is the state to go to even if YYPGOTO[I] < 0.
|
||||
|
||||
When the above YYPACT, YYPGOTO, and YYCHECK tests determine that a
|
||||
value from YYTABLE should be used, that value is never zero, so it is
|
||||
useless to check for zero. When those tests indicate that the value
|
||||
from YYDEFACT or YYDEFGOTO should be used instead, the value from
|
||||
YYTABLE *might* be zero, which, as a consequence of the way in which
|
||||
the tables are constructed, also happens to indicate that YYDEFACT or
|
||||
YYDEFGOTO should be used. However, the YYTABLE value cannot be
|
||||
trusted when the YYDEFACT or YYDEFGOTO value should be used. In
|
||||
summary, forget about zero values in YYTABLE.
|
||||
*/
|
||||
|
||||
extern int nvectors;
|
||||
|
||||
Reference in New Issue
Block a user