* 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
* data/c.m4 (b4_table_value_equals): Comment that YYID must be
defined.
* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Fix
yytable comments: zero indicates syntax error not default
action.
* data/glr.c (yyis_pact_ninf): Rename to...
(yypact_value_is_default): ... this.
(yyisDefaultedState): Update for rename.
(yyis_table_ninf): Rename to...
(yytable_value_is_error): ... this, and check for value zero
besides just YYTABLE_NINF.
(yygetLRActions): Check for default value from yypact. It
appears that this check is always performed before this function
is invoked, and so adding the check here is probably redundant.
However, the code may evolve after this subtlety is forgotten.
Also, update for rename to yytable_value_is_error. Because that
macro now checks for zero, a different but equivalent branch of
the if-then-else here is evaluated.
(yyreportSyntaxError): Update for rename to
yytable_value_is_error. The zero condition was mishandled
before.
(yyrecoverSyntaxError): Update for renames. No behavioral
changes.
* data/lalr1.cc, data/lalr1.java (yy_pact_value_is_default_):
New function.
(yy_table_value_is_error_): New function.
(parse): Use new functions where possible. No behavioral
changes.
(yysyntax_error_, yysyntax_error): Use yy_table_value_is_error_.
The zero condition was mishandled before.
* data/yacc.c (yyis_pact_ninf): Rename to...
(yypact_value_is_default): ... this.
(yyis_table_ninf): Rename to...
(yytable_value_is_error): ... this, and check for value zero
besides just YYTABLE_NINF.
(yysyntax_error): Update for rename to yytable_value_is_error.
The zero condition was mishandled before.
(yyparse): Update for renames. No behavioral changes.
* src/tables.h: Improve comments about yypact, yytable, etc.
more. Most importantly, say yytable value of zero means syntax
error not default action.
(cherry picked from commit f2b30bdf37)
Conflicts:
data/bison.m4
data/lalr1.cc
data/lalr1.java
data/yacc.c
src/parse-gram.c
src/parse-gram.h
2008-11-01 Di-an Jan <dianj@freeshell.org>
Paolo Bonzini <bonzini@gnu.org>
Support all Java parser class modifiers.
* data/java.m4 (b4_percent_define_get3): New.
(b4_final_if, b4_strictfp_if): New.
* data/lalr1.java (final, strictfp, extends, implements): Support.
* doc/bison.texinfo (final, strictfp, extends, implements): Add
documentation.
* tests/java.at (AT_CHECK_JAVA_MINIMAL): New.
(AT_CHECK_JAVA_MINIMAL_W_LEXER): New.
(AT_CHECK_JAVA_GREP): New.
(Java parser class modifiers): New test.
(Java parser class extends and implements): New test.
Model exception propagation better with throws and lex_throws.
* data/java.m4 (b4_list2): New.
(throws): Change default.
* data/lalr1.java (yyaction): Add throws.
(parse): Add lex_throws in addition to throws.
* doc/bison.texinfo (throws, lex_throws): Add documentation.
* tests/java.at (Java throws specifications): New test.
Improve documentation for Java parsers.
* doc/bison.texinfo (Java Parsers): Add subsections.
Don't quote first argument of %define.
(Java Bison Interface): Document output files. Move documentation
of parser class and merge into Java Parser Interface. Document
features that error out. Document directives with no effect.
Move note about Javadoc higher.
(Java Semantic Values): Explicitly mention stype.
Document that generic types cannot be used.
(Java Location Values): Use @deftypeivar. Document constructors.
Correct return value for toString.
(Java Parser Interface): List undocumented constants/fields.
Move documentation of fields added by %parse-param closer to list
of members. Document that token names are added as fields.
Document constructors accurately. Remove error method.
(Java Scanner Interface): Move note on %pure-parser to Java Bison
Interface. Describe %code lexer and yylex accutately.
Remove documentation that does not match the code.
(Java Action Features): New.
(Java Differences): Add reference. Add item on semantic values.
Add note about @{ ... @}. Clarify %% epilogue placement.
(Java Declarations Summary): New.
Fix Java skeleton.
* data/java.m4 (b4_prefix): Correct quoting for m4_define_default.
(b4_remove_comma): Quote test argument.
* tests/java.at (Java parser class and package names): New test.
(Java %parse-param and %lex-param): New test.
(Java stype, position_class and location_class): New test.
2008-10-27 Di-an Jan <dianj@freeshell.org>
* data/lalr1.jave: Update copyright years.
(YYParser): Correct name of "generated from" file in Javadoc:
use b4_file_name instead of @ofile@.
(Location constructor): Correct Javadoc parameter name.
(yylloc): Add missing opening m4 quote after b4_location_if.
This removes a stray [ in the Javadoc of Lexer.getStartPos.
(Lexer.yyerror): Fix incorrect m4 and Javadoc.
(YYParser constructor): Correct Javadoc parameter name.
2008-10-08 Di-an Jan <dianj@freeshell.org> (tiny change)
Small but important bugfixes for the Java skeleton.
* data/lalr1.java (yyerror): Change Location to b4_location_type.
(yy_symbol_print): Call toString on yyvaluep.
* data/java.m4 (b4_single_class_if): Remove.
(b4_abstract_if): Look at "%define abstract".
(b4_lexer_if): New.
(b4_union_name): Rename...
(b4_yystype): ... to this. Map to "%define stype".
(b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
b4_maybe_throws): Fix quoting.
(b4_lex_param_call): Move below to keep b4_*_param_decl close.
* data/lalr1.java (Lexer interface): Always define.
(Lexer interface within parser class): Remove.
(YYLexer class): New, used when "%code lexer" is present.
(constructor): When "%code lexer" is used, pass %lex-param
to the lexer constructor.
(yylex, yyparse): Remove %lex-param from method invocations
(YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.
* doc/bison.texinfo (Java Bison Interface): Mention "%define
abstract". Rename "%define union_name" to "%define stype".
Rename method names according to previous patch.
(Java Scanner Interface): Describe "%code lexer" instead of
"%pure-parser" and "%define single_class".
(Java Differences): Mention "%code lexer".
* tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
Include scanner here, using macros from tests/local.at.
(AT_DATA_CALC_Y): Remove final argument.
(_AT_CHECK_JAVA_CALC): Likewise.
(AT_CHECK_JAVA_CALC): Likewise. Test all four combinations
of %locations and %error-verbose.
(main): Test with and without %lex-param.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
(AT_BISON_OPTION_POPDEFS): Pop it.
* data/lalr1.java (Stack): Work around old verifiers that disallow
access to the private fields of an inner class, from the outer class.
We can make Stack's fields public because user code doesn't have access
to the instance of Stack used by parse().
* NEWS: Mention java.
* TODO: Remove things that are done.
* bootstrap.conf: Add javacomp-script and javaexec-script.
* configure.ac: Invoke gt_JAVACOMP and gt_JAVAEXEC.
* data/Makefile.am: Add new files.
* data/java-skel.m4: New.
* data/java.m4: New.
* data/lalr1.java: New.
* doc/bison.texinfo: Put "A Complete C++ Example" under
C++ Parsers. Add Java Parsers. Put C++ Parsers and Java Parsers
under Other Languages.
* src/getargs.c (valid_languages): Add Java.
* src/getargs.h (struct bison_language): Update size of string fields.
* tests/Makefile.am: Add java.at.
* tests/atlocal.in: Add CONF_JAVA and CONF_JAVAC.
* tests/java.at: New.
* tests/testsuite.at: Include it.