Joel E. Denny [Thu, 3 Sep 2009 17:59:07 +0000 (13:59 -0400)]
Use aver not assert.
* src/output.c: Don't include assert.h.
(output_skeleton): Use aver not assert.
* src/system.h (aver): In documentation of why, add links to
Paul Eggert's explanations in the mailing lists.
Alex Rozenman [Sat, 5 Sep 2009 10:16:45 +0000 (13:16 +0300)]
Use "Unresolved reference" error message when no symbols were found
in a symbolic reference resolution. Remove .expr and -expr from
the shown reference when the reference is unresolved.
* src/scan-code.l: Change the error message, adjust location columns,
rename variable "exact_mode" to "explicit_bracketing".
* tests/named-ref.at: Adjust existing tests and add a new one.
Akim Demaille [Thu, 3 Sep 2009 12:10:17 +0000 (14:10 +0200)]
Adjust synclines in src/parse-gram.[ch].
* tests/bison.in: Do some magic (including working around issues
with ylwrap) when this wrapper is used to compile
src/parse-gram.y.
Joel E. Denny [Thu, 3 Sep 2009 18:27:16 +0000 (14:27 -0400)]
Don't suppress warnings about unused parse.error.
* data/bison.m4 (b4_error_verbose_flag): Don't examine value of
%define variable parse.error unless b4_error_verbose_flag is
actually expanded in a skeleton.
Akim Demaille [Thu, 3 Sep 2009 09:03:14 +0000 (11:03 +0200)]
NEWS: Internationalization.
* NEWS (2.4.2): Add "Internationalization" item.
Akim Demaille [Thu, 3 Sep 2009 08:50:32 +0000 (10:50 +0200)]
bootstrap: fix/improve find_tool.
* bootstrap (find_tool): Improve error messages.
Fix typo about find_tool_names.
Joel E. Denny [Sat, 29 Aug 2009 20:25:58 +0000 (16:25 -0400)]
Fix gcc 3.4.4 shadowing warning reported by Eric Blake.
See
<http://lists.gnu.org/archive/html/bison-patches/2009-08/msg00093.html>.
* src/scan-code.h (code_props_rule_action_init): Rename
named_ref arg to name so it doesn't shadow named_ref type. This
makes it consistent with the function definition in scan-code.l
anyway.
Joel E. Denny [Fri, 28 Aug 2009 07:46:37 +0000 (03:46 -0400)]
%define: accept unquoted values.
* NEWS (2.5): Group all %define changes together, and document
this one. Remove quotes in IELR and canonical LR entry.
* doc/bison.texinfo: Remove quotes in most examples throughout.
(Decl Summary): Update %define documentation.
(Table of Symbols): Likewise.
* src/ielr.c (LrType): Update documentation.
* src/parse-gram.y (content.opt): Add production for ID.
* tests/actions.at: Remove quotes in most tests.
* tests/calc.at: Likewise.
* tests/existing.at: Likewise.
* tests/input.at: Likewise.
* tests/local.at: Likewise.
* tests/push.at: Likewise.
* tests/reduce.at: Likewise.
* tests/torture.at: Likewise.
Joel E. Denny [Fri, 28 Aug 2009 04:57:06 +0000 (00:57 -0400)]
%define lr.type: make values lowercase IDs.
That is, "LALR" => "lalr", "IELR" => "ielr", and
"canonical LR" => "canonical-lr".
* NEWS (2.5): Update documentation.
* doc/bison.texinfo (Decl Summary): Likewise.
* src/ielr.c (ielr): Use new values.
* src/ielr.h (ielr): Update documentation.
* src/reader.c (prepare_percent_define_front_end_variables): Use
and validate new values.
* tests/existing.at (AT_TEST_EXISTING_GRAMMAR): Update test
grammars.
* tests/reduce.at (AT_TEST_LR_TYPE): Likewise.
Eric Blake [Thu, 27 Aug 2009 16:56:53 +0000 (10:56 -0600)]
scan-gram: avoid portability trap with ctype usage.
* src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>):
Avoid compiler warning.
Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit
bbbbe221d7c2ff2fff88f7a0c8dbfee73f2e8a58)
Joel E. Denny [Thu, 27 Aug 2009 07:52:53 +0000 (03:52 -0400)]
tests: use perl for printing special sequences to files.
And skip tests if perl is not available. This is better than
playing tricks with shell portability. Suggested by Akim
Demaille.
* tests/input.at (Bad character literals): Use it here for
omitting final newlines.
(Bad escapes in literals): Use it here for special characters.
Joel E. Denny [Wed, 26 Aug 2009 18:15:53 +0000 (14:15 -0400)]
tests: show a use of %define lr.default-reductions "consistent"
* tests/conflicts.at (%nonassoc and eof): Extend to test that it
prevents the omission of expected tokens for %error-verbose.
Akim Demaille [Wed, 26 Aug 2009 09:53:18 +0000 (11:53 +0200)]
tests: portability fix.
* tests/input.at (Bad escapes in literals): Don't expect "echo
'\0'" to output \ then 0.
Joel E. Denny [Wed, 26 Aug 2009 06:40:38 +0000 (02:40 -0400)]
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.
Joel E. Denny [Tue, 25 Aug 2009 23:41:49 +0000 (19:41 -0400)]
More fixes related to last two patches.
* data/bison.m4 (b4_integral_parser_tables_map): Fix YYTABLE
comments: zero indicates syntax error not default action.
* data/c.m4 (b4_table_value_equals): Comment that YYID must be
defined.
* 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.
Joel E. Denny [Tue, 25 Aug 2009 05:13:02 +0000 (01:13 -0400)]
Fix %error-verbose for conflicts resolved by %nonassoc.
* NEWS (2.5): Document.
* data/glr.c (yyreportSyntaxError): Fix this by checking
yyis_table_ninf.
* data/yacc.c (yysyntax_error): Likewise.
* data/lalr1.cc (yysyntax_error_): Fix this by checking
yytable_ninf_.
* data/lalr1.java (yysyntax_error): Likewise.
* tests/conflicts.at (%nonassoc and eof): Update expected output
and remove FIXME.
Joel E. Denny [Tue, 25 Aug 2009 05:12:37 +0000 (01:12 -0400)]
Some code and documentation improvements.
* data/c.m4 (b4_table_value_equals): New macro to capture
some repeated code.
* data/glr.c (yyis_pact_ninf): Use it here.
(yyis_table_ninf): Likewise.
(yyreportSyntaxError): Improve internal comments.
* data/yacc.c (yyis_pact_ninf): New macro copied from glr.c.
Use it everywhere possible.
(yyis_table_ninf): Likewise.
(yysyntax_error): Improve internal comments.
* data/lalr1.cc (yysyntax_error_): Likewise.
* data/lalr1.java (yysyntax_error): Likewise.
* src/tables.h: Improve comments about yypact, yytable, etc.
Joel E. Denny [Sat, 22 Aug 2009 00:09:54 +0000 (20:09 -0400)]
Use locale when quoting.
* src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER): Use
quote rather than implementing quoting here.
Eric Blake [Thu, 20 Aug 2009 22:54:07 +0000 (16:54 -0600)]
Make previous patch more robust.
* src/output.c (ARRAY_CARDINALITY): New macro, copied from
argmatch.h.
(output_skeleton): Use it.
Suggested by Akim Demaille.
Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit
1266b636740f0c6719d8cc11a5d569084fa37009)
Eric Blake [Thu, 20 Aug 2009 15:48:49 +0000 (09:48 -0600)]
Import latest m4/m4.m4.
* submodules/autoconf: Update to autoconf 2.64.
* configure.ac (M4_GNU_OPTION): New define.
* src/output.c (output_skeleton): Use it to resolve FIXME.
* NEWS: Mention this.
Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit
b9ad39c1fb2482e1513cdf9800b31e71b7986b39)
Joel E. Denny [Thu, 20 Aug 2009 00:37:28 +0000 (20:37 -0400)]
Fix complaints about escape sequences.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2009-08/msg00036.html>.
* src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER):
For a \0 and similar escape sequences meaning the null
character, report an invalid escape sequence instead of an
invalid null character because the latter does not actually
appear in the user's input.
In all escape sequence complaints, don't escape the initial
backslash, and don't quote when the sequence appears at the end
of the complaint line unless there's whitespace that quotearg
won't escape.
Consistently say "invalid" not "unrecognized".
Consistently prefer "empty character literal" over "extra
characters in character literal" warning for invalid escape
sequences; that is, consistently discard those sequences.
* tests/input.at (Bad escapes in literals): New.
Akim Demaille [Wed, 19 Aug 2009 12:51:50 +0000 (14:51 +0200)]
doc: fixes.
* doc/bison.texinfo: Fix minor Texinfo errors.
Akim Demaille [Wed, 19 Aug 2009 12:39:27 +0000 (14:39 +0200)]
tests: distcc compliance.
* tests/synclines.at (AT_SYNCLINES_COMPILE): Discard distcc's
error messages from the output.
Akim Demaille [Wed, 19 Aug 2009 12:24:15 +0000 (14:24 +0200)]
variables: simplify the upgrade of namespace into api.namespace.
This patch simplifies "variables: rename namespace as api.namespace",
commit
67501061076ba46355cfd9f9361c7eed861b389c.
Suggested by Joel E. Denny in
http://lists.gnu.org/archive/html/bison-patches/2009-07/msg00006.html
* src/muscle-tab.c (muscle_percent_variable_update): New.
(muscle_percent_define_insert): Use it in replacement of the
previous tr invocation.
Remove variable_tr, no longer needed.
* data/bison.m4 (b4_percent_define_copy_, b4_percent_define_copy):
Remove.
* data/c++.m4: No longer handle namespace -> api.namespace.
* tests/input.at (%define backward compatibility): Check that
namespace is treated as api.namespace.
Akim Demaille [Wed, 19 Aug 2009 11:34:48 +0000 (13:34 +0200)]
2009-08-19 Akim Demaille <demaille@gostai.com>
doc: %initial-action to initialize yylloc.
Reported by Bill Allombert.
* doc/bison.texinfo: Set fill-column to 76.
(Location Type): Document the use of %initial-action to initialize
yylloc.
Akim Demaille [Sun, 16 Aug 2009 05:38:40 +0000 (07:38 +0200)]
lalr1.cc: use state_type.
* data/lalr1.cc (yysyntax_error_): Use state_type.
Move argument names into yy*.
Akim Demaille [Sun, 16 Aug 2009 05:36:39 +0000 (07:36 +0200)]
lalr1.cc: get rid of yyparse's yystate.
yystate and yystack_[0].state are equal, keep only the latter.
The former was also used as a temporary variable to compute the
post-reduction state. Move this computation into an auxiliary
function.
* data/glr.c (yyLRgotoState): Fuse variable definition and first
assignment.
* data/lalr1.cc (yy_lr_goto_state_): New.
(yyparse): Use it.
Replace remaining uses of yystate by yystate_[0].state.
Remove the former.
Akim Demaille [Wed, 12 Aug 2009 16:00:40 +0000 (18:00 +0200)]
lalr1.cc: destroy $$ when YYERROR is called.
* data/lalr1.cc (yyreduce): Compute the resulting state before
running the user action so that yylhs is a valid symbol.
(yyerrorlab): Since yylhs is complete (it knows its type), we can
simply call yy_destroy_ to destroy $$ on YYERROR invocations.
* tests/c++.at (AT_CHECK_VARIANTS): Test YYERROR with variants.
Joel E. Denny [Tue, 18 Aug 2009 22:29:54 +0000 (18:29 -0400)]
maint: update for gnulib's recent update-copyright changes
* gnulib: Update.
* .x-update-copyright (COPYING): Add as it's no longer implied
when .x-update-copyright is present.
* cfg.mk (update-copyright-local): Remove, now ignored.
(update-copyright): Declare update-b4-copyright as a dependency.
Akim Demaille [Mon, 17 Aug 2009 08:51:08 +0000 (10:51 +0200)]
build: require gettext 0.17.
Suggested by Bruno Haible.
http://lists.gnu.org/archive/html/bug-bison/2009-08/msg00009.html
* configure.ac: require gettext 0.17 to ensure compatibility with
gnulib.
Akim Demaille [Mon, 17 Aug 2009 07:22:41 +0000 (09:22 +0200)]
build: lower gettext requirements.
Bison was uselessly requiring the formatstring macros from
gettext, which resulted in mo files not being installed on systems
that perfectly supported Bison mo files. Lower the requirement.
http://lists.gnu.org/archive/html/bug-bison/2009-08/msg00006.html
* configure.ac: Require need-ngettext instead of
need-formatstring-macros.
Reported by Martin Jabocs.
Suggested by Bruno Haible.
* INSTALL: Restructure.
(Internationalization): New.
(cherry picked from commit
b9e42bb439643b6b193ba44696c370bbb35d2ec0)
Akim Demaille [Mon, 17 Aug 2009 08:42:12 +0000 (10:42 +0200)]
gnulib: update.
* gnulib: Update to newest.
Joel E. Denny [Fri, 14 Aug 2009 21:05:06 +0000 (17:05 -0400)]
maint: fix use of copyright year intervals.
* gnulib: Update.
* bootstrap.conf (gnulib_modules): Update getopt to getopt-gnu
as now recommended in gnulib/NEWS.
* build-aux/update-b4-copyright: Fix.
* cfg.mk (update-copyright-env): Configure update-copyright.
(cherry picked from commit
75ac158b82be1fab5157b140287368165a50ec82)
Joel E. Denny [Sun, 9 Aug 2009 00:19:01 +0000 (20:19 -0400)]
Make it easier to write deterministic tests.
Continues Akim's work from his 2009-06-10 commits.
* src/reader.c (check_and_convert_grammar): Don't add any
symbols after the first symbols_do invocation.
* src/symtab.c (symbols_sorted): New static global.
(user_token_number_redeclaration): Update comments.
(symbol_from_uniqstr): If a new symbol is being created, assert
that symbols_sorted hasn't been allocated yet.
(symbols_free): Free symbols_sorted.
(symbols_cmp, symbols_cmp_qsort): New functions.
(symbols_do): Sort symbol_table into symbols_sorted on first
invocation.
* tests/input.at (Numbered tokens): Recombine tests now that the
output should be deterministic across multiple numbers.
Akim Demaille [Wed, 12 Aug 2009 14:18:12 +0000 (16:18 +0200)]
tests: GCC 4.5 compliance.
* tests/synclines.at (AT_SYNCLINES_COMPILE): Adjust to GCC 4.5's
messages about #error.
Akim Demaille [Wed, 12 Aug 2009 12:47:08 +0000 (14:47 +0200)]
build: fix the generation of the documentation.
Some of our targets use "bison --help", but they can't depend on
"bison" itself (to avoid additional requirements on the user), so
they used to call "make src/bison" in the commands. Then
concurrent builds may fail: one make might be aiming one of its
jobs at compiling src/bison, and another job at generating the man
page. If the latter is faster than the former, then we have two
makes that concurrently try to compile src/bison.
This might also be a more convincing explanation for the failure
described in the patch "build: fix paths".
* Makefile.am (SUFFIXES): Initialize.
* build-aux/move-if-change: New, symlink to gnulib's.
* build-aux/local.mk: Ship it.
* doc/common.x: Remove, merged into...
* doc/bison.x: here.
* doc/local.mk (doc/bison.help): New.
($(CROSS_OPTIONS_TEXI)): Depend on it.
Use src/bison.
(.x.1): Replace with...
(doc/bison.1): this explicit, simpler, target.
(common_dep): Remove, inlined where appropriate.
(SUFFIXES, PREPATH): Remove, unused.
Akim Demaille [Wed, 1 Jul 2009 09:53:29 +0000 (11:53 +0200)]
gnulib: improve prefixing.
* configure.ac (gl_PREFIXED_LIBOBJS): Don't rename it, rather,
change the value of...
(gl_LIBOBJS): this.
Adjust more variables.
* etc/prefix-gnulib-mk (prefix_assignment): Don't rename
gl_LIBOBJS.
(prefix): Also transform rules whose targets have slashes.
Use $prefix liberally.
Map @MKDIR_P@ to $(MKDIR_P).
Prefix directories that are mkdir'd.
Akim Demaille [Wed, 1 Jul 2009 10:19:09 +0000 (12:19 +0200)]
build: fix paths.
When using $(top_builddir) inconsistently, Make (including GNU
Make) is sometimes confused. As a result it may want to build
lib/libbison.la and $(top_builddir)/lib/libbison.la (the same
file, different names) concurrently, which, amusingly enough,
might end with:
ranlib lib/libbison.a
ranlib lib/libbison.a
make[2]: *** [lib/libbison.a] Segmentation fault
on OS X.
* doc/local.mk, src/local.mk: Do not use $(top_builddir) when not
needed.
Akim Demaille [Wed, 1 Jul 2009 10:19:18 +0000 (12:19 +0200)]
distcheck: fix.
* examples/calc++/Makefile.am: (EXTRA_DIST): Ship calc.stamp.
Joel E. Denny [Tue, 11 Aug 2009 03:39:43 +0000 (23:39 -0400)]
* tests/local.mk (TESTSUITE_AT): Add named-refs.at.
(cherry picked from commit
36dfe4662ef5eb96073034b9eb80113b0c2a204e)
Conflicts:
tests/Makefile.am
Joel E. Denny [Tue, 11 Aug 2009 01:43:07 +0000 (21:43 -0400)]
Miscellaneous code readability improvements.
* src/reader.c (reader): Move %define front-end variable
defaults and checking into...
(prepare_percent_define_front_end_variables): ... this new
function.
* src/scan-gram.l (INITIAL): For consistency with string
literals, don't store open quote on character literal. It's
discarded before returning anyway.
(SC_ESCAPED_CHARACTER): Similarly, don't store close quote.
Make length test more readable, and make the character stored
for an empty literal more obvious while consistent with the
previous behavior.
* src/symtab.c, src/symtab.h: Rename USER_NUMBER_ALIAS to
USER_NUMBER_HAS_STRING_ALIAS throughout.
* src/symtab.c (symbol_make_alias): Remove comment from symtab.c
that is repeated in symtab.h. Improve argument names to make it
clear which side of the symbol-string alias pair is which.
(symbol_check_alias_consistency): Improve local variable names
for the same purpose.
* src/symtab.h (struct symbol): Make comments about aliases
clearer.
(symbol_make_alias): Improve comments and argument name.
* src/output.c (token_definitions_output): Update for rename to
USER_NUMBER_HAS_STRING_ALIAS and improve comments about aliases.
Alex Rozenman [Sat, 8 Aug 2009 15:10:23 +0000 (18:10 +0300)]
Convert "misleading reference" messages to warnings.
* src/scan-code.l: New function 'show_sub_messages', more
factoring.
* tests/named-ref.at: Adjust tests.
Joel E. Denny [Thu, 6 Aug 2009 22:57:50 +0000 (18:57 -0400)]
maint: run "make update-copyright"
Joel E. Denny [Thu, 6 Aug 2009 15:34:09 +0000 (11:34 -0400)]
maint: make update-b4-copyright easier to use
* build-aux/update-b4-copyright: In warnings, report line
numbers rather than character positions.
* cfg.mk (update-copyright-local): Set to update-b4-copyright so
that update-copyright runs it.
* gnulib: Update.
Joel E. Denny [Wed, 5 Aug 2009 23:52:41 +0000 (19:52 -0400)]
maint: clean up update-b4-copyright code
* build-aux/update-b4-copyright: Do not accept 2-digit
UPDATE_COPYRIGHT_YEAR, which was not handled correctly.
Don't accept a `[' in a b4_copyright argument.
Format code more consistently.
Don't assume b4*copyright never occurs.
Joel E. Denny [Tue, 4 Aug 2009 22:06:20 +0000 (18:06 -0400)]
maint: automate b4_copyright updates.
* Makefile.am (update-b4-copyright): New target rule.
* build-aux/local.mk (EXTRA_DIST): Add update-b4-copyright.
* build-aux/update-b4-copyright: New.
* data/yacc.c: Remove stray characters around b4_copyright
invocations.
Joel E. Denny [Thu, 30 Jul 2009 21:12:10 +0000 (17:12 -0400)]
maint: automate annual package-wide copyright-year update.
* .x-update-copyright: New.
* Makefile.am (EXTRA_DIST): Remove maint.mk.
* bootstrap.conf (gnulib_modules): Add maintainer-makefile and
update-copyright. Remove gnumakefile, which is implied by
maintainer-makefile.
* cfg.mk (bootstrap-tools): Copy from old maint.mk.
* gnulib: Update.
* maint.mk: Remove, now copied from gnulib.
* examples/extexi: Add missing "(C)" in copyright statement so
update-copyright can recognize it.
* src/LR0.h: Likewise.
* src/print.h: Likewise.
* src/print_graph.h: Likewise.
* src/named-ref.c: Likewise.
* src/named-ref.h: Likewise.
* src/gram.c: Add missing comma in copyright statement.
* src/gram.h: Likewise.
(cherry picked from commit
dbbb64f09180b8749e3a91d3559e13b933cd15c8)
Conflicts:
Makefile.am
gnulib
maint.mk
src/gram.h
Joel E. Denny [Tue, 4 Aug 2009 18:48:48 +0000 (14:48 -0400)]
Fix "make distcheck".
* examples/calc++/Makefile.am: Say $(srcdir)/calc.stamp instead
of just calc.stamp.
(cherry picked from commit
cfc9e431c31f7f7291dd16a4a505d6a41e662d0c)
Joel E. Denny [Sat, 1 Aug 2009 21:51:34 +0000 (17:51 -0400)]
Pacify "gcc -Wunused" for the input function from Flex.
Reported by Alex Rozenman. This warning shows up with gcc-4.3.0
and later.
* src/scan-code.l: Add "%option noinput", which I cannot find in
the Flex manual, but which Flex has supported since at least as
far back as 2.5.4. However, if any of our developers still use
Flex 2.5.4, they'll need to stop configuring with
--enable-gcc-warnings because "%option noinput" didn't work
correctly until Flex 2.5.6.
* src/scan-gram.l: Likewise.
* src/scan-skel.l: Likewise.
(cherry picked from commit
42f8609bbd033edf6cca102ca080eade94ed08ef)
Alex Rozenman [Fri, 31 Jul 2009 19:34:54 +0000 (22:34 +0300)]
Fix mail address in ChangeLog.
Alex Rozenman [Fri, 31 Jul 2009 19:23:23 +0000 (22:23 +0300)]
Fix --enable-gcc-warnings problems.
* src/reader.c: Adjust variable names.
* src/scan-code.l: Fix prototypes and adjust names.
* src/named-ref.c: Remove redundant "if".
Joel E. Denny [Wed, 29 Jul 2009 17:47:02 +0000 (13:47 -0400)]
Fix a --enable-gcc-warnings problem.
* src/scan-gram.l (SC_ESCAPED_CHARACTER): Actually use length
variable.
(cherry picked from commit
a1ed2b71faac0de1db1c0e279ee3203115ec70d8)
Joel E. Denny [Fri, 24 Jul 2009 14:29:07 +0000 (10:29 -0400)]
Warn about character literals not of length one.
* NEWS (2.5): Document.
* src/scan-gram.l (INITIAL): Remove comment that we don't check
the length.
(SC_ESCAPED_CHARACTER): Warn if length is wrong.
* tests/input.at (Bad character literals): New test group.
(cherry picked from commit
ac9b0e954b1d3aed514a3bbd363da1514202af0f)
Alex Rozenman [Fri, 24 Jul 2009 18:04:16 +0000 (21:04 +0300)]
Fix some memory leaks.
* src/named-ref.c: Add a pointer check (named_ref_free).
* src/scan-code.l: New function (variant_table_free). Called in
code_scanner_free.
* src/symlist.c: Call to named_ref_free (symbol_list_free).
Joel E. Denny [Fri, 24 Jul 2009 13:59:42 +0000 (09:59 -0400)]
* src/lalr.c (state_lookahead_tokens_count): Correct comment.
(cherry picked from commit
2de160e12ea0b0313a3a4f2120b30a3eeaad0c76)
Joel E. Denny [Wed, 22 Jul 2009 19:06:49 +0000 (15:06 -0400)]
Some M4 cleanup in the testsuite.
Suggested by Eric Blake at
<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00083.html>.
* tests/existing.at (_AT_TEST_EXISTING_GRAMMAR): Do not
complicate the code by distinguishing between a missing value
and an empty string value for an optional argument. This fix is
allowed by the similar fix in AT_TEST_TABLES_AND_PARSE below.
* tests/local.at (_AT_TEST_TABLES_AND_PARSE): Merge into...
(AT_TEST_TABLES_AND_PARSE): ... this now that the special
arguments are not needed because of the following changes.
Fix stale comments.
Bison developers should use GNU M4 and should not use
POSIXLY_CORRECT when building the test suite, so do not
complicate the code by avoiding $10 and above.
Do not quote an empty string value for an optional argument, and
do not distinguish between a missing value and an empty string
value.
(cherry picked from commit
cba975069a746bccdd2f2a954954ac7e43a47ac2)
Joel E. Denny [Wed, 15 Jul 2009 08:21:00 +0000 (04:21 -0400)]
Revert unnecessary column realignment in --help output.
Reported by Akim Demaille at
<http://lists.gnu.org/archive/html/bison-patches/2009-06/msg00010.html>.
* src/getargs.c (usage): Here.
(cherry picked from commit
620b2e3691598e057e24a7965fd268d0495cf9f5)
Alex Rozenman [Sat, 4 Jul 2009 19:55:04 +0000 (22:55 +0300)]
Alphabetical order in src/local.mk.
* src/local.mk: Adjust.
Alex Rozenman [Sat, 4 Jul 2009 18:29:06 +0000 (21:29 +0300)]
Regen.
Alex Rozenman [Sat, 4 Jul 2009 14:52:38 +0000 (17:52 +0300)]
Style changes and factoring.
* src/named-ref.h: Add comments.
* src/parse-gram.y: Readability and style changes.
* src/reader.c: Factoring: assign_named_ref function.
* src/scan-code.l: Factoring and style changes. Rename
parse_named_ref to parse_ref. Use "c-ctype.h" from gnulib.
Use "unsigned" type for variant index. Improve readablity.
* src/scan-gram.l: Change error messages and add comments.
* src/symlist.h: symbol_list_null: New function decl.
* src/symlist.c: symbol_list_null: Implement here.
* tests/named-refs.at: Adjust for new error messages.
Eric Blake [Mon, 29 Jun 2009 14:34:21 +0000 (08:34 -0600)]
scan-code: avoid compiler warnings
* src/scan-code.l (parse_named_ref): Use correct specifiers.
Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit
ae09ec8577cbf72188164ab42ba2ea022722b78c)
Akim Demaille [Mon, 29 Jun 2009 13:02:48 +0000 (15:02 +0200)]
build: avoid concurrent extraction of calc++.
* examples/calc++/Makefile.am (calc.stamp): New.
Depend on it to create the sources of calc++ so that concurrent
builds don't launch several "extexi" in parallel.
Not only this is inefficient, this also builds incorrect sources
with several extractions mixed together.
Akim Demaille [Mon, 29 Jun 2009 12:41:13 +0000 (14:41 +0200)]
parse.error: fix.
* data/bison.m4: Move code related to specific variables after the
definition of the variable-maintaining macros so that we don't
"invoke" b4_percent_define_check_values before it is defined.
Akim Demaille [Mon, 29 Jun 2009 11:37:19 +0000 (13:37 +0200)]
Regen.
Akim Demaille [Thu, 18 Jun 2009 08:00:36 +0000 (10:00 +0200)]
variables: parse.error
Implement, document, and test the replacement of %error-verbose
by %define parse.error "verbose".
* data/bison.m4 (b4_error_verbose_if): Reimplement to track the
values of the parse.error variable.
Make "simple" its default value.
Check the valid values.
* src/parse-gram.y: Use %define parse.error.
(PERCENT_ERROR_VERBOSE): New token.
Support it.
* src/scan-gram.l: Support %error-verbose.
* doc/bison.texinfo (Decl Summary): Replace the documentation of
%define error-verbose by that of %define parse.error.
* NEWS: Document it.
* tests/actions.at, tests/calc.at: Use parse.error instead of
%error-verbose.
Alex Rozenman [Sat, 27 Jun 2009 17:35:25 +0000 (20:35 +0300)]
Regen.
Alex Rozenman [Sat, 23 May 2009 15:48:03 +0000 (18:48 +0300)]
Named symbol references.
Discussed in:
http://lists.gnu.org/archive/html/bison-patches/2009-01/msg00000.html
http://lists.gnu.org/archive/html/bison-patches/2009-02/msg00002.html
http://lists.gnu.org/archive/html/bison-patches/2009-03/msg00009.html
* src/parse-gram.y: Add new syntax (named_ref.opt).
* src/reader.c: Store named refs in symbol lists.
* src/reader.h: New argument for symbol_append and
action_append functions.
* src/scan-code.h: Add new field (named_ref) into
code_props data structure. Keeps named ref of midrule
actions.
* src/scan-code.l: Support for named refs in semantic
action code. New function 'parse_named_ref'.
* src/scan-gram.l: Support bracketed id.
* src/symlist.c: Store named refs in symbol lists.
* src/symlist.h: New field in symbol list: named_ref.
* src/named-ref.h: New file, a struct for named_ref.
* src/named-ref.cp: New file, named_ref_new function.
* src/local.mk: Add two new files.
* tests/testsuite.at: Include new test group:
* tests/named-refs.at: this new file.
Akim Demaille [Thu, 25 Jun 2009 04:03:18 +0000 (06:03 +0200)]
hash: check insertion for memory exhaustion.
* src/uniqstr.c (uniqstr_new): New.
Akim Demaille [Wed, 24 Jun 2009 14:52:23 +0000 (16:52 +0200)]
variables: rename namespace as api.namespace.
Discussed in
http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00033.html
* data/bison.m4 (b4_percent_define_copy_, b4_percent_define_copy):
New.
(b4_percent_define_use): New.
Use it where applicable.
* data/c++.m4: Replace uses of the variable "namespace" by
"api.namespace".
Default the latter to the former.
* doc/bison.texinfo (Decl Summary): Document "namespace" as
obsolete.
Document api.namespace.
Use @samp to document %define uses, keep @code for identifiers.
* NEWS: Likewise.
* tests/c++.at, tests/input.at: Test api.namespace instead of
namespace. (The tests passed with namespace.)
Akim Demaille [Thu, 11 Jun 2009 12:50:25 +0000 (14:50 +0200)]
style changes.
* data/xslt/xml2dot.xsl, data/xslt/xml2xhtml.xsl: Space changes.
* src/print-xml.c: Style changes.
* tests/conflicts.at: Comment changes.
Akim Demaille [Thu, 11 Jun 2009 12:45:10 +0000 (14:45 +0200)]
xml: beware of user strings used to give a %prec to rules.
* tests/conflicts.at (%prec with user strings): New.
* src/gram.c (grammar_rules_print_xml): Escape the precedence for
XML output.
Akim Demaille [Thu, 11 Jun 2009 12:42:12 +0000 (14:42 +0200)]
hash: check insertion for memory exhaustion.
* src/muscle-tab.c (muscle_insert, muscle_grow)
* src/state.c (state_hash_insert): Check the return value of
hash_insert.
Akim Demaille [Thu, 11 Jun 2009 12:36:18 +0000 (14:36 +0200)]
tests: honor TESTSUITEFLAGS in every check target.
* tests/local.mk (RUN_TESTSUITE): New.
(check-local, installcheck-local, maintainer-check-g++)
(maintainer-check-posix, maintainer-check-valgrind): Use it.
Akim Demaille [Thu, 11 Jun 2009 07:15:03 +0000 (09:15 +0200)]
gnulib: update.
The previous patch accidently sent back gnulib in the past.
Reported by Eric Blake.
* gnulib: update to latest.
Akim Demaille [Wed, 10 Jun 2009 18:14:52 +0000 (20:14 +0200)]
deterministic test suite.
Some consistency checks on symbols are performed after all the
symbols were read, by an iteration over the symbol table. This
traversal is nondeterministic, which can be a problem for test
cases.
Avoid this.
Addresses another form of nondeterminism reported by Joel E. Denny.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html
* tests/input.at (Numbered tokens): Split the hexadecimal/decimal
test in two.
Use different file names for the three tests to make the
maintenance easier.
Akim Demaille [Wed, 10 Jun 2009 08:40:55 +0000 (10:40 +0200)]
gnulib: update.
* gnulib: Update to latest.
* lib/.cvsignore, lib/.gitignore, m4/.cvsignore,
* m4/.gitignore: Regen.
* src/symtab.c (symbol_from_uniqstr, semantic_type_from_uniqstr):
Call xalloc_die on hash_insert failures.
Requested by the new __warn_unused_result__ attribute of
hash_insert.
Akim Demaille [Wed, 3 Jun 2009 21:15:38 +0000 (23:15 +0200)]
deterministic user-token-number redeclaration errors.
Address nondeterminism reported by Joel E. Denny.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html
* src/uniqstr.h: Comment changes.
* src/location.h (boundary_cmp, location_cmp): New.
* src/symtab.c (user_token_number_redeclaration): New.
(symbol_translation): Use it.
* tests/input.at (Numbered tokens): Adjust the expected output.
Akim Demaille [Fri, 22 May 2009 14:13:41 +0000 (16:13 +0200)]
build: avoid ignored errors.
* doc/local.mk ($(CROSS_OPTIONS_TEXI)): Don't generate ignored
errors, they pollute the output.
Joel E. Denny [Sat, 23 May 2009 06:25:28 +0000 (02:25 -0400)]
Convert multiple variable definition warnings to complaints.
* NEWS (2.5): Add a new entry for that change.
* doc/bison.texinfo (Decl Summary): Update %define entry.
(Bison Options): Update -D/--define/-F/--force-define entry.
* src/muscle-tab.c (muscle_percent_define_insert): Implement.
* src/muscle-tab.h (muscle_percent_define_insert): Update
comments.
* tests/input.at (`%define errors'): Update.
(`%define, --define, --force-define'): Update.
(cherry picked from commit
e3a33f7c23fc9febd1bbff33045c8b455a1972a8)
Joel E. Denny [Fri, 22 May 2009 21:14:08 +0000 (17:14 -0400)]
-F/--force-define and relative %define/-D/--define priorities.
* NEWS (2.5): Add documentation to -D/--define entry.
* build-aux/cross-options.pl: Hard-code association of
--force-define with %define.
* doc/bison.texinfo (Decl Summary): In %define entry,
cross-reference command-line options.
(Bison Options): Add documentation to -D/--define entry.
(Option Cross Key): Widen column for --force-define row.
* src/getargs.c (usage): Document -F/--force-define. Realign
options in output.
(short_options, long_options, getargs): Parse -F/--force-define,
and update muscle_percent_define_insert invocations.
* src/muscle-tab.h (muscle_percent_define_how): New enum type.
(muscle_percent_define_insert): Add argument with that type.
* src/muscle-tab.c (muscle_percent_define_insert): Implement
-F/--force-define behavior and priorities.
(muscle_percent_define_ensure): Update
muscle_percent_define_insert invocation.
* src/parse-gram.y (prologue_declaration): Update
muscle_percent_define_insert invocations.
* tests/input.at (`%define, --define'): Rename to...
(`%define, --define, --force-define'): ... this and extend.
(cherry picked from commit
34d419381579dd30642e5646aaeaece36207be94)
Conflicts:
src/getargs.c
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
Joel E. Denny [Fri, 22 May 2009 05:39:07 +0000 (01:39 -0400)]
Update some comments to make sense for -D.
* data/bison.m4 (b4_check_user_names): In header comments, say
"user occurrence" instead of "grammar occurrence".
* src/muscle-tab.h (muscle_percent_define_insert): Likewise.
(muscle_percent_code_grow): Likewise just for consistency.
(cherry picked from commit
246c4efafed178058a22b96d7a046340f6119057)
Conflicts:
src/muscle-tab.h
Joel E. Denny [Wed, 20 May 2009 21:14:08 +0000 (17:14 -0400)]
* data/c++.m4 (b4_namespace_close): Simplify slightly.
(cherry picked from commit
e7bfa8b7211e2a02f4cec6f122b3141ad2ca97fb)
Joel E. Denny [Tue, 19 May 2009 21:51:05 +0000 (17:51 -0400)]
Handle a trailing `:' in a user-supplied C++ namespace better.
* data/c++.m4 (b4_namespace_close): Don't let it be printed
among the closing braces here. This fix might make the
generated code easier to debug, but otherwise it should be
insignificant because a trailing `:' is a C++ error already.
(cherry picked from commit
8c221795affd367ac106161610d42fc94633e3fd)
Akim Demaille [Tue, 19 May 2009 09:29:40 +0000 (11:29 +0200)]
remove useless variable.
* src/getargs.c (skeleton_arg): Remove now useless variable.
Should help the compiler see that this printf-like call is sane.
Akim Demaille [Fri, 15 May 2009 14:06:31 +0000 (16:06 +0200)]
Rename token.prefix as api.tokens.prefix.
Discussed here.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00024.html.
* NEWS, data/bison.m4, data/c.m4, data/java.m4, doc/bison.texinfo,
* tests/c++.at, tests/calc.at, tests/java.at, tests/local.at
(token.prefix): Rename as...
(api.tokens.prefix): this.
Akim Demaille [Thu, 7 May 2009 21:18:44 +0000 (23:18 +0200)]
doc: use C++ headers.
* doc/bison.texinfo (Calc++ Scanner): Prefer C++ headers to C
headers.
Akim Demaille [Thu, 7 May 2009 07:13:08 +0000 (09:13 +0200)]
doc: token.prefix
* doc/bison.simple (Decl Summary): Document token.prefix.
(Calc++ Parser): Various fixes.
Formatting changes.
Use token.prefix.
Introduce a macro TOKEN to shorten the code and make it more
readable.
(Calc++ Scanner): Adjust.
* NEWS (Variable token.prefix): New.
Akim Demaille [Tue, 5 May 2009 07:35:34 +0000 (09:35 +0200)]
tests: check token numbers.
* tests/input.at (Numbered tokens): New.
Akim Demaille [Mon, 4 May 2009 19:23:55 +0000 (21:23 +0200)]
bison: catch bad symbol names.
* src/scan-gram.l({int}{id}): Report as an invalid identifier.
* tests/input.at: Adjust.
Akim Demaille [Mon, 4 May 2009 19:15:17 +0000 (21:15 +0200)]
identifiers: dashes are letters.
Dashes can now start identifiers (symbols and directives).
* src/scan-gram.l ({letter}): Add dash.
({id}): Remove it.
* tests/input.at (Symbols): Adjust.
Remove stray comment.
* tests/regression.at (Invalid inputs): Adjust error message.
* doc/bison.texinfo (Symbols): Update.
Joel E. Denny [Fri, 1 May 2009 06:51:31 +0000 (02:51 -0400)]
Declare %code to be a permanent feature.
* NEWS (2.4.2): Here.
* doc/bison.texinfo (Prologue Alternatives): Don't say it's
experimental.
(Decl Summary): Likewise.
(cherry picked from commit
cefb18280b83ea19b742a22f7be8661b518874b5)
Joel E. Denny [Thu, 30 Apr 2009 05:04:33 +0000 (01:04 -0400)]
Convert underscores to dashes in some %define variable names.
For now, just api.push-pull and lr.keep-unreachable-states.
Maintain old names for backward compatibility.
* NEWS (2.5): Document.
* data/c.m4 (b4_identification): Update comment.
* data/yacc.c: Update access.
* doc/bison.texinfo: Update.
* etc/bench.pl.in (bench_push_parser): Update use.
* src/files.c (tr): Move to...
* src/getargs.c, src/getargs.h (tr): ... here because I can't
think of a better place to expose it. My logic is that, for all
uses of tr so far, command-line arguments can be involved, and
getargs.h is already included.
* src/main.c (main): Update access.
* src/muscle_tab.c (muscle_percent_define_insert): Convert old
variable names to new variable names before assigning value.
* src/reader.c (reader): Update setting default.
* tests/calc.at: Update uses.
* tests/conflicts.at (Unreachable States After Conflict
Resolution): Update use.
* tests/input.at (%define enum variables): Update use.
(%define backward compatibility): New test group.
* tests/push.at: Update uses.
* tests/reduce.at: Update uses.
* tests/torture.at: Update uses.
(cherry picked from commit
812775a0391e122eff1983afea2da96c600c7307)
Conflicts:
data/c.m4
etc/bench.pl.in
src/parse-gram.c
src/parse-gram.h
tests/conflicts.at
Joel E. Denny [Thu, 30 Apr 2009 04:31:12 +0000 (00:31 -0400)]
Set all front-end %define defaults in one place.
* src/main.c (main): Move lr.keep_unreachable_states default...
* src/reader.c (reader): ... to here.
(cherry picked from commit
1c4aa81df1fd11e2be5b2af78b4375f85bb2e59e)
Joel E. Denny [Thu, 30 Apr 2009 01:48:21 +0000 (21:48 -0400)]
Rename lr.default_reductions to lr.default-reductions.
* NEWS (2.5): Here.
* doc/bison.texinfo: Here.
* src/lalr.c (initialize_LA): Here.
* src/print.c (print_reductions): Here.
* src/reader.c (reader): Here.
* src/tables.c (action_row): Here.
* tests/input.at (%define enum variables): Here.
* tests/reduce.at (AT_TEST_LR_DEFAULT_REDUCTIONS): Here.
(cherry picked from commit
1d0f55cc843d6dfca01e2c13fd49ee2c119c6631)
Joel E. Denny [Thu, 30 Apr 2009 00:50:01 +0000 (20:50 -0400)]
Pacify ./configure --enable-gcc-warnings.
* tests/input.at (Symbols): Prototype yyerror and yylex.
(cherry picked from commit
0b59345789e88b34ec7e3a68b99d6fbd368cb798)
Conflicts:
ChangeLog
Joel E. Denny [Thu, 30 Apr 2009 00:05:32 +0000 (20:05 -0400)]
Document how `%define "var" "value"' is not M4-friendly.
* src/parse-gram.y (variable): In comments here.
(cherry picked from commit
904ea1bca411d4d5f4f729e7f2982841a858f5ea)
Conflicts:
src/parse-gram.c
Joel E. Denny [Fri, 24 Apr 2009 06:13:26 +0000 (02:13 -0400)]
Clean up recent patches a little.
Reported by Akim Demaille.
* doc/bison.texinfo (Understanding): Fix typos.
* src/print.c (print_reductions): Don't use negated variable.
(cherry picked from commit
379261b3fd4e799c37bda6d354e7b8fe582357a6)
Joel E. Denny [Fri, 24 Apr 2009 05:42:58 +0000 (01:42 -0400)]
List accepted values for a %define enum variable with an invalid value.
Suggested by Akim Demaille at
<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00082.html>.
* data/bison.m4 (_b4_percent_define_check_values): Implement.
* src/muscle-tab.c (muscle_percent_define_check_values): Implement.
* tests/input.at (%define lr.default_reductions invalid values): Merge
into...
(%define enum variables): ... here, and update output.
(cherry picked from commit
25029e164a3b2385ae6d95ca4cd19bad36550c92)
Joel E. Denny [Thu, 23 Apr 2009 08:12:58 +0000 (04:12 -0400)]
Rename "default rule" to "default reduction".
This includes changing variable names in code, changing
comments, and renaming %define lr.default_rules to %define
lr.default_reductions.
* NEWS (2.5): Update IELR documentation.
* data/bison.m4 (b4_integral_parser_tables_map): Adjust YYDEFACT
documentation.
* data/glr.c, data/lalr1.java: Sync copyright dates.
* doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions
and lr.type documentation. Make some other wording
improvements.
(Glossary): Adjust cross-references and Default Reduction
definition.
* src/lalr.c (state_lookahead_tokens_count): Adjust code.
Remove a confusing comment pointed out by Akim Demaille.
(initialize_LA): Adjust code.
* src/print-xml.c (print_reductions): Adjust code.
* src/print.c (print_reductions): Adjust code.
* src/reader.c (reader): Adjust code.
* src/tables.c (action_row): Adjust code.
(token_actions): Adjust code.
* src/tables.h: Adjust YYDEFACT documentation.
* tests/input.at (%define lr.default_rules invalid values):
Rename test group to...
(%define lr.default_reductions invalid values): ... this, and
update grammar file and expected output.
* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to...
(AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.
Akim Demaille [Tue, 21 Apr 2009 20:17:25 +0000 (22:17 +0200)]
tests: check the use of dashes and periods in symbols.
* tests/input.at (Symbol): New test group.