Actually handle the yytable zero value correctly this time.

* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: 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.
(cherry picked from commit aa0cb40d61)

Conflicts:

	data/bison.m4
	data/lalr1.java
This commit is contained in:
Joel E. Denny
2009-08-26 02:40:38 -04:00
parent d5eb0826af
commit e4bcae3c5a
9 changed files with 184 additions and 164 deletions

View File

@@ -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;