Akim Demaille [Thu, 19 Sep 2013 13:20:22 +0000 (15:20 +0200)]
examples: improve the output of the "variant" example
* examples/variant.yy: Improve the printing of lists.
Akim Demaille [Thu, 19 Sep 2013 13:03:01 +0000 (15:03 +0200)]
variant: remove useless assertion
* data/variant.hh (move): Remove precondition assertion which is
ensured by the first call of the body (this precondition is also one
of "build").
Akim Demaille [Thu, 19 Sep 2013 13:51:32 +0000 (15:51 +0200)]
tests: remove stray debugging traces
* tests/atlocal.in: Remove traces.
Be ready to remove conftest.dSYM generated on OS X.
Akim Demaille [Wed, 4 Sep 2013 15:23:37 +0000 (17:23 +0200)]
tests: do not use grep -q
Reported by Daniel Galloway.
http://lists.gnu.org/archive/html/bug-bison/2013-08/msg00020.html
* tests/java.at: Ignore grep's output instead.
Paul Eggert [Sun, 25 Aug 2013 01:22:22 +0000 (18:22 -0700)]
build: don't require flex for ordinary builds
* configure.ac (LEX): Don't fail if this is lex, as flex is not
required for ordinary builds. Instead, issue a warning and
substitute a no-op LEX. Reported by Michael Felt in
<http://lists.gnu.org/archive/html/bug-bison/2013-08/msg00009.html>.
Paul Eggert [Sun, 25 Aug 2013 01:00:25 +0000 (18:00 -0700)]
maint: update .gitignore
* .gitignore: Add *.eps, *.o, *.pdf, *.png, *.stamp, *~,
.deps, .dirstamp. Needed to suppress unwanted chatter from
'git status' after a bootstrap build.
Paul Eggert [Sat, 24 Aug 2013 14:52:27 +0000 (07:52 -0700)]
build: port to pre-5.8.7 perl
* examples/local.mk (extract): Omit -f from perl options.
This doesn't work with perl versions before 5.8.7
that are configured without USE_SITECUSTOMIZE.
Reported by Michael Felt in
<http://lists.gnu.org/archive/html/bug-bison/2013-08/msg00006.html>.
Akim Demaille [Thu, 1 Aug 2013 14:11:27 +0000 (16:11 +0200)]
tests: minor change to make it easier to test other skeletons
* tests/c++.at (Variants): Pass the skeleton as argument.
Valentin Tolmer [Thu, 1 Aug 2013 12:53:54 +0000 (14:53 +0200)]
uniqstr: fix assertion
* src/uniqstr.c (uniqstr_assert): Really make sure str is a uniqstr,
not just whether some uniqstr with the same content was registered.
Akim Demaille [Thu, 1 Aug 2013 09:41:49 +0000 (11:41 +0200)]
build: ship the ASCII art figures
We don't ship the *.txt files that are used to build the info
file.
Reported by Colin Daley.
* doc/figs/example.txt: New.
* doc/local.mk (bison.info): Depend on the txt files.
And ship them.
Akim Demaille [Thu, 1 Aug 2013 09:19:05 +0000 (11:19 +0200)]
doc: prefer the ".gv" extension to ".dot"
See http://marc.info/?l=graphviz-devel&m=
129418103126092 for the
motivation (basically, some word processor now uses *.dot).
* doc/figs/example-reduce.dot: Rename as...
* doc/figs/example-reduce.gv: this.
* doc/figs/example-shift.dot: Rename as...
* doc/figs/example-shift.gv: this.
* doc/figs/example.dot: Rename as...
* doc/figs/example.gv: this.
* doc/local.mk: Adjust.
Akim Demaille [Thu, 25 Jul 2013 16:13:53 +0000 (18:13 +0200)]
maint: post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
Akim Demaille [Thu, 25 Jul 2013 15:55:58 +0000 (17:55 +0200)]
version 3.0
* NEWS: Record release date.
Akim Demaille [Thu, 25 Jul 2013 15:52:15 +0000 (17:52 +0200)]
regen
Akim Demaille [Thu, 25 Jul 2013 15:50:11 +0000 (17:50 +0200)]
news: prepare 3.0
* NEWS (3.0): Reorder.
Akim Demaille [Thu, 25 Jul 2013 15:45:19 +0000 (17:45 +0200)]
tests: fix invalid assignment when using variants in C++11
* tests/c++.at (Exception safety): In variant mode $$ is an instance
of Object. Assigning YY_NULL in C++98 is incorrect, but behaves ok,
as it assigns YY_NULL=0 using Object::operator= (char v). It is wrong
in C++11 as there is operator for "$$ = nullptr".
Akim Demaille [Thu, 25 Jul 2013 14:04:26 +0000 (16:04 +0200)]
yacc: beware of "uninitialized uses" warnings
Again some issues with the fact that yylval is reported by GCC as
possibly not initialized in some cases. Here, the case at hand is the
%destructor.
I am still not convinced that it is worth going all the trouble of
using pragmas to disable temporarily some warnings, instead of just
initializing the looking symbol once for all, but that's what Paul
voted for, see
<http://lists.gnu.org/archive/html/bison-patches/2012-10/msg00050.html>.
* data/c.m4 (b4_attribute_define): Define
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN, YY_IGNORE_MAYBE_UNINITIALIZED_END,
YY_INITIAL_VALUE here, as we will need them in the generation of the
destructor function, which is defined in yacc.c before yyparse, which
was in charge of defining these macros.
* data/yacc.c (b4_declare_scanner_communication_variables): Simplify:
trying to factor the definitions of the case pure and impure is
too complex.
Actually, it is not even clear that this macro should really exist,
as even the calls are complex.
Be careful not to issue a lone ";", as this is a statement, and C90
forbids declarations after statements ; so write
"YY_INITIAL_VALUE(Decl;)", not "YY_INITIAL_VALUE(Decl);".
Akim Demaille [Thu, 25 Jul 2013 11:33:28 +0000 (13:33 +0200)]
gnulib: update
Akim Demaille [Wed, 3 Jul 2013 15:16:04 +0000 (17:16 +0200)]
tests: skip C++ tests if we can't compile a simple program
There are possible conflicts between gnulib replacement functions (in
<stdio.h>) and their C++ wrappers (in <stream>). Trying to address
these in configure seems too hard, and I don't know how to fix the issue
in gnulib. Cowardly avoid the problem by skipping C++ tests when this
happens.
Reported by Stefano Lattarini.
http://lists.gnu.org/archive/html/bug-bison/2013-06/msg00001.html
* tests/atlocal.in (BISON_CXX_WORKS): Also set it to "skip" if we can't
compile a simple program using <stream>.
* tests/local.at: Comment changes.
Akim Demaille [Fri, 28 Jun 2013 06:33:33 +0000 (08:33 +0200)]
tests: fix 'find' portability issues
Reported by Stefano Lattarini.
http://lists.gnu.org/archive/html/bug-bison/2013-06/msg00000.html
* tests/output.at (AT_CHECK_OUTPUT): Use Perl instead.
Akim Demaille [Mon, 24 Jun 2013 08:29:36 +0000 (10:29 +0200)]
maint: post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
Akim Demaille [Mon, 24 Jun 2013 08:21:33 +0000 (10:21 +0200)]
version 2.7.91
* NEWS: Record release date.
Akim Demaille [Mon, 24 Jun 2013 08:20:46 +0000 (10:20 +0200)]
NEWS: prepare for 2.7.91
* NEWS (2.7.91): Java push parsers.
Akim Demaille [Mon, 24 Jun 2013 07:32:22 +0000 (09:32 +0200)]
java: rename YYMORE as YYPUSH_MORE for consistency with C
http://lists.gnu.org/archive/html/bison-patches/2013-06/msg00008.html
* data/lalr1.java, doc/bison.texi, tests/javapush.at:
s/YYMORE/YYPUSH_MORE.
Akim Demaille [Fri, 21 Jun 2013 09:39:02 +0000 (11:39 +0200)]
tests: fix Java push failure when running with BISON_USE_PUSH_FOR_PULL
* tests/javapush.at (Trivial Push Parser with api.push-pull verification):
When push for pull is enabled, there is one such function generated.
Akim Demaille [Fri, 21 Jun 2013 09:28:01 +0000 (11:28 +0200)]
style: minor changes in the Java tests
* tests/java.at (AT_CHECK_JAVA_GREP): Ignore the exit status.
* tests/javapush.at (AT_CHECK_JAVA_GREP): Be more alike the previous
one.
Formating changes.
Remove stray debugging "jj" file.
Akim Demaille [Fri, 21 Jun 2013 09:17:05 +0000 (11:17 +0200)]
java: push: do not reset the error counter
* data/lalr1.java (parse): here, when in push-pull is in "both" mode.
This breaks the test suite, for instance
make check TESTSUITEFLAGS='-d 388 BISON_USE_PUSH_FOR_PULL=1'.
More generally make maintainer-push-check.
Akim Demaille [Thu, 13 Jun 2013 14:08:33 +0000 (16:08 +0200)]
build: add Valgrind suppression file for GNU/Linux
* build-aux/linux-gnu.valgrind: New.
* build-aux/local.mk: Ship it.
* configure.ac: Use it.
Dennis Heimbigner [Thu, 13 Jun 2013 08:08:19 +0000 (10:08 +0200)]
java: add push-parser support
* data/lalr1.java: Capture the declarations as m4 macros to avoid
duplication. When push parsing, the declarations occur at the class
instance level rather than within the parse() function.
Change the way that the parser state is initialized. For
push-parsing, the parse state declarations are moved to
"push_parse_initialize()", which is called on the first invocation of
"push_parse()". The %initial-action code is also inserted after the
invocation of "push_parse_initialize()".
The body of the parse loop is modified to return values at appropriate
points when doing push parsing. In order to make push parsing work,
it is necessary to divide YYNEWSTATE into two states: YYNEWSTATE and
YYGETTOKEN. On the first call to push_parse(), the state is
YYNEWSTATE. On all later entries, the state is set to YYGETTOKEN. The
YYNEWSTATE switch arm falls through into YYGETTOKEN. YYGETTOKEN
indicates that a new token is potentially needed. Normally, with a
pull parser, this new token would be obtained by calling "yylex()". In
the push parser, the value YYMORE is returned to the caller. On the
next call to push_parse(), the parser will return to the YYGETTOKEN
state and continue operation.
* tests/javapush.at: New test file for java push parsing.
* tests/testsuite.at: Use it.
* tests/local.mk: Adjust.
* doc/bison.texi (Java Push Parser Interface): New.
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
Akim Demaille [Tue, 11 Jun 2013 13:26:48 +0000 (15:26 +0200)]
build: ship all the files, even if the C++ compiler is broken
* examples/calc++/local.mk: Be sure to ship calc++.test even if
the current C++ compiler is not sufficient to run the tests.
Dennis Heimbigner [Wed, 5 Jun 2013 08:03:16 +0000 (10:03 +0200)]
style: comment changes in Java skeleton
* data/lalr1.java: Here.
Akim Demaille [Mon, 3 Jun 2013 14:40:53 +0000 (16:40 +0200)]
tests: fix a G++ warning
* tests/c++.at: Use YY_NULL instead of 0 for the null pointer.
And formatting changes.
Akim Demaille [Mon, 3 Jun 2013 14:40:30 +0000 (16:40 +0200)]
build: fix a warning from clang
* src/muscle-tab.c: Declare local functions static.
Akim Demaille [Thu, 30 May 2013 13:28:44 +0000 (15:28 +0200)]
maint: post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
Akim Demaille [Thu, 30 May 2013 13:02:52 +0000 (15:02 +0200)]
version 2.7.90
* NEWS: Record release date.
Akim Demaille [Thu, 30 May 2013 12:08:41 +0000 (14:08 +0200)]
style: syntax-check fixes
* data/yacc.c, src/Sbitset.c, src/Sbitset.h, src/muscle-tab.h,
* src/output.c, src/parse-gram.y, src/reader.c, src/symtab.c,
* src/uniqstr.c, src/uniqstr.h: Fix space before parens.
* cfg.mk (_space_before_paren_exempt): Add needed exceptions.
Akim Demaille [Wed, 29 May 2013 15:07:32 +0000 (17:07 +0200)]
xml: use %empty in the text output
* data/xslt/xml2text.xsl: here.
Akim Demaille [Wed, 29 May 2013 14:27:59 +0000 (16:27 +0200)]
build: locally disable new GCC warnings that fail on Flex generated code
* configure.ac: here.
Akim Demaille [Wed, 29 May 2013 14:26:53 +0000 (16:26 +0200)]
fix a memory leak
* src/print-xml.c (num_escape_bufs): New.
(print_xml): Be sure to release all the escape_bufs.
Akim Demaille [Wed, 29 May 2013 07:27:59 +0000 (09:27 +0200)]
regen
Akim Demaille [Wed, 29 May 2013 07:17:48 +0000 (09:17 +0200)]
build: be sure to include config.h first in the generated parser
Using %code for config.h is wrong, as some headers will already have
been included by Bison. In some cases, e.g., glibc's string.h, this
results in some declaration not being made for lack of definition of
_GNU_SOURCE, which is performed by config.h.
* src/parse-gram.y: here.
Akim Demaille [Wed, 29 May 2013 07:05:12 +0000 (09:05 +0200)]
Merge remote-tracking branch 'origin/maint'
* origin/maint:
maint: post-release administrivia
version 2.7.1
regen
Petr Machata [Fri, 17 May 2013 15:23:14 +0000 (17:23 +0200)]
drop unused options --raw, -n, -e, --include and -I
* --raw appears to be ignored. It was marked as obsolete in the
commit ec3bc39, and documented as no longer supported as of 1.29
(2001-09-07). Support for %raw appears to have been dropped in
e9955c83 on 2002-06-11, but --raw was kept around. Maybe it's time
to drop it as well?
* Commit
e9955c83 dropped support for %no-parser as well, and
converted it to option. --no-parser was later dropped in
728c4be2
on 2007-08-12, but -n was kept around, probably as an omission. All
three are documented as removed since 2.3b (2008-05-27).
* -e existed for a single day in 2001. It was introduced in
eeeb962b
on 2001-11-27. The handling was removed in
c7925b99 on 2001-11-28,
but "e" was kept in the list of short options. Probably an
omission.
* --include appears to be dead code. The option sets a variable, but
that variable is not used anywhere. It was added in
f6bd5427 on
2001-11-26 as a %-directive, with comments that it's not yet
implemented. It was converted to a command-line option later, but
doesn't seem to ever have been actually implemented.
Signed-off-by: Petr Machata <pmachata@redhat.com>
Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
Akim Demaille [Tue, 28 May 2013 14:38:26 +0000 (16:38 +0200)]
gnulib: update
Akim Demaille [Mon, 22 Apr 2013 11:55:00 +0000 (13:55 +0200)]
diagnostics: always point to the first directive
Some directives cannot be used several times (e.g., a given symbol may
only have a single printer). In case of repeated definitions, an
error is issued for the second definition, yet it is not discarded,
and becomes the definition used for the rest of the file.
This is not consistent with the idea that multiple definitions are not
allowed: discard any repeated directive.
* src/symtab.c (symbol_type_set, symbol_code_props_set)
(semantic_type_code_props_set, symbol_class_set, symbol_translation):
Discard repeated directives.
* tests/input.at (Default %printer and %destructor redeclared)
(Per-type %printer and %destructor redeclared): Update expectations.
Akim Demaille [Mon, 22 Apr 2013 11:47:50 +0000 (13:47 +0200)]
tests: factor test for printer/desctructor redefined
* tests/input.at (Default %printer and %destructor redeclared):
Introduce AT_TEST to factor.
Akim Demaille [Mon, 22 Apr 2013 09:26:28 +0000 (11:26 +0200)]
diagnostics: use appropriate location for useless precedence/associativity
* src/symtab.c (symbol_precedence_set): Use prec_location, not
location (which is the first occurrence of the symbol, possibly just
%token).
Also, as redefinitions are not allowed, keep the first values, not
the subsequent ones.
* tests/conflicts.at, tests/existing.at, tests/regression.at: Adjust.
Akim Demaille [Mon, 22 Apr 2013 09:13:09 +0000 (11:13 +0200)]
tests: factor duplicate expected warnings
* tests/existing.at: Instead of "t ? abc : aBc", write "a(t?b:B)c".
Akim Demaille [Fri, 19 Apr 2013 15:13:07 +0000 (17:13 +0200)]
tests: enable -Wsign-compare and fix corresponding warnings
-Wsign-compare was disabled for bison's own code, following gnulib's
approach. However, the generated parsers should not trigger such
warnings.
Reported by Efi Fogel.
http://lists.gnu.org/archive/html/help-bison/2013-04/msg00018.html
See also http://stackoverflow.com/questions/
16101062 for the weird
"-(unsigned)i" piece of code.
* configure.ac (warn_tests): Enable -Wsign-compare.
* data/location.cc (position::add_): New.
(position::lines, position::columns): Use it.
* tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): Fix signedness issues.
Akim Demaille [Thu, 18 Apr 2013 14:52:55 +0000 (16:52 +0200)]
muscle: check more cases of %define variables with code values
* data/bison.m4 (b4_percent_define_check_kind): Fix overquotation.
(api.location.type, api.position.type): Check they have code values here.
* data/c++.m4 (api.location.type): No longer checked here.
(parser_class_name): Check it here.
* data/java.m4 (api.value.type, init_throws, lex_throws, parser_class_name)
(throws, annotations, extends, implements): Check they have code values.
* doc/bison.texi: Fix every incorrect occurrence of %define.
Document the additional syntax for %define: code values.
Document the additional syntax for -D/-F: string and code values.
* tests/calc.at, tests/headers.at, tests/input.at, tests/java.at,
* tests/local.at: Fix dependencies.
Akim Demaille [Thu, 18 Apr 2013 14:47:41 +0000 (16:47 +0200)]
regen
Akim Demaille [Thu, 18 Apr 2013 14:37:23 +0000 (16:37 +0200)]
parser: do not convert $ and @ in code values of %define variables
* src/parse-gram.y (value: "{...}"): Just strip the braces, but pass
the value as is.
Akim Demaille [Thu, 18 Apr 2013 14:36:54 +0000 (16:36 +0200)]
parser: no longer use the "braceless" non-terminal
The purpose of this symbol was only to factor function calls. As a
result the actions were indeed simpler, but the grammar was somewhat
uselessly obfuscated. Get rid of this symbol, but introduce functions
to simplify dependencies.
There is no (intended) changes of behavior here.
* src/parse-gram.y (strip_braces, translate_code(
(translate_code_braceless): New.
(braceless): Remove, use "{...}" instead, and one of the previous
functions depending on the context.
(STRING, "%{...%}", EPILOGUE): Declare as <code>, instead of <chars>,
the difference between both is useless (well, I couldn't make sense of
it, even after having read the initial commit that introduced them).
(%union): Remove the now useless "chars" type.
Adjust the printers.
* src/scan-gram.l: Adjust.
Akim Demaille [Thu, 18 Apr 2013 13:12:24 +0000 (15:12 +0200)]
regen
Akim Demaille [Thu, 18 Apr 2013 13:11:53 +0000 (15:11 +0200)]
style: avoid %{...%} in our parser
* src/parse-gram.y (%{...%}): Split in %code and %code requires.
* src/location.h: Add missing includes for self containedness.
Akim Demaille [Thu, 18 Apr 2013 12:46:06 +0000 (14:46 +0200)]
style: use %code for local function declarations in our parser
* src/parse-gram.y (version_check, gram_error, char_name, lloc_default):
Move their prototypes from %{...%} to %code.
(YYLLOC_DEFAULT, YY_LOCATION_PRINT): Move from %{...%} to %code.
(current_lhs): Move its implementation to the epilogue.
Akim Demaille [Tue, 16 Apr 2013 16:06:08 +0000 (18:06 +0200)]
regen
Akim Demaille [Tue, 16 Apr 2013 15:42:43 +0000 (17:42 +0200)]
muscle: check the kind of api.prefix, api.location.type
* data/bison.m4: Check api.prefix.
* data/c++.m4: Check api.location.type.
* doc/bison.texi: Fix uses of api.value.type, api.prefix, api.location.type.
Document {...} values for %define.
* src/parse-gram.y: Fix use of api.prefix.
* tests/calc.at: Fix uses of api.location.type.
* tests/input.at: Check api.prefix, and api.location.type.
Akim Demaille [Mon, 15 Apr 2013 12:09:40 +0000 (14:09 +0200)]
maint: post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
Akim Demaille [Mon, 15 Apr 2013 11:59:02 +0000 (13:59 +0200)]
version 2.7.1
* NEWS: Record release date.
Akim Demaille [Mon, 15 Apr 2013 09:29:54 +0000 (11:29 +0200)]
regen
Akim Demaille [Sun, 14 Apr 2013 12:42:15 +0000 (14:42 +0200)]
muscle: enforce definition syntax for keyword variables
* src/muscle-tab.c (muscle_percent_define_get_kind)
(muscle_percent_define_check_kind): New.
(muscle_percent_define_default): Variables with a default value are
of "keyword" kind.
(muscle_percent_define_flag_if, muscle_percent_define_check_values):
Check that the variable is of keyword kind.
* data/bison.m4: Likewise, but in M4. That is to say...
(b4_percent_define_default): Define the kind when the variable is undefined.
(b4_percent_define_check_kind): Use a better error message.
(_b4_percent_define_check_values, _b4_percent_define_check_values):
Former "enum" variables should be defined using the keyword syntax.
* doc/bison.texi: Update.
A couple of fixes.
* tests/input.at (%define keyword variables): New.
Akim Demaille [Mon, 15 Apr 2013 08:05:44 +0000 (10:05 +0200)]
muscle: let -D/-F support the three kinds of %define variable values
See http://lists.gnu.org/archive/html/bison-patches/2013-04/msg00012.html
* src/getargs.c (getargs): Recognize {value} and "value" for -D and -F.
Akim Demaille [Sun, 14 Apr 2013 11:51:19 +0000 (13:51 +0200)]
muscle: minor refactoring
* src/muscle-tab.c (muscle_percent_define_default): Reduce the scopes.
Akim Demaille [Sun, 14 Apr 2013 08:28:26 +0000 (10:28 +0200)]
muscle: minor simplification which uncovers a missing warning
* src/muscle-tab.c (muscle_percent_define_ensure): Discover the virtues
of || to factor conditionals.
* NEWS: As api.pure is no longer flagged as "used" by accident,
we now have warnings for useless definitions.
* tests/calc.at: So remove api.pure settings when running C++ tests,
since C++ skeletons use a pure interface.
Akim Demaille [Sun, 14 Apr 2013 08:21:22 +0000 (10:21 +0200)]
muscle: factor the field retrieval
* src/muscle-tab.c (muscle_percent_define_get_raw): New.
Use it where appropriate.
(location_decode): No longer fetch the value from the table,
take the value as argument.
Akim Demaille [Sun, 14 Apr 2013 08:12:36 +0000 (10:12 +0200)]
muscle: factor the handling of used variables
* src/muscle-tab.c (muscle_percent_define_use): New, corresponding
to b4_percent_define_use.
Use it where appropriate.
Akim Demaille [Sun, 14 Apr 2013 08:11:13 +0000 (10:11 +0200)]
muscle: factor the computation of variable names
* src/muscle-tab.c (muscle_name): New.
Use it.
Propagate "uniqstr" as value type instead of plain "char const *".
Akim Demaille [Sat, 13 Apr 2013 07:30:05 +0000 (09:30 +0200)]
muscle: factor the kind check in M4
* data/bison.m4 (b4_percent_define_check_kind): New.
Use it to check api.token.prefix.
* data/c++.m4: Check the kind of api.namespace.
* doc/bison.texi: Update a reference to former 'namespace' variable.
* tests/input.at ("%define" code variables): Check api.namespace.
Akim Demaille [Mon, 15 Apr 2013 08:31:04 +0000 (10:31 +0200)]
muscle: factor conditionals on defined %define variables
* data/bison.m4 (b4_percent_define_ifdef_): New.
Use it where appropriate.
Akim Demaille [Thu, 11 Apr 2013 13:43:26 +0000 (15:43 +0200)]
api.token.prefix: use code values
* data/bison.m4: Remove useless (and incorrect: m4_* instead of b4_*)
default assignment to api.token.prefix.
Check that api.token.prefix is assigned code.
* tests/input.at (%define code variables): New test.
* NEWS, doc/bison.texi, tests/c++.at, tests/calc.at,
* tests/java.at, tests/local.at: Adjust to use braces.
Akim Demaille [Thu, 11 Apr 2013 07:53:18 +0000 (09:53 +0200)]
c++: fix several issues with locations
Reported by Daniel Frużyński.
http://lists.gnu.org/archive/html/bug-bison/2013-02/msg00000.html
* data/location.cc (position::columns, position::lines): Check for
underflow.
Fix some weird function signatures.
(location): Accept signed integers as arguments where appropriate.
Add operator- and operator+=.
* doc/bison.texi (C++ position, C++ location): Various fixes
and completion.
* tests/c++.at (C++ Locations): New tests.
Akim Demaille [Thu, 11 Apr 2013 07:21:08 +0000 (09:21 +0200)]
muscles: be sure that %code snippets are not glue together on a single line
Recently "braceless" in the parser was changed so that an eol was no
longer added to the value. This is not correct when a %code is used
multiple times, because the syncline of the next snippet might be
appended to the last (and not ended) line of the previous snippet.
* src/muscle-tab.h (muscle_grow): Make it private.
* src/muscle-tab.c (muscle_grow): Accept a fourth argument: a required
terminator.
Adjust callers.
* tests/input.at (Multiple %code): New.
Akim Demaille [Thu, 11 Apr 2013 06:47:22 +0000 (08:47 +0200)]
style: fix comments
* tests/actions.at: Fix incorrect "prototype".
Akim Demaille [Wed, 10 Apr 2013 07:23:20 +0000 (09:23 +0200)]
Merge remote-tracking branch 'origin/maint'
* origin/maint:
glr.cc: fix a clang warning
maint: update copyright years
build: fix VPATH issue
build: avoid clang's colored diagnostics in the test suite
tests: please clang and use ".cc", not ".c", for C++ input
gnulib: update
skeletons: avoid empty switch constructs
lalr1.cc: fix compiler warnings
yacc.c: do not use __attribute__ unprotected
tests: style changes
Akim Demaille [Fri, 5 Apr 2013 12:40:25 +0000 (14:40 +0200)]
api.value.type: use keyword/brace values
Suggested by Joel E. Denny.
http://lists.gnu.org/archive/html/bison-patches/2013-03/msg00016.html
* data/bison.m4 (b4_percent_define_get_kind): New.
(b4_variant_flag): Check that api.value.type is defined as the 'variant'
keyword value.
* data/c.m4 (_b4_value_type_setup_keyword): New.
(b4_value_type_setup): Use it to simplify reading.
Use b4_define_silent.
Decode api.value.type, including its type.
(b4_value_type_define): Likewise.
* data/c++.m4 (b4_value_type_declare): Adjust the decoding of api.value.type,
taking its kind into account.
* doc/bison.texi: Adjust all the examples to the new syntax.
* NEWS: Ditto.
* tests/types.at: Adjust
Akim Demaille [Wed, 27 Mar 2013 08:18:32 +0000 (09:18 +0100)]
api.value.type: diagnose guaranteed failure with --yacc
Instead of generating invalid C code, generate an error when --yacc and
'%define api.value.type union' are used together.
* data/bison.m4: Issue an error in this case.
* tests/types.at (%yacc vs. %define api.value.type union): New, check this
error.
* doc/bison.texi (Type Generation): Document it.
* tests/output.at: Check that '-o y.tab.c' and '-y' behave equally
wrt generated file names.
* NEWS (Use of YACC='bison -y'): New.
Promote the use of 'bison -o y.tab.c'.
Akim Demaille [Mon, 25 Feb 2013 09:31:03 +0000 (10:31 +0100)]
doc: style changes
* doc/bison.texi (Destructor Decl, Printer Decl): Group series of %token
and %type together.
Akim Demaille [Sat, 23 Feb 2013 16:04:17 +0000 (17:04 +0100)]
doc: display locations in error as recommended by GNU Coding Standards
* doc/bison.texi (Actions and Locations): here.
Akim Demaille [Sat, 23 Feb 2013 14:11:24 +0000 (15:11 +0100)]
doc: api.value.type union
* doc/bison.texi (Type Generation): New section.
(Multi-function Calc): Convert to use api.value.type=union.
Akim Demaille [Sat, 23 Feb 2013 13:37:44 +0000 (14:37 +0100)]
doc: move the section about "%union" where types are discussed
* doc/bison.texi (Union Decl): Move to...
(Defining Language Semantics): here.
Akim Demaille [Fri, 22 Feb 2013 11:47:25 +0000 (12:47 +0100)]
doc: deprecate #define YYSTYPE in favor of %define api.value.type
* doc/bison.texi: Convert examples with YYSTYPE to use api.value.type.
Deprecate YYSTYPE.
Akim Demaille [Thu, 21 Feb 2013 14:58:05 +0000 (15:58 +0100)]
value type: accept "->" in type tags
Provide a means to dereference pointers when defining tags. One
example could be:
%code requires
{
typedef struct ListElementType
{
union value
{
int intVal;
float floatVal;
char* charptrVal;
} value;
struct ListElementType* next;
} ListElementType;
}
%union
{
ListElementType* list;
}
%token <list->value.charptrVal> STRING
%token <list->value.intVal> INTEGER
%token <list->value.floatVal> REAL
%type <list> ElementList LiteralType
* src/scan-code.l, src/scan-gram.l: Accept "->" in tags.
* tests/types.at: Add more test cases to cover this case.
Akim Demaille [Thu, 21 Feb 2013 13:32:16 +0000 (14:32 +0100)]
style: simplify the scanning of type tags
* src/scan-gram.l: Remove the rule for simple tags: the "complex" case
subsumes it. It was more efficient, but duplicated the code for a
negligible benefit.
Akim Demaille [Fri, 8 Feb 2013 16:17:33 +0000 (17:17 +0100)]
api.value.type: implement proper support, check, and document
* data/c.m4 (b4_symbol_type_register, b4_type_define_tag)
(b4_symbol_value_union, b4_value_type_setup_union)
(b4_value_type_setup_variant, b4_value_type_setup):
New.
(b4_value_type_define): Use it to set up properly the type.
Handle the various possible values of api.value.type.
* data/c++.m4 (b4_value_type_declare): Likewise.
* data/lalr1.cc (b4_value_type_setup_variant): Redefine.
* tests/types.at: New.
Exercise all the C/C++ skeletons with different types of
api.value.type values.
* tests/local.mk, tests/testsuite.at: Use it.
* doc/bison.texi (%define Summary): Document api.value.type.
* NEWS: Advertise it, together with api.token.constructor.
Akim Demaille [Mon, 8 Apr 2013 18:37:09 +0000 (20:37 +0200)]
m4: allow the definition of side-effect only macros
* data/bison.m4 (b4_divert_kill, b4_define_silent): New.
* data/c.m4: Comment change.
Akim Demaille [Mon, 8 Apr 2013 18:22:04 +0000 (20:22 +0200)]
variant: fix inconsistent quotation
* data/variant.hh (b4_char_sizeof): De-overquote.
(b4_value_type_declare): De-underquote.
Akim Demaille [Fri, 5 Apr 2013 12:00:49 +0000 (14:00 +0200)]
m4: style changes in error messages
* data/bison.m4: Use $0 to denote the current macro's name.
Akim Demaille [Mon, 8 Apr 2013 17:52:16 +0000 (19:52 +0200)]
glr.cc: fix a clang warning
* data/glr.cc (b4_epilogue): Be sure to end with an end-of-line,
so that the file does end with one.
Akim Demaille [Mon, 8 Apr 2013 11:43:32 +0000 (13:43 +0200)]
maint: update copyright years
Run "make update-copyright".
Akim Demaille [Sat, 12 Jan 2013 15:03:15 +0000 (16:03 +0100)]
build: fix VPATH issue
* Makefile.am (update-b4-copyright, update-package-copyright-year): Fix
path to build-aux.
(cherry picked from commit
f6df83b4e80b2a53c08b5dc654e247076a3b9b03)
Conflicts:
Makefile.am
Akim Demaille [Wed, 30 Jan 2013 14:52:34 +0000 (15:52 +0100)]
build: avoid clang's colored diagnostics in the test suite
The syncline tests, which try to recognize compiler diagnostics,
are confused by escapes for colors.
* configure.ac (warn_tests): New, to factor the warnings for both
C and C++ tests.
Add -fno-color-diagnostics to it.
* tests/local.at (AT_TEST_TABLES_AND_PARSE): Do not remove glue
together compiler flags.
Conflicts:
configure.ac
Akim Demaille [Mon, 28 Jan 2013 15:50:50 +0000 (16:50 +0100)]
tests: please clang and use ".cc", not ".c", for C++ input
When fed with foo.c, clang++ 3.2 answers:
clang: error: treating 'c' input as 'c++' when in C++ mode,
this behavior is deprecated
* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use *.cc and *.hh
for C++.
Akim Demaille [Mon, 8 Apr 2013 09:19:09 +0000 (11:19 +0200)]
gnulib: update
Akim Demaille [Mon, 8 Apr 2013 09:13:22 +0000 (11:13 +0200)]
skeletons: avoid empty switch constructs
Reported by Rob Conde.
http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html
* data/c.m4 (b4_symbol_actions): Rename as...
(_b4_symbol_actions): this.
(b4_symbol_actions): New wrapper.
Do not emit empty switches.
Adjust all b4_symbol_actions callers.
Akim Demaille [Mon, 8 Apr 2013 08:54:12 +0000 (10:54 +0200)]
lalr1.cc: fix compiler warnings
Reported by Rob Conde.
http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html
* data/stack.hh (operator=, stack(const stack&)): Make this class
uncopyable, i.e., "undefine" these operators: make them private and
don't implement them.
(clear): New.
* data/lalr1.cc: Use it instead of an assignment.
(parser): Make this class uncopyable.
Akim Demaille [Mon, 8 Apr 2013 08:39:48 +0000 (10:39 +0200)]
yacc.c: do not use __attribute__ unprotected
Reported by Victor Khomenko.
http://lists.gnu.org/archive/html/bug-bison/2013-04/msg00001.html
* data/glr.c (YYUSE, __attribute__): Fuse their definition into...
* data/c.m4 (b4_attribute_define): this new macro.
* data/yacc.c, data/glr.c: Use it.
Akim Demaille [Thu, 4 Apr 2013 15:27:36 +0000 (17:27 +0200)]
api.namespace: demonstrate and use {...} values instead of "..." values
* tests/c++.at, tests/input.at: Use "%define api.namespace {foo}" instead
of using quotes.
* tests/local.at (AT_SETUP_STRIP, AT_NAME_PREFIX): Recognize uses of
braces instead of quotes.
* doc/bison.texi: Use braces for api.namespace's values.
Akim Demaille [Thu, 4 Apr 2013 15:21:55 +0000 (17:21 +0200)]
grammar: do not add a \n at the end of blocks of code
Now that we use "braceless" (which is {...} blocks of code with
initial and final braces stripped) to denote "short" values (such as
api.namespaces), the added end-of-line is a nuisance. As a matter of
fact, this extra-safety was useless, as every expansion of "braceless"
(aka, "user code") is followed by an end of line.
* src/parse-gram.y, src/parse-gram.c (braceless): Instead of replacing
the final brace by \n, just delete the brace.
Akim Demaille [Thu, 4 Apr 2013 14:50:30 +0000 (16:50 +0200)]
regen