]> git.saurik.com Git - bison.git/log
bison.git
14 years agoportability: fix spawning on at least FreeBSD 8 and FreeBSD 9.
Joel E. Denny [Tue, 23 Mar 2010 15:42:30 +0000 (11:42 -0400)] 
portability: fix spawning on at least FreeBSD 8 and FreeBSD 9.

Reported by Johan van Selst at
<http://lists.gnu.org/archive/html/bug-bison/2010-03/msg00014.html>.
* NEWS (2.4.3): New.
* THANKS (Johan van Selst): Add.
* etc/prefix-gnulib-mk (prefix): Adjust regex for makefile
targets so that gnulib's new c++defs.h is matched.
* gnulib: Update to latest.
(cherry picked from commit 311b2e56eaad952fc7908336e3aeb019dd8bf1ee)

Conflicts:

NEWS

14 years agomaint: update for changes to gnulib's announce-gen.
Joel E. Denny [Sat, 20 Mar 2010 19:41:34 +0000 (15:41 -0400)] 
maint: update for changes to gnulib's announce-gen.

* HACKING (Announce): RELEASE_TYPE=major must now be written
RELEASE_TYPE=stable.
(cherry picked from commit 5a3c69f10348a36ac6e8e822324670c6136f6621)

14 years agoVersion 2.4.2.
Joel E. Denny [Sat, 20 Mar 2010 17:10:09 +0000 (13:10 -0400)] 
Version 2.4.2.

* NEWS (2.4.2): Set version and date.  For the recent test suite
portability fixes, don't be so optimistic about their success
given the lack of feedback on the affected platforms.
(cherry picked from commit 08090fe64c2956a4211fb5f6fd40762fe1f198b5)

Conflicts:

NEWS

14 years agotests: fix maintainer-xml-check for recent changes.
Joel E. Denny [Tue, 23 Feb 2010 02:52:39 +0000 (21:52 -0500)] 
tests: fix maintainer-xml-check for recent changes.

* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): Use
AT_BISON_CHECK_NO_XML rather than AT_BISON_CHECK because an
output file whose name conflicts with a previous output file
is now never generated.
(cherry picked from commit a3d760ef5d7d9bcab78268f5117c39566aa0345c)

14 years agoportability: fix several issues with M4 subprocess.
Joel E. Denny [Mon, 22 Feb 2010 23:09:19 +0000 (18:09 -0500)] 
portability: fix several issues with M4 subprocess.

M4's output pipe was not being drained upon fatal errors during
scan_skel.  As a result, broken-pipe messages from M4 were seen
on at least AIX, HP-UX, Solaris, and RHEL4, and this caused a
failure in the test suite.  The problem was that, on platforms
where the default disposition for SIGPIPE is ignore instead of
terminate, M4 sometimes saw fwrite fail with errno=EPIPE and
then reported it.  However, there's some sort of race condition,
because the new test group occasionally succeeded.
Reported by Albert Chin at
<http://lists.gnu.org/archive/html/bug-bison/2010-02/msg00004.html>.

There were also problems with the test suite livelocking on
Tru64 5.1b.  Reported by Didier Godefroy at
<http://lists.gnu.org/archive/html/bug-bison/2009-05/msg00005.html>.
Switching to create_pipe_bidi suggested by Akim Demaille.

To attempt to solve both of these problems, switch to gnulib's
create_pipe_bidi and register M4 process as a slave.  Along the
way, clean up file name conflict handling, which was affected by
the broken-pipe problem before the switch.
* NEWS (2.4.2): Document.
* THANKS (Didier Godefroy): Add.
* bootstrap.conf (gnulib_modules): Add pipe.
* gnulib: Update to latest to make sure we have all the latest
fixes.
* lib/local.mk (lib_libbison_a_SOURCES): Remove subpipe.h and
subpipe.c.
* po/POTFILES.in (lib/subpipe.c): Remove.
* src/files.c (compute_output_file_names): Update invocations
of output_file_name_check.
(output_file_name_check): In the case that the grammar file
would be overwritten, use complain instead of fatal, but replace
the output file name with /dev/null.  Use the /dev/null solution
for the case of two conflicting output files as well because it
seems safer in case Bison one day tries to open both files at
the same time.
* src/files.h (output_file_name_check): Update prototype.
* src/output.c (output_skeleton): Use create_pipe_bidi and
wait_subprocess.  Assert that scan_skel completely drains the
pipe.
* src/scan-skel.l (at_directive_perform): Update
output_file_name_check invocation.
* tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): Check that the
grammar file actually isn't overwritten.
(Conflicting output files: -o foo.y): Update expected output.
* tests/skeletons.at (Fatal errors but M4 continues producing
output): New test group.
(cherry picked from commit 22cc8d813ee57c9631e527a31010ab138f9b7e06)

Conflicts:

NEWS
bootstrap.conf
lib/.cvsignore
lib/.gitignore
lib/Makefile.am
m4/.cvsignore
m4/.gitignore
src/output.c

14 years agoUpdate POTFILES.
Joel E. Denny [Fri, 5 Feb 2010 02:07:07 +0000 (21:07 -0500)] 
Update POTFILES.

* HACKING (Release Procedure): Add reminder about keeping
POTFILES files up-to-date.
* po/POTFILES.in (src/muscle-tab.c, src/scan-skel.l): Add.
(cherry picked from commit 9398411bfc774e7d5c46c77039d8ea72f8185a7d)

14 years agoCode cleanup.
Joel E. Denny [Mon, 1 Feb 2010 22:26:29 +0000 (17:26 -0500)] 
Code cleanup.

* tests/atlocal.in (abs_top_srcdir): Remove shell variable,
which is already defined in atconfig.
(cherry picked from commit 0ee1af2ed57e29c8f5971884d7196e04f524b0b2)

14 years agotests: fix missing include caught by g++ 4.4.1.
Joel E. Denny [Fri, 22 Jan 2010 19:53:42 +0000 (14:53 -0500)] 
tests: fix missing include caught by g++ 4.4.1.

Reported by Tys Lefering.
* HACKING (Release checks): Add note about trying a recent GCC.
* tests/regression.at (_AT_DATA_DANCER_Y): For C++, include
cstdlib for abort.
(_AT_DATA_EXPECT2_Y): Likewise.

14 years ago* cfg.mk (gnulib_dir): Assume gnulib is a subdirectory.
Joel E. Denny [Thu, 21 Jan 2010 23:51:29 +0000 (18:51 -0500)] 
* cfg.mk (gnulib_dir): Assume gnulib is a subdirectory.
(cherry picked from commit 97d520633b611829cbd867aec5479e8a9a2759a7)

14 years agomaint: automate PACKAGE_COPYRIGHT_YEAR update, and update it.
Joel E. Denny [Thu, 21 Jan 2010 17:18:45 +0000 (12:18 -0500)] 
maint: automate PACKAGE_COPYRIGHT_YEAR update, and update it.

* HACKING (Release Procedure): Update notes on copyright years.
* Makefile.am (update-package-copyright-year): New target rule.
* build-aux/update-package-copyright-year: New file.
* cfg.mk (update-copyright): Add update-package-copyright-year
as a dependency.
(cherry picked from commit af8a609a90c48d1a7e6ea9e31dba4fbad6c7fbed)

14 years ago* bootstrap: Import improvements from latest gnulib.
Joel E. Denny [Wed, 20 Jan 2010 05:24:55 +0000 (00:24 -0500)] 
* bootstrap: Import improvements from latest gnulib.
(cherry picked from commit 73edad9a25ff7dd15f276a071a39e95bc8cca07a)

Conflicts:

bootstrap

14 years agobuild: require Automake 1.11.1 to avoid a security flaw.
Joel E. Denny [Tue, 19 Jan 2010 23:08:48 +0000 (18:08 -0500)] 
build: require Automake 1.11.1 to avoid a security flaw.

* HACKING (Release Procedure): Don't document Automake security
flaw here.
* configure.ac (AM_INIT_AUTOMAKE): Require 1.11.1, and explain
why here.
(cherry picked from commit 9736697d6d8f9e719cae8b22ff842c5098c7edcb)

14 years agognulib: update to latest.
Joel E. Denny [Tue, 19 Jan 2010 19:54:10 +0000 (14:54 -0500)] 
gnulib: update to latest.

14 years agoChangeLog (2006-09-15): add Odd Arild Olsen's role for push.c.
Joel E. Denny [Tue, 19 Jan 2010 16:41:54 +0000 (11:41 -0500)] 
ChangeLog (2006-09-15): add Odd Arild Olsen's role for push.c.

14 years agoThank the developer of the initial push parser implementation.
Joel E. Denny [Fri, 15 Jan 2010 18:42:04 +0000 (13:42 -0500)] 
Thank the developer of the initial push parser implementation.

This unfortunate oversight is several years old.
* THANKS (Odd Arild Olsen): Add.

14 years agoFix some comments concerning LR(0) versus LALR(1).
Joel E. Denny [Mon, 4 Jan 2010 19:13:43 +0000 (14:13 -0500)] 
Fix some comments concerning LR(0) versus LALR(1).

Stop equating LR(0) with nondeterminism and LALR(1) with
determinism.  That is, if all states are consistent, then LR(0)
tables are deterministic.  On the other hand, LALR(1) tables
might be nondeterministic before conflict resolution, and GLR
permits LALR(1) tables to remain nondeterministic.
* src/LR0.c, src/LR0.h: Here.
* src/lalr.c, src/lalr.h: Here.
* src/main.c (main): Here.
* src/state.c, src/state.h: Here.

* src/ielr.h (ielr): In preconditions, expect LR(0) not LALR(1)
parser tables.
(cherry picked from commit 1c4ad777cb220ea669dc934c9b600a25a824a658)

14 years agomaint: run "make update-copyright"
Joel E. Denny [Mon, 4 Jan 2010 18:38:09 +0000 (13:38 -0500)] 
maint: run "make update-copyright"

14 years agoPOSIX: complain if %prec's token was not defined.
Joel E. Denny [Wed, 30 Dec 2009 08:14:12 +0000 (03:14 -0500)] 
POSIX: complain if %prec's token was not defined.

* NEWS (2.5): Document.
* src/reader.c (grammar_rule_check): Convert warning to
complaint.
* tests/input.at (%prec's token must be defined): Update.
(cherry picked from commit 510df9519ec6347c13a57535d0589e3a87bfe2fe)

14 years agoPOSIX: warn if %prec's token was not defined.
Joel E. Denny [Wed, 30 Dec 2009 08:20:11 +0000 (03:20 -0500)] 
POSIX: warn if %prec's token was not defined.

Reported by Florian Krohm at
<http://lists.gnu.org/archive/html/bug-bison/2009-12/msg00005.html>.
* NEWS (2.4.2): Document.
* src/reader.c (grammar_rule_check): Implement.
(grammar_current_rule_prec_set): Add comments explaining that we
here assume a %prec identifier is a token, but we still manage
to support POSIX.
* tests/input.at (%prec's token must be defined): New test
group.
(cherry picked from commit f1ceed07743630aa2aef7c77d8bde23c3794ee1b)

14 years ago* HACKING (Release Procedure): Recommend a secure automake.
Joel E. Denny [Thu, 31 Dec 2009 17:43:33 +0000 (12:43 -0500)] 
* HACKING (Release Procedure): Recommend a secure automake.

(cherry picked from commit d2829fdc040f928cc3596725783183f9af8ca5af)

14 years agoportability: `<' and `>' are not always defined on addresses.
Joel E. Denny [Tue, 29 Dec 2009 17:43:26 +0000 (12:43 -0500)] 
portability: `<' and `>' are not always defined on addresses.

Specifically, don't sort objects by their memory addresses when
they're not allocated in the same array or other object.  Though
I haven't found a test case where that fails on my platform, C
says the behavior is undefined.
* src/AnnotationList.c (AnnotationList__insertInto): Remove
FIXME.  Use new id field of InadequacyList nodes rather than
their memory addresses when sorting.
(AnnotationList__compute_from_inadequacies): Add
inadequacy_list_node_count argument to pass to
InadequacyList__new_conflict.
* src/AnnotationList.h
(AnnotationList__compute_from_inadequacies): Update prototype
and documentation for new argument.
* src/InadequacyList.c (InadequacyList__new_conflict): Add
node_count argument and use it to assign a unique ID.
* src/InadequacyList.h (InadequacyListNodeCount): New typedef.
(InadequacyList): Add id field.
(InadequacyList__new_conflict): Update prototype and
documentation for new argument.
* src/ielr.c (ielr_compute_annotation_lists): Update
AnnotationList__compute_from_inadequacies invocation.
(cherry picked from commit 2728ac7ecd663c4a60f94fe7ab7679a9e83ebcd0)

14 years agoFix handling of yychar manipulation in user semantic actions.
Joel E. Denny [Sun, 20 Dec 2009 07:22:53 +0000 (02:22 -0500)] 
Fix handling of yychar manipulation in user semantic actions.

The problem was that yacc.c didn't always update the yychar
translation afterwards.  However, other skeletons appear to be
fine.  glr.c appears to already translate yychar before every
use.  lalr1.cc does not define yychar and does not document its
replacement, yyla, for users.  It does provide yyclearin, but
that does not manipulate yyla and thus requires no translation
update.  In lalr1.java, yychar is out of scope during semantic
actions.
* NEWS (2.5): Document.
* data/yacc.c (YYBACKUP): Don't bother translating yychar into
yytoken here.
(yyparse, yypush_parse): Instead, translate before every use of
yytoken, and add comments explaining this approach.
* tests/actions.at (Destroying lookahead assigned by semantic
action): New test group checking that translation happens before
lookahead destructor calls at parser return.  Previously,
incorrect destructors were called.
* tests/conflicts.at (parse.error=verbose and consistent
errors): New test group checking that translation happens at
syntax error detection before the associated verbose error
message and the associated lookahead destructor calls.  While
the destructor call is fixed by this patch, the verbose error
message is currently incorrect due to another bug (see
comments in test group), so this is an expected failure for now.

14 years agoYYFAIL: warn about uses and remove from lalr1.java.
Joel E. Denny [Mon, 21 Dec 2009 19:58:48 +0000 (14:58 -0500)] 
YYFAIL: warn about uses and remove from lalr1.java.

* NEWS (2.5): Document.
* data/lalr1.java (parser::YYStack::YYFAIL): Rename to YYERRLAB,
and make it private.  Update all uses.
* src/scan-code.l (SC_RULE_ACTION): Implement warning.

14 years agoYYFAIL: deprecate.
Joel E. Denny [Mon, 21 Dec 2009 19:51:40 +0000 (14:51 -0500)] 
YYFAIL: deprecate.

* NEWS (2.4.2): Document deprecation and the phase-out plan.
* data/lalr1.java (parser::YYStack::YYFAIL): Add comment about
deprecation.
* data/yacc.c (YYFAIL): Likewise, and suppress warnings about
YYFAIL from GCC cpp's -Wunused-macros.
* doc/bison.texinfo (Java Action Features): Remove YYFAIL
documentation.
(LocalWords): Remove YYFAIL.

14 years agotests: cleanup.
Joel E. Denny [Sun, 20 Dec 2009 21:03:07 +0000 (16:03 -0500)] 
tests: cleanup.

* tests/c++.at (Syntax error discarding no lookahead): Don't
ignore stderr.  Instead, eliminate remaining warnings.

14 years agolalr1.cc: don't discard non-existent lookahead on syntax error.
Joel E. Denny [Sat, 19 Dec 2009 04:57:18 +0000 (23:57 -0500)] 
lalr1.cc: don't discard non-existent lookahead on syntax error.

* data/lalr1.cc (parser::parse): Check yyempty first.
* tests/c++.at (Syntax error discarding no lookahead): New test
group.

14 years agoCode cleanup.
Joel E. Denny [Thu, 17 Dec 2009 06:09:09 +0000 (01:09 -0500)] 
Code cleanup.

* src/symtab.c, src/symtab.h (symbol_class_get_string): Remove
function, which is no longer used.

14 years agoAdd gcc's -Wundef to test suite and fix another warning from it.
Joel E. Denny [Wed, 16 Dec 2009 18:19:19 +0000 (13:19 -0500)] 
Add gcc's -Wundef to test suite and fix another warning from it.

* NEWS (2.4.2): Update description of -Wundef fix.
* configure.ac (WARN_CXXFLAGS_TEST): New substitution.
(WARN_CFLAGS_TEST): New substitution.
* data/glr.c: Avoid warning about __STRICT_ANSI__.
* tests/atlocal.in (CFLAGS): Use WARN_CFLAGS_TEST instead of
WARN_CFLAGS.
(NO_WERROR_CFLAGS): Likewise.
(CXXFLAGS): Use WARN_CXXFLAGS_TEST instead of WARN_CXXFLAGS.

14 years ago* data/yacc.c: Reformat m4 a little.
Joel E. Denny [Wed, 16 Dec 2009 06:41:17 +0000 (01:41 -0500)] 
* data/yacc.c: Reformat m4 a little.

14 years agoDocument gcc -Wundef fix.
Joel E. Denny [Wed, 16 Dec 2009 06:14:44 +0000 (01:14 -0500)] 
Document gcc -Wundef fix.

* NEWS (2.4.2): Here.
* THANKS (Jonathan Nieder): Add.

14 years agoSimplify y.tab.c when location tracking is disabled.
Jonathan Nieder [Wed, 16 Dec 2009 04:07:46 +0000 (22:07 -0600)] 
Simplify y.tab.c when location tracking is disabled.

* data/yacc.c: Do not check YYLTYPE_IS_TRIVIAL if location
tracking is not enabled.  Instead, unconditionally define
YY_LOCATION_PRINT as a no-op for backward compatibility.

14 years agoAvoid warnings from gcc -Wundef y.tab.c.
Jonathan Nieder [Wed, 16 Dec 2009 04:03:18 +0000 (22:03 -0600)] 
Avoid warnings from gcc -Wundef y.tab.c.

* data/glr.c: Check if YYENABLE_NLS and YYLTYPE_IS_TRIVIAL are
defined before using them.
* data/lalr1.cc: Likewise.
* data/yacc.c: Likewise.

14 years agoautoconf: update to latest for fix of M4 detection.
Joel E. Denny [Tue, 15 Dec 2009 23:56:52 +0000 (18:56 -0500)] 
autoconf: update to latest for fix of M4 detection.

Reported by Eric Blake.
* submodules/autoconf: Update.

14 years agoportability: use -DGNULIB_POSIXCHECK.
Joel E. Denny [Tue, 15 Dec 2009 05:15:41 +0000 (00:15 -0500)] 
portability: use -DGNULIB_POSIXCHECK.

Reported by Eric Blake.  See discussions at
<http://lists.gnu.org/archive/html/bug-bison/2009-09/msg00008.html>
and
<http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00108.html>.
* HACKING (Release checks): Suggest -DGNULIB_POSIXCHECK.
* bootstrap.conf (gnulib_modules): Add all the printf modules
suggested by -DGNULIB_POSIXCHECK.  Add realloc-posix as
suggested by -DGNULIB_POSIXCHECK for gnulib's own vasnprintf.c.
(excluded_files): Remove m4/printf-posix.m4.
* tests/atlocal.in (LIBS): As for LDADD in src/local.mk, add
lib/libbison.a so gnulib libraries can be linked.

14 years agognulib: update for fix of fprintf-posix, which we'll use soon.
Joel E. Denny [Tue, 15 Dec 2009 22:20:31 +0000 (17:20 -0500)] 
gnulib: update for fix of fprintf-posix, which we'll use soon.

* etc/prefix-gnulib-mk (prefix): Adjust regex for make file
targets so that gnulib's new arg-nonnull.h and link-warning.h
are matched.
* gnulib: Update.

14 years agoEnable assertion output and --disable-assert for configure.
Joel E. Denny [Mon, 14 Dec 2009 23:04:57 +0000 (18:04 -0500)] 
Enable assertion output and --disable-assert for configure.

* bootstrap.conf (gnulib_modules): Add assert module.
* src/system.h (aver): Define as assert, and summarize the
discussion on this issue.

14 years agoExpand GLR acronym in summary of Bison.
Joel E. Denny [Mon, 14 Dec 2009 21:04:00 +0000 (16:04 -0500)] 
Expand GLR acronym in summary of Bison.

Based on discussion with Akim Demaille starting at
<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00087.html>.
* doc/bison.texinfo (Introduction): Here.
* src/getargs.c (usage): Here.
(cherry picked from commit 51c7ca01e2c9cfb5c7a274bed0e14899adbd005c)

14 years ago Document named references.
Alex Rozenman [Sat, 14 Nov 2009 20:06:26 +0000 (22:06 +0200)] 
Document named references.

* doc/bison.texinfo (Actions): Add new example and xref to
Using Named References node.
(Using Named References): New node.

15 years agocleanup.
Joel E. Denny [Fri, 16 Oct 2009 23:27:12 +0000 (19:27 -0400)] 
cleanup.

* src/Sbitset.c (Sbitset__new_on_obstack): Use Sbitset instead
of char*.
(Sbitset__isEmpty): Use Sbitset instead of char*.
* src/Sbitset.h (Sbitset): Make it a pointer to unsigned char
instead of char.  This helps to avoid casting errors.
(Sbitset__or): Use Sbitset instead of char*.

15 years agoportability: don't assume 8-bit bytes.
Joel E. Denny [Fri, 16 Oct 2009 23:20:43 +0000 (19:20 -0400)] 
portability: don't assume 8-bit bytes.

That is, use CHAR_BIT and UCHAR_MAX instead of 8 and 0xff.
* src/Sbitset.h (Sbitset__nbytes): Here.
(Sbitset__byteAddress): Here.
(Sbitset__bit_mask): Here.
(Sbitset__last_byte_mask): Here.
(Sbitset__ones): Here.
(SBITSET__FOR_EACH): Here.

15 years agoportability: use va_start and va_end in the same function.
Joel E. Denny [Sun, 11 Oct 2009 20:15:39 +0000 (16:15 -0400)] 
portability: use va_start and va_end in the same function.

* src/complain.c (error_message): Move va_end from here...
(ERROR_MESSAGE): ... to here.

15 years ago* data/bison.m4: Update comments for rename to muscle-tab.h.
Joel E. Denny [Thu, 8 Oct 2009 21:08:01 +0000 (17:08 -0400)] 
* data/bison.m4: Update comments for rename to muscle-tab.h.
(cherry picked from commit 51f255a5308bb70a4f479196574f2049ed89d6d3)

15 years agoMinor code cleanup.
Joel E. Denny [Thu, 8 Oct 2009 03:09:43 +0000 (23:09 -0400)] 
Minor code cleanup.

* src/muscle-tab.c (MUSCLE_USER_NAME_CONVERT): Remove macro and
replace all uses with UNIQSTR_CONCAT.
* src/uniqstr.c (uniqstr_vsprintf): New function.
* src/uniqstr.h (uniqstr_vsprintf): Add prototype.
(UNIQSTR_CONCAT, UNIQSTR_GEN_FORMAT, UNIQSTR_GEN_FORMAT_): New
macros.

15 years ago* TODO (Complaint submessage indentation): New.
Joel E. Denny [Tue, 6 Oct 2009 16:47:47 +0000 (12:47 -0400)] 
* TODO (Complaint submessage indentation): New.

15 years agoMinor code cleanup.
Joel E. Denny [Mon, 5 Oct 2009 03:44:44 +0000 (23:44 -0400)] 
Minor code cleanup.

* src/parse-gram.y: Clean up sorting of declarations.
Use types to simplify %printer declarations where possible.
Provide %printer for BRACKETED_ID and symbol.prec.
* src/symtab.c: Whitespace change.

15 years agotests: skip tests of file names that platform does not support.
Joel E. Denny [Mon, 5 Oct 2009 02:59:18 +0000 (22:59 -0400)] 
tests: skip tests of file names that platform does not support.

Reported by Michael Raskin at
<http://lists.gnu.org/archive/html/bug-bison/2009-09/msg00001.html>.
* THANKS (Michael Raskin): Add.
* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Fix.  Cygwin used
to fail at least for file names containing ":" or "\".
(cherry picked from commit 2ceb8c617cac934b45f101ab44508d72239c894b)

Conflicts:

THANKS

15 years agoyysyntax_error: avoid duplicate lookahead collection.
Joel E. Denny [Wed, 23 Sep 2009 21:39:39 +0000 (17:39 -0400)] 
yysyntax_error: avoid duplicate lookahead collection.

Except when memory reallocation is required, this change
eliminates the need to invoke yysyntax_error twice and thus to
repeat the collection of lookaheads.  It also prepares for
future extensions that will make those repetitions more
expensive and that will require additional memory management in
yysyntax_error.  Finally, it fixes an obscure bug already
exercised in the test suite.
* data/yacc.c (yysyntax_error): Add arguments for message
buffer variables stored in the parser.  Instead of size, return
status similar to yyparse status but indicating success of
message creation.  Other than the actual reallocation of the
message buffer, import and clean up memory management code
from...
(yyparse, yypush_parse): ... here.
* tests/regression.at (parse.error=verbose overflow): No longer
an expected failure.

15 years agoyysyntax_error: test memory management more.
Joel E. Denny [Wed, 23 Sep 2009 21:37:58 +0000 (17:37 -0400)] 
yysyntax_error: test memory management more.

* tests/atlocal.in (NO_WERROR_CFLAGS): New cpp macro.
* tests/regression.at (parse.error=verbose and
YYSTACK_USE_ALLOCA): New test group.
(parse.error=verbose overflow): New test group that reveals an
obscure bug.  Expected fail for now.

15 years agobenchmarks: use %debug consistently among grammars.
Joel E. Denny [Sun, 4 Oct 2009 18:33:28 +0000 (14:33 -0400)] 
benchmarks: use %debug consistently among grammars.

* etc/bench.pl.in (generate_grammar_triangular): Do not activate
%debug by default.  It can affect the timings even if yydebug=0.
(generate_grammar_calc): For consistency with other grammars,
use YYDEBUG environment variable to set yydebug.

15 years agoRemove dead code.
Joel E. Denny [Sat, 3 Oct 2009 15:53:05 +0000 (11:53 -0400)] 
Remove dead code.

* src/symtab.c (symbol_pack): Here because every symbol's number
is always defined by this time.

15 years agoAdd additional space after periods in NEWS.
Alex Rozenman [Sat, 3 Oct 2009 16:29:14 +0000 (18:29 +0200)] 
Add additional space after periods in NEWS.

* NEWS (2.5): here.

15 years agoUse the correct conversion specifier for size_t.
Joel E. Denny [Tue, 29 Sep 2009 10:54:38 +0000 (06:54 -0400)] 
Use the correct conversion specifier for size_t.

Reported by Jim Meyering.
* src/Sbitset.h (SBITSET__INDEX__CONVERSION_SPEC): New, "zu"
because Sbitset__Index is size_t.
* src/Sbitset.c (Sbitset__fprint): Use it instead of %d.

15 years agotests: don't abuse AT_BISON_CHECK.
Joel E. Denny [Sun, 27 Sep 2009 18:37:00 +0000 (14:37 -0400)] 
tests: don't abuse AT_BISON_CHECK.

* tests/regression.at (parse-gram.y: LALR = IELR): Move
additional shell commands outside of AT_BISON_CHECK.

15 years agotests: check that parse-gram.y's IELR and LALR are identical.
Joel E. Denny [Sat, 26 Sep 2009 18:49:20 +0000 (14:49 -0400)] 
tests: check that parse-gram.y's IELR and LALR are identical.

* tests/atlocal.in (abs_top_srcdir): New shell variable.
* tests/regression.at (parse-gram.y: LALR = IELR): New test
group.

15 years agoFormatting changes.
Akim Demaille [Wed, 23 Sep 2009 13:06:24 +0000 (15:06 +0200)] 
Formatting changes.

* doc/bison.texinfo: here.

15 years agoKeep sub-messages aligned. Fix strings for translation.
Alex Rozenman [Sat, 19 Sep 2009 09:59:33 +0000 (12:59 +0300)] 
Keep sub-messages aligned. Fix strings for translation.

* src/location.h: (location_print): Add return value.
* src/location.c: (location_print): Return number of printed
characters.
* src/complain.h: Two new functions (complain_at_indent,
warn_at_indent).
* src/complain.cpp: Implement the alignment mechanism. Add new
static variable (indent_ptr). Use and update it (error_message,
complain_at_indent, warn_at_indent).
* src/scan-code.l: Fix strings for translations. Use new *_indent
functions (parse_ref, show_sub_messages).
* NEWS (2.5): Add an announcement about named references.

15 years agotodo: short term
Akim Demaille [Thu, 17 Sep 2009 07:41:21 +0000 (09:41 +0200)] 
todo: short term

* TODO (syntax_error, variable names): New.

15 years agodoc: fixes.
Akim Demaille [Thu, 17 Sep 2009 07:40:42 +0000 (09:40 +0200)] 
doc: fixes.

* doc/bison.texinfo: here.
Reported by Alex Rozenman.

15 years agodoc: lalr1.cc and variants.
Akim Demaille [Wed, 16 Sep 2009 20:19:53 +0000 (22:19 +0200)] 
doc: lalr1.cc and variants.

* doc/bison.texinfo (Decl Summary): Document the "lex_symbol" and
"variant" %define variables.
(C++ Semantic Values): Split into...
(C++ Unions, C++ Variants): these.
The latter is new.
(C++ Parser Interface): Fix type names.
Document parser::syntax_error.
Document the fact that locations are not mandatory.
(C++ Scanner Interface): Split into...
(Split Symbols, Complete Symbols): these.
The later is new.
(Calc++ Parsing Driver): Use variants.
Add more comments.
Adjust style.
(Calc++ Parser): Declare all the tokens, no
longer accept raw characters.
Remove %union.
Adjust types and printers.
Remove destructors.
(Calc++ Scanner): Use make_<SYMBOL> functions.
Use strerror in error message.

15 years agodoc: spell checking.
Akim Demaille [Wed, 16 Sep 2009 20:18:57 +0000 (22:18 +0200)] 
doc: spell checking.

* doc/bison.texinfo: here.

15 years agodoc: comment changes.
Akim Demaille [Wed, 16 Sep 2009 20:11:33 +0000 (22:11 +0200)] 
doc: comment changes.

* doc/bison.texinfo: Comment changes.

15 years agolalr1.cc: factor the yytranslate_ invocation in make_SYMBOLS.
Akim Demaille [Wed, 9 Sep 2009 21:09:22 +0000 (23:09 +0200)] 
lalr1.cc: factor the yytranslate_ invocation in make_SYMBOLS.

* data/c++.m4, data/lalr1.cc (parser::symbol_type): Change the
constructor to take a token_type instead of the (internal) symbol
number.
Call yytranslate_.
* data/variant.hh (b4_symbol_constructor_define_): Therefore,
don't call yytranslate_ here.

15 years agoTODO: statistics.
Akim Demaille [Wed, 16 Sep 2009 15:18:31 +0000 (17:18 +0200)] 
TODO: statistics.

* TODO (Figures): New.

15 years agotests: clean up push.at test group titles.
Joel E. Denny [Sun, 13 Sep 2009 17:45:05 +0000 (13:45 -0400)] 
tests: clean up push.at test group titles.

* tests/push.at: Remove "Push Parsing: " from test group titles
because these are already under the banner "Push Parsing Tests".

15 years agoProvide an additional sub-message for clarity.
Alex Rozenman [Sat, 12 Sep 2009 08:48:56 +0000 (11:48 +0300)] 
Provide an additional sub-message for clarity.

Add "symbol not found in production" error message when
an "invalid reference" is detected in named references
resolution.

* src/scan-code.l: Update "invalid reference" case.
* tests/named-ref.at: Adjust test-cases.

15 years agoClean up yacc.c a little.
Joel E. Denny [Sun, 6 Sep 2009 20:59:04 +0000 (16:59 -0400)] 
Clean up yacc.c a little.

* data/yacc.c: Clean up M4 for readability, and make output
whitespace more consistent.  For the main parse function
comment, instead of saying "yyparse or yypush_parse", say either
"yyparse" or "yypush_parse" depending on which it actually is.

15 years agoFix --enable-gcc-warnings.
Joel E. Denny [Thu, 10 Sep 2009 04:12:07 +0000 (00:12 -0400)] 
Fix --enable-gcc-warnings.

* src/parse-gram.y (%printer <param>): Handle param_none.

15 years agolalr1.cc: syntax_error as exceptions.
Akim Demaille [Tue, 8 Sep 2009 20:00:13 +0000 (22:00 +0200)] 
lalr1.cc: syntax_error as exceptions.

It is common to use sort of factories in the user actions.  These
factories may check some "syntactic" constraints that are not
enforced by the grammar itself.  This is possible using YYERROR
within the action itself.  Provide the user with a means to throw
a syntax_error exception.

* data/c++.m4 (b4_public_types_declare, b4_public_types_define):
Declare and define yy::parser::syntax_error.
* data/lalr1.cc: Include stdexcept.
(yy::parser::parse): Wrap the user action within a try/catch.
* data/glr.cc: Include stdexcept.

15 years agolalr1.cc: add missing "inline".
Akim Demaille [Tue, 8 Sep 2009 19:59:33 +0000 (21:59 +0200)] 
lalr1.cc: add missing "inline".

* data/c++.m4 (b4_public_types_define): Add missing inline to
implementations provided in headers.

15 years ago%param: documentation.
Akim Demaille [Mon, 7 Sep 2009 06:05:43 +0000 (08:05 +0200)] 
%param: documentation.

* NEWS (2.6): Document %param, %lex-param, and %parse-param
changes.
* doc/bison.texinfo: Document that %lex-param and %parse-param
are n-ary.
Changes some examples to demonstrate it.
(Calc++ Parser): Use %param.

15 years agoRegen.
Akim Demaille [Wed, 9 Sep 2009 13:37:03 +0000 (15:37 +0200)] 
Regen.

15 years agostyle changes.
Akim Demaille [Wed, 9 Sep 2009 13:36:02 +0000 (15:36 +0200)] 
style changes.

* src/parse-gram.y (add_param): Scope changes.

15 years ago%parse: support several arguments.
Akim Demaille [Wed, 9 Sep 2009 13:35:49 +0000 (15:35 +0200)] 
%parse: support several arguments.

* src/parse-gram.y (current_param): New.
(param_type): Add param_none.
(params): New nonterminal.
Use it.

15 years agoRegen.
Akim Demaille [Wed, 9 Sep 2009 13:15:31 +0000 (15:15 +0200)] 
Regen.

15 years ago%param.
Akim Demaille [Thu, 3 Sep 2009 12:15:13 +0000 (14:15 +0200)] 
%param.

Provide a means to factor lex-param and parse-param common
declarations.

* src/parse-gram.y (param_type): New.
Define a %printer for it.
(add_param): Use it.
(%parse-param, %lex-param): Merge into...
(%parse): this new token.
Adjust the grammar to use it.
* src/scan-gram.l (RETURN_VALUE): New.
(RETURN_PERCENT_FLAG): Use it.
(RETURN_PERCENT_PARAM): New.
Use it to support %parse-param, %lex-param and %param.

15 years agoComplain about unused %define variables and %code qualifiers.
Joel E. Denny [Thu, 3 Sep 2009 20:04:10 +0000 (16:04 -0400)] 
Complain about unused %define variables and %code qualifiers.

* NEWS (2.5): Document.
* data/bison.m4 (b4_check_user_names): Complain instead of warn.
* doc/bison.texinfo (Decl Summary): Document complaint, and
improve %define documentation a little otherwise.
* tests/input.at (Reject unused %code qualifiers): Update.
(%define errors): Update.
(%define, --define, --force-define): Update.
(%define backward compatibility): Update.
(Unused %define api.pure): Update.
* tests/push.at (Push Parsing: Unsupported Skeletons): Update.

15 years agoUse aver not assert.
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.

15 years ago Use "Unresolved reference" error message when no symbols were found
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.

15 years agoAdjust synclines in src/parse-gram.[ch].
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.

15 years agoDon't suppress warnings about unused parse.error.
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.

15 years agoNEWS: Internationalization.
Akim Demaille [Thu, 3 Sep 2009 09:03:14 +0000 (11:03 +0200)] 
NEWS: Internationalization.

* NEWS (2.4.2): Add "Internationalization" item.

15 years agobootstrap: fix/improve find_tool.
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.

15 years agoFix gcc 3.4.4 shadowing warning reported by Eric Blake.
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.

15 years ago%define: accept unquoted values.
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.

15 years ago%define lr.type: make values lowercase IDs.
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.

15 years agoscan-gram: avoid portability trap with ctype usage.
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)

15 years agotests: use perl for printing special sequences to files.
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.

15 years agotests: show a use of %define lr.default-reductions "consistent"
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.

15 years agotests: portability fix.
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.

15 years agoActually handle the yytable zero value correctly this time.
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.

15 years agoMore fixes related to last two patches.
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.

15 years agoFix %error-verbose for conflicts resolved by %nonassoc.
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.

15 years agoSome code and documentation improvements.
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.

15 years agoUse locale when quoting.
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.

15 years agoMake previous patch more robust.
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)

15 years agoImport latest m4/m4.m4.
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)

15 years agoFix complaints about escape sequences.
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.

15 years agodoc: fixes.
Akim Demaille [Wed, 19 Aug 2009 12:51:50 +0000 (14:51 +0200)] 
doc: fixes.

* doc/bison.texinfo: Fix minor Texinfo errors.

15 years agotests: distcc compliance.
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.

15 years agovariables: simplify the upgrade of namespace into api.namespace.
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.