Commit Graph

67 Commits

Author SHA1 Message Date
Akim Demaille
049016237e Merge branch 'branch-2.6' into maint
* origin/branch-2.6: (24 commits)
  tests: calc: modernize the use of locations
  tests: remove useless location initializations
  lalr1.cc: always initialize yylval.
  tests: check that C and C++ objects can be linked together.
  yacc.c: also disable -Wuninitialized.
  glr.cc, yacc.c: initialize yylloc properly
  yacc.c, glr.c: a better YY_LOCATION_PRINT
  yacc.c: simplify initialization
  doc: formatting changes
  c++: fix position operator signatures
  tests: remove useless location initialization.
  tests: fix locations in C
  tests: handle %parse-param in the generated yyerror
  tests: simplifications
  grammars: fix display of nul character in error message
  tests: sort
  tests: cosmetic changes
  comment changes
  autoconf: update
  gnulib: update
  ...

Conflicts:
	NEWS
	gnulib
	tests/named-refs.at
	tests/regression.at
2012-11-06 18:12:05 +01:00
Akim Demaille
a1d1ab50a0 glr.cc, yacc.c: initialize yylloc properly
There are several issues to address here.  One is that yylloc should
be initialized when possible.  Another is that the push parser needs
to update yypushed_loc when the user modified it.  And if the parser
starts by a reduction of an empty, it uses the first location on the
stack, which, therefore, must also be initialized to this initial
location.

This is getting complex, especially since because initializing a
global (impure interface) is different from initializing a local
variable.  To simplify, the local yylloc is not initialized during its
definition.

* data/c.m4 (b4_yyloc_default_define): Replace by...
(b4_yyloc_default): this.
Adjust dependencies.
* data/glr.cc: Initialize yylloc.
* data/yacc.c (b4_declare_scanner_communication_variables):
Initialize yylloc during its definition.
Don't define yyloc_default.
(yypush_parse): The location formal is not const, as we might
initialize it.
(yyparse): Define yyloc_default.
Use it before running the user initial action.
Possibly update the first location on the stack, and the pushed
location after the user initial action.
* tests/actions.at (Initial locations): Check that the initial
location is correct.
2012-11-06 17:35:38 +01:00
Akim Demaille
db8ab2be33 c++: api.location.type
This feature was introduced in 95a2de5695
(which is part of 2.5), but not documented.  Give it a proper name, and
make it public.

* data/c++.m4, data/lalr1.cc, data/glr.cc, data/java.m4: Use
api.location.type instead of location_type.
* src/muscle-tab.c (muscle_percent_variable_update): Map the latter to
the former.
* tests/local.at: Adjust.
* tests/calc.at: Use api.location.type.
Leave tests/java.at with location_type, at least for the time being,
to cover both names.
* doc/bison.texi: Document api.location.type.
(User Defined Location Type): New.
* NEWS: Update.
2012-10-09 15:59:18 +02:00
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
0e164d43d1 glr.cc: fix the handling of yydebug
* data/glr.cc (yydebug_): Remove, unused.
(set_debug_level, debug_level): Work on yydebug instead.
* doc/bison.texi, NEWS: Document this.
2012-07-26 17:03:52 +02:00
Akim Demaille
53ab797db7 glr.cc: do not override C++ definitions by C macros.
* data/glr.c: here.
* data/glr.cc: Fix overquotation.
* tests/headers.at: Comment changes.
2012-07-04 12:24:13 +02:00
Akim Demaille
426903aa75 YYLLOC_DEFAULT: factor, and don't export it in headers.
* data/c++.m4, data/c.m4 (b4_yylloc_default_define): New.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
* data/glr.cc: Do not define YYLLOC_DEFAULT in the header file,
but in the implementation one.
2012-07-04 12:24:13 +02:00
Akim Demaille
a7385a21ce glr.cc: formatting changes.
* data/glr.cc: here.
2012-07-04 12:24:13 +02:00
Akim Demaille
5f108727a1 api.prefix: also rename YYDEBUG.
The testsuite in master has shown weird errors for the "Mulitple
Parsers" tests: the caller of p5.parse() received some apparently
random value, while tracing p5.parse() showed that the function was
consistently returning 0.

It happens when mixing several parser headers, some generated without
%debug, others with.  In particular the C++ parser was generated with
%debug, i.e., with:

  #ifndef YYDEBUG
  # define YYDEBUG 1
  #endif

and compiled separatedly.  Yet, its header was included after the one
of another parser, this time without %debug, i.e., with

  #ifndef YYDEBUG
  # define YYDEBUG 0
  #endif

in its header.  As a result, the parser was compiled with YYDEBUG set,
but its header was used without.  Since the layout of the objects are
then completely different, boom.

Therefore, do not change the value of YYDEBUG.  Rather, use it as a
default value for <API.PREFIX>DEBUG.

* data/c.m4 (b4_YYDEBUG_define): New.
(b4_declare_yydebug): Rename as...
(b4_yydebug_declare): this, for consistency.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it.
* NEWS: Document it.
2012-07-04 12:24:12 +02:00
Akim Demaille
4b3847c3c0 api.prefix.
* data/c.m4 (b4_api_prefix, b4_api_PREFIX): New.
(b4_prefix, b4_union_name, b4_token_enums, b4_declare_yylstype): Use them.
* data/glr.c, data/yacc.c, data/glr.cc, data/lalr1.cc: Use them to change
the prefix of exported preprocessor symbols.
* src/getargs.c (usage): Ditto.
* tests/headers.at (Several parsers): New.
* tests/local.at (AT_API_PREFIX): New.
AT_YYSTYPE, AT_YYLTYPE): Adjust.
* doc/bison.texi (Multiple Parsers): Move documentation of %name-prefix to...
(Table of Symbols): here.
(Multiple Parsers): Document api.prefix.
(%define Summary): Point to it.
Use @code for variable names.
(Bison Options): -p/--name-prefix are obsoleted.
* NEWS: Announce api.prefix.
2012-06-29 17:40:42 +02:00
Akim Demaille
694af10cb7 skeletons: no longer define YYLSP_NEEDED.
* data/c.m4, data/glr.cc: here.
* NEWS, TODO: Adjust.
2012-06-27 10:03:23 +02:00
Akim Demaille
c3e9f08f93 skeletons: use header guards.
* data/glr.c, data/glr.cc, data/yacc.c: here.
* NEWS: Document it.
2012-06-15 15:33:14 +02:00
Akim Demaille
dd8d335174 glr.cc: untabify.
* data/glr.cc: here.
2012-05-04 14:53:49 +02:00
Akim Demaille
021a7cfb3e glr.cc: formatting changes.
* data/glr.cc: Fit in 80 columns.
2012-05-04 14:53:49 +02:00
Akim Demaille
30bc96ceca glr.cc: remove unused signature.
* data/glr.cc (yydestruct_): Not used, remove.
It is yydestruct which is used.
2012-05-04 14:53:49 +02:00
Akim Demaille
78ab351c4f glr.cc: properly declare locations are const where appropriate.
* data/glr.cc (yyerror): The location is const.
2012-05-04 14:53:48 +02:00
Akim Demaille
68fff38a09 %printer: support both yyo and yyoutput.
lalr1.cc used to support yyo, but not yyoutput.  Support both,
but document only yyoutput (at least until there is some consensus
on this).

* data/c.m4 (yy_symbol_value_print): Also support yyo.
* data/glr.cc  (yy_symbol_value_print_): Support both yyo and yyoutput.
* data/lalr1.cc: Also support yyoutput.
* doc/bison.texinfo: Explicitly use yyoutput in the examples.
* examples/mfcalc/mfcalc.test: Test the -p option.
(cherry picked from commit c50263271d)

Conflicts:

	data/c.m4
	data/lalr1.cc
	doc/bison.texinfo
	etc/Makefile.am
2012-04-16 17:34:36 +02:00
Akim Demaille
681dda24ba bump to 2012 in skeletons.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
* data/location.cc, data/yacc.c: Bump copyright year ranges.
2012-04-01 12:16:46 +02: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
95a2de5695 lalr1.cc: don't generate location.hh when location_type is defined
* data/bison.m4 (b4_percent_define_use): New.
	(b4_percent_define_get): Use it.
	Accept a default value.
	* data/c++.m4: Do not provide a default value for the %define
	variable location_type, rather, use b4_percent_define_get with a
	default argument where its value is needed.
	* data/lalr1.cc: Do not load location.cc (which outputs both
	location.hh and position.hh) if the user defined location_type.
	Do not include location.hh either.
	* data/glr.cc: Likewise.

(cherry picked from commit 7789b6e3e7)

Conflicts:

	ChangeLog
	data/bison.m4
	data/c++.m4
	data/lalr1.cc
2010-05-09 14:32:19 +02:00
Akim Demaille
df5df58d91 lalr1.cc: remove useless forward declaration.
* data/lalr1.cc: Include location.hh before stack.hh.
	Remove the useless forward declarations of position and location.
	Reported by Chris Morley.
	* data/glr.cc: Likewise.

(cherry picked from commit 7799ef1594)

Conflicts:

	data/lalr1.cc.
2010-04-14 12:00:19 +02:00
Joel E. Denny
1462fcee1e maint: run "make update-copyright" 2010-01-04 13:46:45 -05:00
Joel E. Denny
38609c3455 maint: run "make update-copyright" 2009-08-06 19:16:29 -04:00
Akim Demaille
0d2b2ab033 Remove spurious initial empty lines.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
	* data/yacc.c: End the @output lines with an @.
2009-04-06 00:36:42 -04:00
Joel E. Denny
793fbca50a Improve C++ namespace support. Discussed starting at
<http://lists.gnu.org/archive/html/help-bison/2007-09/msg00016.html>.
* data/c++.m4: (b4_namespace_ref, b4_namespace_open,
b4_namespace_close): New macros that interpret the %define variable
"namespace" so its value can contain "::" to indicate nested
namespaces.
* data/glr.cc (b4_namespace): Don't define, and replace all uses with
the above macros.
* data/lalr1.cc (b4_namespace): Likewise.
* data/location.cc (b4_namespace): Likewise.
* doc/bison.texinfo (Decl Summary): Move `%define push_pull' entry
inside a new table in the general %define entry.  Document `%define
namespace' there as well.  Point the %name-prefix entry to it since it
explains it more completely in the case of C++.
(C++ Bison Interface): Mention `%define namespace' instead of
%name-prefix.
(Table of Symbols): Remove the `%define push_pull' entry.  The %define
entry suffices.
* tests/c++.at (Relative namespace references): New test case.
(Absolute namespace references): New test case.
(Syntactically invalid namespace references): New test case.
* tests/input.at (C++ namespace reference errors): New test case.
2007-10-08 10:09:07 +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
Paolo Bonzini
592d0b1eb5 2007-01-23 Paolo Bonzini <bonzini@gnu.org>
Simplify implementation of unqualified %code, implement macros for
	uniform treatment of boolean %define flags.  Document %define.
	* data/bison.m4 (b4_percent_define_ifdef, b4_percent_define_flag_if,
	b4_percent_code_ifdef): New.
	(b4_percent_code_get): Map unqualified %code to b4_percent_code().
	* data/c++.m4: Define default value for global_tokens_and_yystype.
	* data/glr.cc: Likewise.
	* data/location.cc: Use b4_percent_define_flag_if.

	* doc/bison.texinfo (Directives): Document %define.

	* src/parse-gram.y (Unqualified %code): Change muscle name to
	b4_percent_code().
	(content.opt): Default to empty.
2007-01-23 12:24:27 +00:00
Joel E. Denny
5f340b4884 Back out previous patch. 2007-01-18 08:32:33 +00:00
Joel E. Denny
d4bdb91677 Implement @gettext<...@> directive to call gettext from skeletons. It
can be used anywhere including inside arguments of directives of the
form @foo(...@).  Eventually, it should be possible to write an
xgettext-like utility to extract @gettext<...@> text from skeletons.
* data/bison.m4 (b4_check_user_names): Use @gettext<...@> when invoking
b4_warn_at since b4_warn_at doesn't invoke gettext anymore.
* data/glr.cc, data/lalr1.cc: Likewise but for b4_fatal and
b4_complain reporting a push-parsing request or a missing %defines.
* src/scan-skel.l (INITIAL): Recognize `@gettext<' to start...
(SC_AT_GETTEXT_ARG): ... this new start condition where gettext is
invoked.
(SC_AT_DIRECTIVE_ARG): Rename to...
(SC_AT_DIRECTIVE_ARGS): ... this, and recognize `@gettext<' to start
SC_AT_GETTEXT_ARG.
(at_directive_perform): Don't invoke gettext for @warn(...@),
@warn_at(...@), etc.  Instead, let the skeletons decide what should be
passed to @gettext<...@>.
* tests/skeletons.at (@gettext<...@>): New test case.

* tests/skeletons.at (installed skeleton file name): Rename to...
(installed skeleton file names): ... this.
2007-01-18 05:14:59 +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
a4e25e1dec Clean up %define and %code implementation in M4 some. Most
importantly, rename all related macros to be in the b4_percent_define
and b4_percent_code namespaces.  Also, complete support for `.' in
%define variable names and %code qualifiers.
* data/bison.m4 (b4_check_user_names): Check for special
"SKELETON-NAMESPACE(name)" macros instead of using two nested
m4_foreach loops.
(b4_get_percent_define, b4_get_percent_code): Rename to...
(b4_percent_define_get, b4_percent_code_get): ... these.
Extend documentation with examples.
For SKELETON-NAMESPACE (as documented for b4_check_user_names), use
b4_percent_define_skeleton_variables and
b4_percent_code_skeleton_qualifiers.
Expect any value for the %define variable `foo' to be stored in the
macro named `b4_percent_define(foo)'; expect any %code blocks for the
qualifier `foo' to be stored in a macro named `b4_percent_code(foo)';
expect any unqualified %code blocks to be stored in a macro named
`b4_percent_code_unqualified'.
Use m4_indir so that %define variable names and %code qualifiers can
contain `.', which is allowed by the grammar parser.
(b4_percent_define_default): New macro to set a default value for a
%define variable.
(m4_wrap): Update wrapped code, and fix some underquoting.
(b4_check_user_names_wrap): Update and define outside the m4_wrap.
Expect grammar uses of %define variables and %code qualifiers to be
defined in b4_percent_define_user_variables and
b4_percent_code_user_qualifiers.
* data/c++.m4: Use b4_percent_define_default rather than
m4_define_default.  Fix some underquoting.  Skeleton usage of %define
variable define_location_comparison now implies skeleton usage of
%define variable filename_type.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
data/push.c, data/yacc.c: Update macro names.
* src/parse-gram.y (prologue_declaration, grammar_declaration): Update
muscle names.
2007-01-16 06:16:04 +00:00
Joel E. Denny
7ecec4ddf9 Simplify union and prologue handling, and escape union and lex/parse
params with digraphs.
* data/bison.m4 (b4_pre_prologue, b4_post_prologue): Set their default
values to the empty string since these are no longer guaranteed
initialized by the front-end.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/push.c, data/yacc.c: Add
braces around b4_user_stype since this is no longer done by the
front-end.
* src/files.c, src/files.h (pre_prologue_obstack,
post_prologue_obstack): Remove.
* src/muscle_tab.c (muscle_pair_list_grow): Don't duplicate header
comments here.  Use MUSCLE_OBSTACK_SGROW so that values are escaped
with digraphs.  This fixes lex params and parse params.
* src/muscle_tab.h (muscle_pair_list_grow): Update comments.
* src/output.c (prepare): Remove muscle insertion of the prologues.
(output): Remove freeing of pre_prologue_obstack and
post_prologue_obstack.
* src/parse-gram.y (prologue_declaration): Use muscle_code_grow rather
than prologue_augment for prologue parsing so you don't need prologue
obstacks.
(grammar_declaration): Use `braceless' instead of "{...}" so that
braces are already stripped and code is escaped with digraphs.
* src/reader.c (prologue_augment): Remove.
(reader): Remove initialization of pre_prologue_obstack and
post_prologue_obstack.
* src/reader.h (prologue_augment): Remove.

* data/c.m4: Remove stray parenthesis.
2007-01-09 05:24:11 +00:00
Joel E. Denny
6afc30cc87 Instead of having skeletons declare all valid %define variables and
%code qualifiers, provide macros that retrieve the associated values
and build these lists automatically.  Thus Bison will now warn when a
variable or qualifier is not used by the skeleton in the current
invocation regardless of whether it might sometimes be used by that
skeleton in other invocations.  Also, move all %define value macros to
the b4_percent_define_ namespace, and remove the %define "NAME" {CODE}
form, which is replaced by %code.
* data/bison.m4 (b4_check_for_unrecognized_names): Rename to...
(b4_check_user_names): ... this, and change the series of valid name
arguments to a single list argument for names used in the skeleton
similar to the existing list argument for names used in the grammar.
Warn instead of complaining.
(b4_get_percent_define, b4_get_percent_code): New to retrieve %define
values and %code code, to format %code code properly, and to build
lists of all %define variables and %code qualifiers used in the
skeleton: b4_skeleton_percent_define_variables and
b4_skeleton_percent_code_qualifiers.
(b4_check_percent_define_variables, b4_check_percent_code_qualifiers):
Remove, and...
(m4_wrap): ... m4_wrap b4_check_user_names invocations instead so that
the skeleton names lists can finish building first.  In place of
b4_used_percent_define_variables and b4_used_percent_code_qualifiers,
expect the lists b4_user_percent_define_variables and
b4_user_percent_code_qualifiers.
* data/c++.m4: Where setting default values for b4_parser_class_name,
b4_location_type, b4_filename_type, b4_namespace, and
b4_define_location_comparison, update their names to the
b4_percent_define_ namespace.
* data/glr.c: Don't use b4_check_percent_define_variables and
b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
* data/glr.cc, data/lalr1.cc: Likewise, and use b4_get_percent_define.
(b4_parser_class_name, b4_namespace): Define these using
b4_get_percent_define for parser_class_name and namespace.  Normally
this would be a bad idea since there might be cases when the variables
aren't used, but these variables are too pervasive in these skeletons
for that to be a problem.
* data/location.cc: Use b4_get_percent_define.
* data/push.c: Don't use b4_check_percent_define_variables and
b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
* data/yacc.c: Likewise, and don't call m4_exit in
b4_use_push_for_pull_if or m4_wrap code will never execute.
* src/muscle_tab.c, src/muscle_tab.h (muscle_grow_used_name_list):
Rename to...
(muscle_grow_user_name_list): ... this for consistency with the
terminology used in bison.m4.
* src/parse-gram.y (prologue_declaration): Prepend "percent_define_" to
%define variable names, and rename muscle used_percent_define_variables
to user_percent_define_variables.
(grammar_declaration): Rename muscle used_percent_code_qualifiers to
user_percent_code_qualifiers.
(content): Remove.
(content.opt): Replace content RHS with STRING RHS so %define "NAME"
{CODE} form is no longer accepted.
* tests/input.at (Reject bad %code qualifiers): Rename to...
(Reject unused %code qualifiers): ... this, and update test output.
(%define error): Update test output.
2007-01-08 21:38:30 +00:00
Joel E. Denny
7eb8a0bcca Check for unrecognized %define variables similar to checking for
unrecognized %code qualifiers.  Check for redefined %define variables.
* data/bison.m4 (b4_check_for_unrecognized_names): New macro that
generalizes...
(b4_check_percent_code_qualifiers): ... this, which now wraps it.
(b4_check_percent_define_variables): New, also wraps it.
* data/glr.c: Unless glr.cc is wrapping glr.c, declare no valid %define
variables using b4_check_percent_define_variables.
* data/glr.cc, data/lalr1.cc: Declare the valid %define variables as
all those exercised in the test suite and all those listed in the
`Default values' section of c++.m4.  Are there others?
* data/push.c, data/yacc.c: Declare no valid %define variables.
* src/muscle_tab.c, src/muscle_tab.h (muscle_find_const): New function,
similar to muscle_find, but it works even when the muscle stores a
const value.
(muscle_grow_used_name_list): New function for constructing the used
name list muscles that b4_check_for_unrecognized_names requires.
* src/parse-gram.y (prologue_declaration): Warn if a variable is
%define'd more than once.  Define the b4_used_percent_define_variables
muscle with muscle_grow_used_name_list.
(grammar_declaration): Abbreviate %code code with
muscle_grow_used_name_list.
* tests/input.at (%define errors): New.
2007-01-07 07:50:27 +00:00
Joel E. Denny
08af01c2fc Don't use m4_divert since it makes m4_divert_push and m4_divert_pop
unreliable -- especially when they're hidden inside another macro.
* data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-skel.m4,
data/c.m4: Remove m4_divert(-1).
* data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
data/push.c, data/yacc.c: Likewise, and replace m4_divert(0) with
m4_divert_push(0) and m4_divert_pop(0).
* data/output.c (output_skeleton): Don't add an m4_divert_push(0) and
an m4_wrap([m4_divert_pop(0)]) to the M4.  Diversion -1, which is
pushed and popped by m4sugar, should be first on the stack.

Provide warn, complain, and fatal function callbacks to the skeletons.
This provides more flexibility than m4_fatal, improves the error
message format, and captures messages for translation.  Discussed
starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00063.html>.
* data/bison.m4 (b4_error): New, invoked by...
(b4_warn, b4_complain, b4_fatal): ... these new macros to wrap the
skeleton scanner's new @warn(...@), @complain(...@), and @fatal(...@)
directives.  Because these M4 macros might be called when the current
diversion is -1 or 0, m4_divert_push and m4_divert_pop is used; thus
the previous removal of uses of m4_divert, which caused trouble.
(b4_check_percent_code_qualifiers): Use b4_complain instead of
m4_fatal to report unrecognized %code qualifiers.
* data/c++-skel.m4: Use b4_complain instead of m4_fatal to report C++
push parser requests.
* data/glr.c: Use b4_complain instead of m4_fatal to report
non-deterministic push parser requests.
Update @output usage to @output(...@) form.
* data/glr.cc, data/lalr1.cc: Use b4_fatal instead of m4_fatal to
report missing %defines.  Update @output usage to @output(...@) form.
* data/location.cc, data/push.c, data/yacc.c: Update @output usage to
@output(...@) form.
* src/main.c (main): Invoke skel_scanner_free.
* src/scan-skel.h (skel_scanner_free): Prototype new function.
* src/scan-skel.l (FLEX_NO_OBSTACK): Don't define; we now need the
obstack_for_string from flex-scanner.h.
(YY_DECL): Use to declare skel_lex static.
(decode_at_digraphs): Remove; now handled in the new
SC_AT_DIRECTIVE_ARG start condition.
(fail_for_at_directive_too_many_args, fail_for_invalid_at): New static
functions.
(at_directive_name, AT_DIRECTIVE_ARGC_MAX, at_directive_argc,
at_directive_argv): New static globals.
(INITIAL): Use fail_for_invalid_at.
Don't parse `@output file_name\n' or `@basename(...@)'.  Instead,
recognize the start of a generalized `@directive(...@)' form and
start...
(SC_AT_DIRECTIVE_ARG): ... this new start condition to parse the
directive args (using the new obstack_for_string), to decode the
contained @ diagraphs, and to perform the directive.  It recognizes
@basename(...@), @warn(...@), @complain(...@), @fatal(...@), and
@output(...@).
(SC_AT_DIRECTIVE_SKIP_WS): New start condition started by
SC_AT_DIRECTIVE_ARG to skip whitespace after the argument delimiter,
`@,'.
(scan_skel): Initialize obstack_for_string on the first call.
(skel_scanner_free): New function to free obstack_for_string.
* tests/input.at (Reject bad %code qualifiers): Update test output.
2007-01-06 06:14:04 +00:00
Joel E. Denny
8e0a5e9e73 Consolidate the 4 prologue alternative directives (%code, %requires,
%provides, and %code-top) into a single %code directive with an
optional qualifier field.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00012.html>.
* NEWS (2.3a+): Rewrite the existing entry for the prologue
alternatives.
* doc/bison.texinfo (Prologue Alternatives): Update.
(Decl Summary): Update to %code "requires" and %code "provides".
(Calc++ Parser): Update to %code "requires".
(Bison Symbols): Remove entries for %requires, %provides, and
%code-top.  Rewrite %code entry, and add a %code "QUALIFIER" entry.
* data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these
are replaced by b4_percent_code_provides and b4_percent_code_requires,
which are skeleton-specific.
(b4_check_percent_code_qualifiers): New.  A skeleton can use this to
declare what %code qualifiers it supports and to complain if any other
qualifiers were used in the grammar.
* data/glr.cc: Update to use b4_user_code([b4_percent_code_requires])
and b4_user_code([b4_percent_code_provides]) in place of
b4_user_requires and b4_user_provides.
* data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise.
Add b4_user_code([b4_percent_code_top]) and
b4_user_code([b4_percent_code]).
Invoke b4_check_percent_code_qualifiers.
* src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES,
PERCENT_REQUIRES): Remove.
(grammar_declaration): Remove RHS's for %code-top, %provides, and
%requires.  Rewrite the %code RHS as the unqualified form defining the
muscle b4_percent_code.  Add another RHS for the qualified %code form,
which defines muscles of the form b4_percent_code_QUALIFIER and the
b4_used_percent_code_qualifiers muscle.
* src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES,
PERCENT_REQUIRES): Remove.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use
%code "requires" and %code "provides".
* tests/input.at (Reject bad %code qualifiers): New.
2007-01-05 08:14:45 +00:00
Joel E. Denny
bd9d212b13 * tests/testsuite.at (AT_CHECK): When checking if $1 starts with
`bison ', use m4_index instead of m4_substr since chopping up a string
containing M4-special characters causes problems here.

Fix a couple of bugs related to special characters in user-specified
file names, and make it easier for skeletons to compute output file
names with the same file name prefix as Bison-computed output file
names.
* data/glr.cc, data/push.c, data/yacc.c: In @output, use
b4_parser_file_name and b4_spec_defines_file instead of
@output_parser_name@ and @output_header_name@, which are now redundant.
* data/glr.c, data/lalr1.cc: Likewise.  Also, in header #include's, use
b4_parser_file_name, b4_spec_defines_file, and the new
@basename(FILENAME@) instead of @output_parser_name@ and
@output_header_name@, which inappropriately escaped the file names as
C string literals.
* src/files.c (all_but_ext): Remove static qualifier.
(compute_output_file_names): Move `free (all_but_ext)' to...
(output_file_names_free): ... here since all_but_ext is needed later.
* src/files.h (all_but_ext): Extern.
* src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
exactly what MUSCLE_INSERT_STRING used to do.
(MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
characters are escaped properly.
* src/output.c (prepare): Define muscle file_name_all_but_ext as
all_but_ext.
For pkgdatadir muscle, maintain previous functionality by using
MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING.  The problem
is that b4_pkgdatadir is used inside m4_include in the skeletons, so
digraphs would never be expanded.  Hopefully no one has M4-special
characters in his Bison installation path.
* src/scan-skel.l: Don't parse @output_header_name@ and
@output_parser_name@ anymore since they're now redundant.
In @output, use decode_at_digraphs.
Parse a new @basename command that invokes last_component.
(decode_at_digraphs): New.
(BASE_QPUTS): Remove unused.
* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
(Output file name): New tests.
2006-12-12 06:47:39 +00:00
Paolo Bonzini
136a0f766b 2006-10-16 Paolo Bonzini <bonzini@gnu.org>
* data/bison.m4 (b4_user_requires, b4_user_provides): New.
	(b4_user_start_header): Remove.
	* data/glr.c: Use new macros instead of b4_*start_header
	and b4_*end_header.
	* data/glr.cc: Likewise.
	* data/lalr1.cc: Likewise.
	* data/push.c: Likewise.
	* data/yacc.c: Likewise.

	* doc/bison.texinfo: Remove %before-header, rename
	%{start,end,after}-header to %requires, %provides, %code.

	* src/parse-gram.y: Likewise (also rename token names accordingly).
	* src/scan-gram.l: Likewise.
	* tests/actions.at: Likewise.
2006-10-15 12:37:07 +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
Paul Eggert
4ec13d6058 * data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove. 2006-09-12 17:46:34 +00:00
Paul Eggert
aef3da8689 * data/glr.c (b4_shared_declarations): Put start-header first,
before any #includes that we generate, so that feature-test
macros work.  Problem reported by Michael Deutschmann in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
* data/lalr1.cc: Likewise.
* doc/bison.texinfo (Prologue): Document that feature-test macros
should be defined before any Bison declarations.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
that depend on location.hh after, not before, Bison decls, since
we now include location.hh after the first user prologue.
2006-09-11 18:56:58 +00:00
Paul Eggert
ddc8ede1ab * NEWS: Instead of %union, you can define and use your own union type
YYSTYPE if your grammar contains at least one <type> tag.
Your YYSTYPE need not be a macro; it can be a typedef.
* doc/bison.texinfo (Value Type, Multiple Types, Location Type):
(Union Decl, Decl Summary): Document this.
* data/glr.c (YYSTYPE): Implement this.
* data/glr.cc (YYSTYPE): Likewise.
* data/lalr1.cc (YYSTYPE): Likewise.
* data/yacc.c (YYSTYPE): Likewise.
* src/output.c (prepare): Output tag_seen_flag.
* src/parse-gram.y (declaration, grammar_declaration):
Use 'union_seen' rather than 'typed' to determine whether
%union has been seen, since grammars can now be typed without
%union.
(symbol_declaration, type.opt, symbol_def):
Keep track of whether a tag has been seen.
* src/reader.c (union_seen, tag_seen): New vars.
(typed): remove.
* src/reader.h (union_seen, tag_seen, typed): Likewise.
* src/scan-code.l (untyped_var_seen): New variable.
(handle_action_dollar): Adjust to above changes.
(handle_action_dollar, handle_action_at):
Improve overflow checking for outlandish numbers.
* tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
avoid new diagnostics generated by above changes.
* tests/regression.at (YYSTYPE typedef): Add test to check
for type tags without %union.
2006-07-09 20:36:33 +00:00
Akim Demaille
8ec0a172bc * data/c.m4 (b4_dirname): New.
(b4_syncline): Also output the location of its invocation (from
the skeleton).
(b4_user_action, b4_define_user_action, b4_user_actions)
(b4_user_initial_action, b4_user_post_prologue,	b4_user_start_header)
(b4_user_stype): New.
* data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.
2006-07-08 14:24:56 +00:00
Joel E. Denny
34f98f46ee Rename %before-definitions to %start-header and %after-definitions to
%end-header.  Don't use these declarations to separate pre-prologue
blocks from post-prologue blocks.  Add new order-independent
declarations %before-header and %after-header as alternatives to the
traditional Yacc pre-prologue and post-prologue blocks.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
* NEWS (2.3+): Update for these changes.
* data/glr.c (b4_before_definitions): Update to...
(b4_start_header): ... this.
(b4_after_definitions): Update to...
(b4_end_header): ... this.
* data/glr.cc: Likewise.
* data/lalr1.cc: Likewise.
* data/yacc.c: Likewise.
* doc/bison.texinfo (The prologue): Update names, and replace remaining
prologue blocks with %*-header declarations.
(Calc++ Parser): Likewise.
(Bison Declaration Summary): Update names.
(Bison Symbols): Update description.
* src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
(PERCENT_END_HEADER): ... this.
(PERCENT_BEFORE_DEFINITIONS): Update to...
(PERCENT_START_HEADER): ... this.
(PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
(declaration): Update token names and m4 macro names.
When parsing %end-header and %start-header, invoke translate_code
before muscle_code_grow, and no longer set global booleans to remember
whether these declarations have been seen.
Parse new %after-header and %before-header.
* src/reader.c (before_definitions, after_definitions): Remove.
(prologue_augment): Accept a new bool argument to specify whether to
augment the pre-prologue or post-prologue.
* src/reader.h (before_definitions, after_definitions): Remove these
extern's.
(prologue_augment): Add new bool argument.
* src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
(PERCENT_END_HEADER): ... this.
(PERCENT_BEFORE_DEFINITIONS): Update to...
(PERCENT_START_HEADER): ... this.
(PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
* tests/actions.at (Printers and Destructors): Update names.
2006-06-23 20:17:28 +00:00
Joel E. Denny
9bc0dd679f Don't put the pre-prologue in the header file. For the yacc.c code
file and the glr.c header and code files, move the pre-prologue before
the token definitions.  Add new %before-definitions and
%after-definitions to declare code that will go in both the header file
and code file.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
<http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
and
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
* NEWS (2.3+): Describe these changes.
* data/glr.c (b4_pre_prologue): Move from within to before...
(b4_shared_declarations): ... this.
Add new b4_before_definitions before b4_token_enums.
Add new b4_after_definitions at the end.
* data/glr.cc (b4_pre_prologue): Replace with...
(b4_before_definitions): ... this in the header file.
(b4_after_definitions): New near the end of the header file.
* data/lalr1.cc (b4_pre_prologue): Move from the header file to the
code file right before including the header file.
(b4_before_definitions): New in the previous position of
b4_pre_prologue in the header file.
(b4_after_definitions): New near the end of the header file.
* data/yacc.c: Clean up some m4 quoting especially in the header file.
(b4_token_enums_defines): In the code file, move to right before
YYSTYPE for consistency with the header file.
(b4_before_definitions): New right before b4_token_enums_defines in
both the header and code file.
(b4_after_definitions): New right after YYLTYPE and yylloc in both the
header and code file.
* doc/bison.texinfo (Prologue): Show use of %before-definitions instead
of prologues for %union dependencies.
(Bison Declaration Summary): In %defines description, mention the
effect of %before-definitions and %after-definitions on the header
file.
(Calc++ Parser): Forward declare driver in a %before-definitions rather
than in the pre-prologue so that make check succeeds.
(Bison Symbols): Add entries for %before-definitions and
%after-definitions.
* src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
%before-definitions.
(PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
(declaration): Parse those declarations and append to
b4_before_definitions and b4_after_definitions, respectively.
* src/reader.c (before_definitions, after_definitions): New bools to
track whether those declarations have been seen.
(prologue_augment): Add to the post-prologue if %union,
%before-definitions, or %after-definitions has been seen.
* src/reader.h (before_definitions, after_definitions): New extern's.
* src/scan-gram.l: Scan the new declarations.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
prologue block in a %before-definitions or a %after-definitions based
on whether the %union is declared.
* tests/regression.at (Early token definitions with --yacc, Early token
definitions without --yacc): Move tests for token definitions into the
post-prologue since token names are no longer defined in the
pre-prologue.
2006-06-21 01:37:01 +00:00
Akim Demaille
34376418e2 * data/glr.cc, data/lalr1.cc: Using %defines is mandatory.
* data/glr.cc: b4_location_flag is now b4_locations_flag.
2006-05-14 20:48:24 +00:00
Akim Demaille
327afc7c84 Implement --trace=m4.
* src/getargs.c (trace_types, trace_args): Accept trace_m4.
* src/output.c (output_skeleton): When set, pass -dV to m4.
Factor the handling of flags in m4.
* src/output.c (prepare): Rename the muscle names debug, defines,
error_verbose to debug_flag, defines_flag, error_verbose_flag.
* data/c.m4: Adjust.
(_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
Use b4_define_flag_if to define other b4_FLAG_if macros.
(b4_location_if): As a consequence, rename as...
(b4_locations_if): this, for consistency.
Adjust all the skeletons.
2006-05-14 20:40:35 +00:00