Commit Graph

139 Commits

Author SHA1 Message Date
Akim Demaille
dcd5344dcd yacc: remove trailing end of line at end of file
There are still spurious spaces at the end of some lines.  But this is
addressed in the master branch, and I am reluctant to try to backport
this.

* data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: here.
* tests/calc.at (AT_CHECK_SPACES): New.
Use it.
Be sure not to introduce trailing empty lines in the *.y files.
* NEWS: Doc it.
* cfg.mk (syntax-check): Remove the exception.
2012-08-02 13:51:52 +02:00
Akim Demaille
4982f078bf support $<tag>$ in printers and destructors
* src/scan-code.l (SC_SYMBOL_ACTION): Accept $<tag>$, not just $$.
* data/c.m4 (b4_dollar_dollar_): New.
(b4_symbol_actions): Let b4_dollar_dollar use b4_dollar_dollar_.
* NEWS, doc/bison.texi: Document it.
* tests/actions.at: Check this for C and C++.
2012-07-26 18:30:43 +02:00
Akim Demaille
ad60e80f3d api.prefix: strengthen the tests and fix push-parsers.
* tests/calc.at: Check api.prefix in addition to %name-prefix.
* tests/headers.at: Check push parsers and pure interface.
* tests/local.at: Use YYLTYPE renamed.
* data/yacc.c (b4_declare_yyparse_push_): Handle api.prefix.
* doc/bison.texi: Style changes.
2012-07-05 12:41:15 +02:00
Akim Demaille
77519a7d18 tests: use assert instead of plain abort.
* tests/actions.at, tests/calc.at, tests/conflicts.at,
* tests/cxx-type.at, tests/glr-regression.at, tests/input.at,
* tests/named-refs.at, tests/regression.at, tests/torture.at,
* tests/local.at:
Prefer assert to abort.
2012-06-26 13:55:50 +02:00
Akim Demaille
230a3db428 tests: more uniformity.
* tests/local.at (AT_LEX_FORMALS, AT_LEX_ARGS, AT_LEX_PRE_FORMALS)
(AT_LEX_PRE_ARGS): Rename as...
(AT_YYLEX_FORMALS, AT_YYLEX_ARGS, AT_YYLEX_PRE_FORMALS)
(AT_YYLEX_PRE_ARGS): these, for consistency.
(AT_API_PREFIX): Take %name-prefix into account.
(AT_YYLEX_PROTOTYPE): New.
Use it.
* tests/actions.at, tests/calc.at, tests/cxx-type.at: Adjust to
use them.
2012-06-22 12:08:02 +02:00
Akim Demaille
7490994123 tests: handle locations in the generic yyerror functions.
* tests/local.at (AT_YYERROR_DECLARE_EXTERN, AT_YYERROR_DECLARE)
(AT_YYERROR_DEFINE): Handle locations for C and C++.
* tests/calc.at: Use it for C++ (as C has extra arguments which
are not yet handled by AT_BISON_OPTION_PUSHDEFS).
* tests/actions.at: Adjust.
2012-06-22 10:20:28 +02:00
Akim Demaille
eb46d61f4d tests: fix AT_CHECK_CALC.
* tests/calc.at (AT_CHECK_CALC): Contrary to its documentation,
the test was skipped if given a second argument.
Unused feature, remove it.
2012-06-22 09:41:36 +02:00
Akim Demaille
363bf73276 tests: portability issues.
* tests/calc.at (AT_CALC_MAIN): Missing include reported by Hydra.
2012-06-17 11:20:21 +02:00
Akim Demaille
c8c220d19a tests: call the parser from another compilation unit.
In order to improve the testing of %defines, which exports the
interface of the generated parser, change the calc.at tests so that
when %defines is passed, main will be in another compilation unit.  It
loads the generated header.

* tests/calc.at (AT_CALC_MAIN): New.
Includes the definition of the global variables.
Therefore, now declare them from the %requires section of the parser.
Adjust to yydebug and yyparse being renamed by %name-prefix.
2012-06-15 15:39:19 +02:00
Akim Demaille
3d8082ad27 tests: reorder.
* tests/calc.at (power): Move its definition, as a preparation for
forthcoming changes.
And space changes.
2012-06-15 13:36:01 +02:00
Akim Demaille
ef51bfa744 c++: use nullptr for C++11.
C++11 introduces "nullptr" which plays the role of C's NULL, in
replacement of "0".  Fix the C++ skeletons to avoid warnings about
uses of "0" in place of "nullptr", and improve C skeletons to also use
this "nullptr" when compiled with a C++11 compiler.

* configure.ac: More C++ warnings.
* NEWS (2.5.1): Document this.
* data/c++.m4, data/c.m4 (b4_null_define): New.
(b4_null): Use YY_NULL instead of 0.
* data/glr.c, data/lalr1.cc, data/location.cc, data/yacc.c:
Call b4_null_define/b4_null where appropriate.
Use YY_NULL instead of NULL.
* data/location.cc (initialize): Accept a default argument,
YY_NULL.
* tests/actions.at, tests/calc.at: Adjust.

* data/glr.c, lib/libiberty.h, src/system.h (__attribute__):
Do not disable it when __STRICT_ANSI__ is defined, as, for
instance, it disables the __attribute__((unused)) which
protects us from some compiler warnings.
This was already done elsewhere in Bison, in 2001, see
4a0d893695.
* tests/regression.at: Adjust output.
2012-03-31 11:12:28 +02:00
Akim Demaille
da209f943b tests: fix regressions.
Exit status 63 is documented for version-mismatch.
	* bootstrap.conf (gnulib_modules): Remove sysexits.
	* src/system.h (EX_MISMATCH): Define.
	* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.

Missing includes.
	* tests/calc.at, tests/named-refs.at: Include assert.h.
(cherry picked from commit 459a57a90f)
2012-02-23 16:10:08 +01:00
Akim Demaille
dd5611579b maint: avoid "magic number exit".
* cfg.mk (local-checks-to-skip): No longer skip it.
	* bootstrap.conf (gnulib_modules): Add sysexits.
	* doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y,
	* src/system.h, tests/calc.at, tests/named-refs.at: Use assert
	where appropriate instead of "if (...) exit".
	Use symbolic exit status elsewhere.

Conflicts:

	doc/bison.texinfo
	src/parse-gram.y
2012-02-19 10:21:06 +01:00
Akim Demaille
c932d6135c maint: run "make update-copyright". 2012-01-13 11:48:14 +01:00
Joel E. Denny
ea0a767697 maint: run "make update-copyright". 2011-01-02 09:56:16 -05:00
Paul Eggert
6e30ede87a Do not use date ranges in copyright notices.
See http://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices

* HACKING, Makefile.am, NEWS, PACKAGING, README, README-alpha:
* TODO, bootstrap, bootstrap.conf:
* build-aux/update-b4-copyright, cfg.mk, configure.ac:
* data/README, data/bison.m4, data/c++-skel.m4, data/c++.m4:
* data/c-skel.m4, data/c.m4, data/glr.c, data/glr.cc:
* data/java-skel.m4, data/java.m4, data/lalr1.cc:
* data/lalr1.java, data/location.cc:
* data/xslt/bison.xsl:
* data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl:
* data/xslt/xml2xhtml.xsl, data/yacc.c, djgpp/Makefile.maint:
* djgpp/README.in, djgpp/config.bat, djgpp/config.sed:
* djgpp/config.site, djgpp/config_h.sed, djgpp/djunpack.bat:
* djgpp/subpipe.c, djgpp/subpipe.h:
* djgpp/testsuite.sed, doc/bison.texinfo:
* doc/refcard.tex, etc/README, etc/bench.pl.in:
* examples/calc++/Makefile.am, examples/extexi:
* lib/abitset.c, lib/abitset.h:
* lib/bbitset.h, lib/bitset.c, lib/bitset.h:
* lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c:
* lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h:
* lib/ebitset.c, lib/ebitset.h, lib/get-errno.c:
* lib/get-errno.h, lib/lbitset.c, lib/lbitset.h:
* lib/libiberty.h, lib/main.c, lib/timevar.c:
* lib/timevar.def, lib/timevar.h, lib/vbitset.c:
* lib/vbitset.h, lib/yyerror.c, m4/bison-i18n.m4:
* m4/c-working.m4, m4/cxx.m4, m4/subpipe.m4, m4/timevar.m4:
* src/AnnotationList.c, src/AnnotationList.h:
* src/InadequacyList.c, src/InadequacyList.h, src/LR0.c:
* src/LR0.h, src/Sbitset.c, src/Sbitset.h, src/assoc.c:
* src/assoc.h, src/closure.c, src/closure.h, src/complain.c:
* src/complain.h, src/conflicts.c, src/conflicts.h:
* src/derives.c, src/derives.h, src/files.c, src/files.h:
* src/flex-scanner.h, src/getargs.c, src/getargs.h:
* src/gram.c, src/gram.h, src/graphviz.c, src/ielr.c:
* src/ielr.h, src/lalr.c, src/lalr.h:
* src/location.c, src/location.h, src/main.c:
* src/muscle-tab.c, src/muscle-tab.h, src/named-ref.c:
* src/named-ref.h, src/nullable.c, src/nullable.h:
* src/output.c, src/output.h, src/parse-gram.y:
* src/print-xml.c, src/print-xml.h, src/print.c, src/print.h:
* src/print_graph.c, src/print_graph.h, src/reader.c:
* src/reader.h, src/reduce.c, src/reduce.h, src/relation.c:
* src/relation.h, src/scan-code.h, src/scan-code.l:
* src/scan-gram.h, src/scan-gram.l, src/scan-skel.h:
* src/scan-skel.l, src/state.c, src/state.h, src/symlist.c:
* src/symlist.h, src/symtab.c, src/symtab.h, src/system.h:
* src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h:
* tests/actions.at, tests/atlocal.in, tests/c++.at:
* tests/calc.at, tests/conflicts.at, tests/cxx-type.at:
* tests/existing.at, tests/glr-regression.at:
* tests/headers.at, tests/input.at, tests/java.at:
* tests/local.at, tests/named-refs.at:
* tests/output.at, tests/push.at, tests/reduce.at:
* tests/regression.at, tests/sets.at, tests/skeletons.at:
* tests/synclines.at, tests/testsuite.at, tests/torture.at:
* data/Makefile.am, data/location.cc, doc/Makefile.am, src/Makefile.am:
* tests/Makefile.am, lib/Makefile.am, examples/Makefile.am:
* etc/Makefile.am:
Don't use date ranges in copyright notices.

Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010 Free Software Foundation, Inc.
2010-06-23 13:07:29 -07:00
Akim Demaille
e7bab2df96 c++: use YYRHSLOC.
* data/lalr1.cc (YYRHSLOC): New.
	(YYLLOC_DEFAULT): Use it.
	* data/glr.cc: If location_type was user defined, do not include
	location.hh, and do not produce location.hh and position.hh.
	* tests/calc.at (YYLLOC_DEFAULT): Use YYRHSLOC.
	Check that glr.cc supports user defined location_type.
	* NEWS: Document this.
(cherry picked from commit bb9191dd31)

Conflicts:

	ChangeLog
	NEWS
	data/lalr1.cc
	tests/calc.at
2010-05-12 07:27:13 +02:00
Akim Demaille
0f404a0af0 lalr1.cc: location_type: make sure we don't depend on loc.(begin|end).
* tests/calc.at (Span): Instead of begin/end, as in the built-in
	location class, use first and last.
	Define YYLLOC_DEFAULT to adjust to these changes.
	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Adjust to the
	location_type changes.

(cherry picked from commit c826013fb3)

Conflicts:

	tests/calc.at
2010-05-07 22:40:12 +02:00
Akim Demaille
ecbca7db4b tests: calc: minor refactoring.
* tests/calc.at (_AT_DATA_CALC_Y): Simplify yylex.
(cherry picked from commit 67f1a2c254)
2010-04-14 12:46:30 +02:00
Akim Demaille
ed228e60b2 tests: calc: simplify location management.
* tests/local.at (AT_LOC_PUSHDEF, AT_LOC_POPDEF): New.
	(_AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): Use them to
	define the appropriate AT_LOC accessors.
	* tests/calc.at: Use AT_LOC accessors.

(cherry picked from commit 4f756f887b)

Conflicts:

	tests/local.at
2010-04-14 12:45:25 +02:00
Akim Demaille
cacfdef716 test location_type.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS):
	Define AT_LOCATION_TYPE_IF.
	(_AT_BISON_OPTION_POPDEFS): Undefine AT_LOCATION_TYPE_IF.
	* tests/calc.at (_AT_DATA_CALC_Y): When %define location_type is
	used, provide a user location type and use it.
	(Simple LALR1 C++ Calculator): Add a test case for location_type.

(cherry picked from commit 24bb8c8c25)

Conflicts:

	tests/calc.at
2010-04-14 12:25:51 +02:00
Akim Demaille
2f61c4a2d0 tests: check fclose's return value.
* tests/calc.at (_AT_DATA_CALC_Y): Check fclose's return status.
(cherry picked from commit af129079f0)
2010-04-14 12:04:43 +02:00
Akim Demaille
16d9244df6 tests: don't depend on the actual location type.
* tests/calc.at: Use yy::parser::location_type rather than
	yy::location, since the former is always right, and might point to
	another type than the latter.

(cherry picked from commit 36dc3637a4)

Conflicts:

	tests/calc.at
2010-04-14 12:02:45 +02:00
Akim Demaille
3e4a253ba9 formatting changes.
* tests/calc.at: Formatting changes.
(cherry picked from commit c499231de4)
2010-04-14 12:01:06 +02:00
Joel E. Denny
1462fcee1e maint: run "make update-copyright" 2010-01-04 13:46:45 -05:00
Joel E. Denny
f37495f601 %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/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.
(cherry picked from commit cf499cff31)

Conflicts:

	doc/bison.texinfo
	src/parse-gram.c
	src/parse-gram.h
	tests/actions.at
	tests/calc.at
2009-08-28 08:04:11 -04:00
Joel E. Denny
812775a039 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_grammar): 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.
2009-04-30 03:43:42 -04:00
Joel E. Denny
462503f825 Fix unexpanded macros in GLR defines file.
Reported by Csaba Raduly at
<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00048.html>.
* THANKS (Csaba Raduly): Add.
* data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc.
* tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate
lexer in a separate module that includes the defines file.
(AT_CHECK_CALC): Use AT_FULL_COMPILE and request compilation of lexer
source.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_DEFINES_IF.
Adjust AT_LOC and AT_VAL to use AT_NAME_PREFIX.
(AT_BISON_OPTION_POPDEFS): Pop AT_DEFINES_IF.
(AT_DATA_SOURCE_PROLOGUE): New.
(AT_DATA_GRAMMAR_PROLOGUE): Use AT_DATA_SOURCE_PROLOGUE.
(AT_DATA_SOURCE): New.
(AT_FULL_COMPILE): New, copied from master branch and extended to
support an additional output file.
2008-11-19 00:38:14 -05:00
Akim Demaille
6501566813 Check yyerrok in calc.at.
* tests/calc.at (calc.y): Use yyerrok on "( error )".
	(AT_CHECK_CALC): Add a check that ensures that yyerrok works as
	expected.
2008-08-27 10:30:06 +02:00
Joel E. Denny
da730230ce Automate regression testing of the XML/XSLT implementation. Discussed
starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
* configure.ac (XSLTPROC): New substitution.
* Makefile.am (maintainer-xml-check): New phony target invoking...
* tests/Makefile.am (maintainer-xml-check): ... this new phony target
invoking make maintainer-check with BISON_TEST_XML=1.
* tests/atlocal.in (XSLTPROC): New.
* tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
not to report reachable memory when Bison is expected to have a
non-zero exit status and (2) to compare XML/XSLT output with --graph
and --report=all output for every working grammar when
BISON_TEST_XML=1.
(AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
(AT_BISON_CHECK_XML): New.
(AT_QUELL_VALGRIND): New.
* tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
(AT_CHECK): ... don't redefine this since this was the old way to
quell Valgrind.
* tests/actions.at: Rewrite all AT_CHECK invocations for bison as
AT_BISON_CHECK invocations.
* tests/c++.at: Likewise.
* tests/calc.at: Likewise.
* tests/conflicts.at: Likewise.
* tests/cxx-type.at: Likewise.
* tests/existing.at: Likewise.
* tests/glr-regression.at: Likewise.
* tests/headers.at: Likewise.
* tests/input.at: Likewise.
* tests/java.at: Likewise.
* tests/output.at: Likewise.
* tests/push.at: Likewise.
* tests/reduce.at: Likewise.
* tests/regression.at: Likewise.
* tests/sets.at: Likewise.
* tests/skeletons.at: Likewise.
* tests/synclines.at: Likewise.
* tests/torture.at: Likewise.
(Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
tends to hang xsltproc.
(Big horizontal): Likewise.
2007-12-22 18:35:03 +00:00
Joel E. Denny
d9df47b656 Deprecate %pure-parser and add `%define api.pure'. Discussed starting
at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
* NEWS (2.3a+): Mention.
* data/bison.m4 (b4_pure_if): Don't define it here.
* data/c.m4 (b4_identification): Depend on individual skeletons to
define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the
values of the %define variables api.pure or api.push_pull.  Define
YYPURE, YYPUSH, and YYPULL accordingly.
* data/glr.c: Define b4_pure_if based on `%define api.pure' unless
glr.cc has already defined b4_pure_flag.
* data/push.c: Define b4_pure_if based on `%define api.pure'.
Remove YYPUSH and YYPULL since they're back in b4_identification again.
* data/yacc.c Define b4_pure_if based on `%define api.pure'.
* doc/bison.texinfo (Pure Decl): Update.
(Push Decl): Update.
(Decl Summary): Add api.pure to %define entry.
In %pure-parser entry, say it's deprecated and reference %define.
(Pure Calling): Update.
(Error Reporting): Update.
(C++ Scanner Interface): Update.
(How Can I Reset the Parser): Update.
(Table of Symbols): In %pure-parser entry, say it's deprecated and
reference %define.
* src/getargs.c (pure_parser): Remove global variable.
* src/getargs.h (pure_parser): Remove extern.
* src/output.c (prepare): Don't define pure_flag muscle.
* src/parse-gram.y (prologue_declaration): Implement %pure-parser as a
wrapper around `%define api.pure'.
* tests/calc.at (Simple LALR Calculator): Update.
(Simple GLR Calculator): Update.
* tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations):
Update.
(GLR: Resolve ambiguity, pure, locations): Update.
(GLR: Merge conflicting parses, pure, no locations): Update.
(GLR: Merge conflicting parses, pure, locations): Update.
* tests/glr-regression.at (Uninitialized location when reporting
ambiguity): Update
* tests/input.at (Unused %define api.pure): New test case.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for
AT_PURE_IF and AT_PURE_AND_LOC_IF.
* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
2007-10-29 17:36:40 +00:00
Joel E. Denny
c373bf8bb8 %define push_pull -> %define api.push_pull. Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
* data/push.c: Expect the new name.
* data/yacc.c: Likewise.
* doc/bison.texinfo (Push Decl): Update.
(Decl Summary): Update %define entry.
(Push Parser Function): Update.
(Pull Parser Function): Update.
(Parser Create Function): Update.
(Parser Delete Function): Update.
* tests/calc.at (Simple LALR Calculator): Update.
* tests/input.at (%define enum variables): Update.
* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
(Push Parsing: Multiple impure instances): Update.
(Push Parsing: Unsupported Skeletons): Update.
* tests/torture.at (Exploding the Stack Size with Alloca): Update.
(Exploding the Stack Size with Malloc): Update.

* NEWS (2.3a+): Add an entry for the push parser, and clean up the
other entries some.
2007-10-28 20:11:35 +00:00
Joel E. Denny
d782395d52 Replace %push-parser' and %push-pull-parser' with
`%define push_pull "push"' and `%define push_pull "both"'.
`%define push_pull "pull"' is the default.
* doc/bison.texinfo (Push Decl, Push Parser Function,
Pull Parser Function, Parser Create Function, Parser Delete Function):
Update declarations.
(Decl Summary, Table of Symbols): Replace %push-parser and
%push-pull-parser entries with a %define push_pull entry.
* data/bison.m4 (b4_percent_define_check_values): New macro.
(b4_pull_if, b4_push_if, b4_use_push_for_pull_if): Move these
definitions...
* data/c.m4 (b4_identification): ... and the YYPUSH and YYPULL cpp
definitions...
* data/push.c: ... to here and compute them from the value of the
%define variable push_pull.
* data/c-skel.m4: Instead of choosing the push.c skeleton for push
parsing requests here...
* data/yacc.c: ... hack this to switch to push.c any time
b4_use_push_pull_flag or the %define variable push_pull is set.  This
will go away when we mv push.c yacc.c.
* data/c++-skel.m4, data/glr.c, data/java-skel.m4: Don't report that
push parsing is not supported since unused %define variables are
reported anyway.
* src/getargs.c, src/getargs.h (pull_parser, push_parser): Remove.
* src/muscle_tab.h (muscle_percent_define_check_values): Update
comments for consistency with b4_percent_define_check_values.
* src/output.c (prepare): Don't insert b4_pull_flag and b4_push_flag
muscles.
* src/parse-gram.y (PERCENT_PUSH_PARSER, PERCENT_PUSH_PULL_PARSER):
Remove.
(prologue_declaration): Remove %push-parser and %push-pull-parser
rules.
* src/scan-gram.l (%push-parser, %push-pull-parser): Remove rules.
* tests/calc.at: Update declarations.
* tests/input.at (%define enum variables): New test case.
* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update
declaration.
(Push Parsing: Multiple impure instances): Update declaration.
(Push Parsing: Unsupported Skeletons): New test case.
* tests/torture.at (Exploding the Stack Size with Alloca): Update
declaration.
(Exploding the Stack Size with Malloc): Update declaration.
2007-09-25 05:47:27 +00:00
Paul Eggert
f16b08196c Update to GPLv3.
* doc/gpl-3.0.texi: New file.
* doc/gpl.texi: Remove.
* COPYING, GNUmakefile, HACKING, Makefile.am, Makefile.cfg:
* Makefile.maint, NEWS, PACKAGING, README, README-alpha:
* README-hacking, TODO, bootstrap, bootstrap.conf:
* configure.ac, data/Makefile.am, data/README, data/bison.m4:
* data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4:
* data/glr.c, data/glr.cc, data/java-skel.m4, data/java.m4:
* data/lalr1.cc, data/lalr1.java, data/location.cc:
* data/push.c, data/yacc.c, data/m4sugar/m4sugar.m4:
* djgpp/Makefile.maint, djgpp/README.in, djgpp/config.bat:
* djgpp/config.sed, djgpp/config.site, djgpp/config_h.sed:
* djgpp/djunpack.bat, djgpp/subpipe.c, djgpp/subpipe.h:
* djgpp/testsuite.sed, doc/Makefile.am, doc/bison.texinfo:
* doc/fdl.texi, doc/refcard.tex, etc/Makefile.am, etc/README:
* etc/bench.pl.in, examples/Makefile.am, examples/extexi:
* examples/calc++/Makefile.am, lib/Makefile.am, lib/abitset.c:
* lib/abitset.h, lib/bbitset.h, lib/bitset.c, lib/bitset.h:
* lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c:
* lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h:
* lib/ebitset.c, lib/ebitset.h, lib/get-errno.c:
* lib/get-errno.h, lib/lbitset.c, lib/lbitset.h:
* lib/libiberty.h, lib/main.c, lib/subpipe.c, lib/subpipe.h:
* lib/timevar.c, lib/timevar.def, lib/timevar.h:
* lib/vbitset.c, lib/vbitset.h, lib/yyerror.c:
* m4/c-working.m4, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4:
* m4/timevar.m4, src/LR0.c, src/LR0.h, src/Makefile.am:
* src/assoc.c, src/assoc.h, src/closure.c, src/closure.h:
* src/complain.c, src/complain.h, src/conflicts.c:
* src/conflicts.h, src/derives.c, src/derives.h, src/files.c:
* src/files.h, src/flex-scanner.h, src/getargs.c:
* src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c:
* src/lalr.c, src/lalr.h, src/location.c, src/location.h:
* src/main.c, src/muscle_tab.c, src/muscle_tab.h:
* src/nullable.c, src/nullable.h, src/output.c, src/output.h:
* src/parse-gram.c, src/parse-gram.h, src/parse-gram.y:
* src/print.c, src/print.h, src/print_graph.c:
* src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c:
* src/reduce.h, src/relation.c, src/relation.h:
* src/revision.h, src/scan-code.h, src/scan-code.l:
* src/scan-gram.h, src/scan-gram.l, src/scan-skel.h:
* src/scan-skel.l, src/state.c, src/state.h, src/symlist.c:
* src/symlist.h, src/symtab.c, src/symtab.h, src/system.h:
* src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h:
* tests/Makefile.am, tests/actions.at, tests/c++.at:
* tests/calc.at, tests/conflicts.at, tests/cxx-type.at:
* tests/existing.at, tests/glr-regression.at:
* tests/headers.at, tests/input.at, tests/java.at:
* tests/local.at, tests/output.at, tests/push.at:
* tests/reduce.at, tests/regression.at, tests/sets.at:
* tests/skeletons.at, tests/synclines.at, tests/testsuite.at:
* tests/torture.at:
Update to GPLv3.
2007-08-15 20:21:33 +00:00
Joel E. Denny
279cabb657 * NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4,
data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
djgpp/config.site, src/files.c, src/files.h, src/main.c,
src/muscle_tab.c, src/muscle_tab.h, src/parse-gram.y, src/reader.h,
src/scan-skel.h, src/scan-skel.l, tests/actions.at, tests/calc.at,
tests/glr-regression.at, tests/input.at, tests/local.at,
tests/output.at, tests/torture.at: Update copyright to 2007.
2007-01-17 08:36:07 +00:00
Joel E. Denny
16dc6a9ebf Remove quotes from variables names in %define directives and from
qualifiers in %code directives, and restrict the characters that are
allowed in them to M4-friendly ones.  For %define, continue to support
the quoted form as a deprecated feature.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00023.html>.
* NEWS (2.3a+): Add entry for the change to %define.  Update entry for
%code.
* doc/bison.texinfo (Prologue Alternatives): Update.
(Bison Declaration Summary): In %defines entry, update mention of
`%code requires' and `%code provides'.
(C++ Location Values): Update %define uses.
(Calc++ Parser Interface): Likewise.
(Calc++ Parser): Likewise, and update `%code requires' uses.
(Bison Symbols): Update %code documentation.
* src/parse-gram.y (prologue_declaration): For %define variables, use
`variable' instead of `STRING'.
(grammar_declaration): For %code qualifiers, use `ID' instead of
`STRING'.
(variable): New nonterminal that takes an `ID' or a `STRING'.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update %code
and %define uses.
* tests/calc.at (_AT_DATA_CALC_Y): Update %define use.
* tests/input.at (Reject unused %code qualifiers): Update %code uses.
(%define errors): Update %define uses.
2007-01-09 01:17:51 +00:00
Joel E. Denny
7d59638490 * data/push.c (yypush_parse): Set yynew = 1 at the end of a parse
(whether successful or failed) so that yypush_parse can be invoked
again to start a new parse using the same yypstate.
* tests/torture.at (AT_DATA_STACK_TORTURE): For push mode, extend to
check multiple yypull_parse invocations on the same yypstate.  For pull
mode, extend to check multiple yyparse invocations.
(Exploding the Stack Size with Alloca): Extend to try with
%push-pull-parser.
(Exploding the Stack Size with Malloc): Likewise.

* tests/calc.at (Simple LALR Calculator): Don't specify
%skeleton "push.c" since %push-pull-parser implies that now.
* tests/headers.at (export YYLTYPE): Don't check for the push
declarations.  Otherwise, this test case can't be used to see if push
mode can truly emulate pull mode.
* tests/input.at (Torturing the Scanner): Likewise.
* tests/local.at (AT_YACC_OR_PUSH_IF, AT_PUSH_IF): Remove.
(AT_YYERROR_SEES_LOC_IF): Rather than AT_YACC_OR_PUSH_IF, use
AT_YACC_IF, which now includes the case of push mode since %skeleton
need not be used for push mode.  This will be more intuitive once
push.c is renamed to yacc.c.
2007-01-01 00:42:21 +00:00
Joel E. Denny
7172e23e8f For push mode, convert yyparse from a macro to a function, invoke yylex
instead of passing a yylexp argument to yypull_parse, and don't
generate yypull_parse or yyparse unless %push-pull-parser is declared.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>.
* data/bison.m4 (b4_pull_if): New.
* data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH.
* data/push.c: Improve M4 quoting a little.
(b4_generate_macro_args, b4_parenthesize): Remove.
(yyparse): If there's a b4_prefix, #define this to b4_prefix[parse]
any time a pull parser is requested.
Don't #define this as a wrapper around yypull_parse.  Instead, when
both push and pull are requested, make it a function that does that
same thing.
(yypull_parse): If there's a b4_prefix, #define this to
b4_prefix[pull_parse] when both push and pull are requested.
Don't define this as a function unless both push and pull are
requested.
Remove the yylexp argument and hard-code yylex invocation instead.
* etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of
%push-parser.
* src/getargs.c (pull_parser): New global initialized to true.
* getargs.h (pull_parser): extern it.
* src/output.c (prepare): Insert pull_flag muscle.
* src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token.
(prologue_declaration): Set both push_parser and pull_parser = true for
%push-pull-parser.  Set push_parser = true and pull_parser = false for
%push-parser.
* src/scan-gram.l: Don't accept %push_parser as an alternative to
%push-parser since there's no backward-compatibility concern here.
Scan %push-pull-parser.
* tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser
instead of %push-parser.
* tests/headers.at (export YYLTYPE): Make yylex static, and don't
prototype it in the module that calls yyparse.
* tests/input.at (Torturing the Scanner): Likewise.
* tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.
2006-12-31 20:29:48 +00:00
Joel E. Denny
c3d503425f For push mode, add pull wrappers around yypush_parse.
* data/push.c: (b4_generate_macro_args, b4_parenthesize): New macros.
(yypull_parse): New function wrapping yypush_parse.
(yyparse): New #define wrapping yypull_parse.
* tests/calc.at (_AT_DATA_CALC_Y): Call yyparse even when %push-parser
is declared.
* tests/headers.at (export YYLTYPE): Make yylex global.  For push mode,
prototype yylex in the module that calls yyparse, and don't prototype
yyparse there.  Otherwise, the yyparse expansion won't compile.
* tests/input.at (Torturing the Scanner): Likewise.
2006-12-25 18:21:52 +00:00
Joel E. Denny
94ebeba53f Enable push parsers to operate in impure mode. Thus, %push-parser no
longer implies %pure-parser.  The point of this change is to move
towards being able to test the push parser code by running the entire
test suite as if %push-parser had been declared.
* data/push.c (yypush_parse): For impure mode, remove the
yypushed_char, yypushed_val, and yypushed_loc arguments.
Instead, declare these as local variables initialized to the global
yychar, yylval, and yylloc.
For the first yypush_parse invocation only, restore the initial values
of these global variables when it's time to read a token since they
have been overwritten.
* src/parse-gram.y (prologue_declaration): Don't set pure_parser for
%push-parser.
* tests/calc.at (Simple LALR(1) Calculator): Always declare
%pure-parser along with %push-parser since this test case was designed
for pure push parsers.
* tests/local.at (AT_PURE_OR_PUSH_IF): Remove unused.
(AT_YACC_OR_PUSH_IF): New.
(AT_YYERROR_SEES_LOC_IF): Fix enough that the test suite passes, but
add a note that it's still wrong for some cases (as it has been for a
while).
(AT_PURE_LEX_IF): Use AT_PURE_IF instead of AT_PURE_OR_PUSH_IF since
%push-parser no longer implies %pure-parser.
2006-12-25 17:25:39 +00:00
Paul Eggert
0e021770cc * src/getargs.c (skeleton_arg): Last arg is now location const *.
Rewrite to simplify the logic.
(language_argmatch): Likewise.

* doc/bison.texinfo (Decl Summary, Bison Options): Don't claim
Java is supported.
* src/complain.c (program_name): Remove decl; no longer needed.
* src/main.c (program_name): Remove; now belongs to getargs.

2006-12-18  Paolo Bonzini  <bonzini@gnu.org>

* NEWS: Document %language.

* data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4.

* data/c-skel.m4, data/c++-skel.m4: New files.
* data/glr.c: Complain on push parsers.

* doc/bison.texinfo (C++ Parser Interface): Prefer %language
over %skeleton.
(Directives): Document %language and %skeleton.
(Command line): Document -L.

* examples/extexi: Rewrite %require directive.
* examples/calc++/Makefile.am: Pass VERSION to extexi.

* src/files.c (compute_exts_from_gc): Look in language structure
for .y extension.
(compute_file_name_parts): Check whether .tab should be added.
* src/getargs.c (valid_languages, skeleton_prio, language_prio):
(language, skeleton_arg, language_argmatch): New.
(long_options): Add --language.
(getargs): Use skeleton_arg, add -L/--language.
* src/getargs.h: Include location.h.
(struct bison_language, language, skeleton_arg, language_argmatch): New.
* src/output.c (prepare): Pick default skeleton from struct language.
Don't dispatch C skeletons here.
* src/parse-gram.y (PERCENT_LANGUAGE): New.
(prologue_declaration): Add "%language" rule, use skeleton_arg.
* src/scan-gram.l ("%language"): New rule.

* tests/calc.at: Test %skeleton and %language.
* tests/local.at (AT_SKEL_CC_IF): Look for %language.
(AT_GLR_IF): Look for %skeleton "glr.cc".
(AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite.
(AT_YACC_IF): Reject %language.

2006-12-18  Paul Eggert  <eggert@cs.ucla.edu>
2006-12-19 00:34:37 +00:00
Joel E. Denny
ee5abb379b * data/push.c (yypstate): Add typedef, and update all uses of
struct yypstate to just yypstate.
* tests/calc.at (_AT_DATA_CALC_Y): Update here as well.
2006-12-15 05:31:26 +00:00
Joel E. Denny
9bf32be3a0 * data/push.c (yypstate_init): Rename to...
(yypstate_new): ... this and use b4_c_function_def.
(yypstate_delete): New.
(yypush_parse): Change parameters yynval and yynlloc to be const.
* tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and
yypstate_delete functions.
2006-12-14 02:58:11 +00:00
Joel E. Denny
8def5cd0c3 * data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
Rename to...
(yypstate_init, yypstate, struct yypstate, yypush_parse): ... these and         update all uses.
(b4_yyssa, b4_yyerror_range, yypstate_init): Rename pv to yyps.
(yypush_parse): Rename yypvars argument to yyps and remove redundant
local pv.
(yypstate_init, yypush_parse): Declare in Bison-generated header file.
* tests/calc.at (_AT_DATA_CALC_Y): Use newly named functions.
2006-12-08 22:36:33 +00:00
Joel E. Denny
55a30bda17 * data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
(yypushparse): Add yynchar, yynlval, yynlloc parameters.
(b4_declare_parser_variables): Do not declare yynerrs for push mode.
(struct yypvars): Remove b4_declare_parser_variables.
(yypvarsinit): Remove init code for removed variables.
(global scope): Do not declare b4_declare_parser_variables if
push or pure mode.
(yypushparse): Add b4_declare_parser_variables.
Init new local variables, and remove init code for removed
yypvars variables.
(yyparse): Delete.
* tests/calc.at (_AT_DATA_CALC_Y): Call yypushparse for push mode
and yyparse for other modes.
(AT_CHECK_CALC_LALR): Added '%skeleton "push.c"' for push tests.
* tests/local.at (AT_PUSH_IF, AT_PURE_OR_PUSH_IF): Added.
(AT_YYERROR_SEES_LOC_IF): push-parser makes this false.
(AT_PURE_LEX_IF): True if pure or push parser.
2006-12-07 02:21:13 +00:00
Joel E. Denny
02975b9aad Support a file name argument to %defines. Deprecate `=' in
%file-prefix, %name-prefix, and %output.  Discussed at
<http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
* NEWS (2.3a+): Mention.
* doc/bison.texinfo (Decl Summary, Bison Symbols): Add entry for new
form of %defines, and remove `=' from entries for %file-prefix,
%name-prefix, and %output.
* src/parse-gram.y (prologue_declaration): Implement.
* tests/calc.at (Simple LALR Calculator, Simple GLR Calculator, Simple
LALR1 C++ Calculator, Simple GLR C++ Calculator): Remove the `=' from
all but one occurrence of %name-prefix.
* tests/headers.at (export YYLTYPE): Remove the `=' from %name-prefix.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Likewise.
* tests/output.at (AT_CHECK_OUTPUT): Remove the `=' from all but one
occurrence of each of %file-prefix and %output.  Add check for %defines
with argument.
* tests/reduce.at (Useless Terminals, Useless Nonterminals,
Useless Rules, Reduced Automaton, Underivable Rules, Empty Language):
Remove the `=' from %output.
2006-12-02 01:52:16 +00:00
Paul Eggert
eb09565001 Don't let Bison leak memory except when it complains.
* src/files.h (parser_file_name, spec_verbose_file, spec_graph_file):
(spec_defines_file, dir_prefix): Now char *, not const char *,
since they are freed.
* src/files.c: Likewise.
(all_but_ext, all_but_tab_ext, src_extension, header_extension):
Likewise.
(tr): Now operates in-place.  All uses changed.
(compute_exts_from_gf, compute_exts_from_src): Don't leak temporary
values.
(compute_file_name_parts, compute_output_file_names): Don't store
read-only data in variables that will be freed.
(compute_output_file_names): Free all_but_ext, all_but_tab_ext,
src_extension, and header_extension.
(output_file_names_free): New public function to free
spec_verbose_file, spec_graph_file, spec_defines_file,
parser_file_name, and dir_prefix.
* src/getargs.c (getargs): Don't store read-only data in variables that
will be freed.
* src/main.c (main): Invoke output_file_names_free, code_scanner_free
(which previously existed but was unused), and quotearg_free.
* src/muscle_tab.h (muscle_insert): value arg is now a `char const *'.
* src/muscle_tab.c: Likewise.
(muscle_entry): Make the value char const *,
and add a new storage member that is char * and can be freed.
(muscle_entry_free): New private function.
(muscle_init): Use it instead of free.
(muscle_insert, muscle_grow): Update and use new storage member.
(muscle_code_grow): Free the string passed to muscle_grow
since it's not needed anymore.
* src/parse-gram.y (%union): Make `chars' member a `char const *', and
add a new `char *code' member.
("{...}"): Declare semantic type as code.
* src/scan-code.h (translate_rule_action):
(translate_symbol_action, translate_code, translate_action): Return
`char const *' rather than `char *' since external code should not free
these strings.
* src/scan-code.l: Likewise.
* src/scan-gram.l (<SC_BRACED_CODE>): Use val->code for BRACED_CODE,
which is "{...}" in the parser.
* tests/Makefile.am (maintainer-check-valgrind): Set
VALGRIND_OPTS='--leak-check=full --show-reacheable=yes' before invoking
Valgrind.
* tests/calc.at (_AT_DATA_CALC_Y): fclose the FILE* so Valgrind doesn't
complain.
* tests/testsuite.at (AT_CHECK): Redefine so that running Bison and
expecting a non-zero exit status sets --leak-check=summary and
--show-reachable=no for Valgrind.  Bison unabashedly leaks memory in
this case, and we don't want to hear about it.
2006-11-08 20:28:57 +00:00
Paul Eggert
31c10e38db * data/Makefile.am (dist_pkgdata_DATA): Add push.c.
* data/c.m4 (YYPUSH): New.
(b4_push_if): New macro.  Use it instead of #ifdef YYPUSH.
* src/getargs.c (push_parser): New var.
* src/getargs.h (push_parser): New declaration.
* src/output.c (prepare): Add macro insertion of `push_flag'.
* src/parse-gram.y (PERCENT_PUSH_PARSER): New token.
(prologue_declaration): Parse %push-parser.
* src/scan-gram.l: Scan new PERCENT_PUSH_PARSER token.
* tests/calc.at (_AT_CHECK_CALC_ERROR): Add "Return" and "Now" to
list of removed lines from the traces observed.
(AT_CHECK_CALC_LALR): Added push parser tests.
2006-09-15 15:56:26 +00:00
Paul Eggert
fa7b79c063 Fix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
runtime cost when YYDEBUG is not defined, and so that some tests
that used to fail now work.  Problem and initial suggestion by
Paolo Bonzini.
* data/c++.m4 (b4_parse_param_cons): Omit leading ','.
* data/glr.cc (b4_parser_class_name):
Initialize yycdebug_ only if YYDEBUG.  Also, initialize yydebug_.
(debug_level, set_debug_level): Affect yydebug_, not ::yydebug.
(yydebug_) [YYDEBUG]: New member.
(yycdebug_): Now defined only if YYDEBUG.
* data/lalr1.cc (yydebug_, yycdebug_): Now defined only if YYDEBUG.
(YYCDEBUG) [!YYDEBUG]: Don't use yydebug_ and yycdebug_.
(b4_parser_class_name): Initialize yydebug_ and yycdebug_ only
if YYYDEBUG.
(debug_stream, set_debug_stream, debug_level, set_debug_level):
Define only if YYDEBUG.
* tests/calc.at (_AT_DATA_CALC_Y) [!YYDEBUG]: Omit call to
set_debug_level.
* tests/regression.at (_AT_DATA_DANCER_Y) [!YYDEBUG]: Likewise.
* tests/calc.at (AT_CHECK_CALC_GLR_CC): Uncomment calls to
AT_CHECK_CALC_GLR_CC that are working now.
2006-09-13 17:41:19 +00:00
Akim Demaille
cd48d21d94 * data/c.m4 (b4_location_initial_column, b4_location_initial_line):
New, default to 1.
* data/yacc.c, data/glr.c, data/location.cc: Use them.
* NEWS, doc/bison.texinfo: The initial column and line are 1 by
default.
* tests/calc.at: Adjust.
2006-07-08 20:38:14 +00:00