diff --git a/.prev-version b/.prev-version index b0f2dcb3..eca690e7 100644 --- a/.prev-version +++ b/.prev-version @@ -1 +1 @@ -3.0.4 +3.0.5 diff --git a/AUTHORS b/AUTHORS index 8ba23355..b0ddb150 100644 --- a/AUTHORS +++ b/AUTHORS @@ -24,7 +24,7 @@ and nasty bugs. ----- -Copyright (C) 1998-2015 Free Software Foundation, Inc. +Copyright (C) 1998-2015, 2018 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. diff --git a/ChangeLog-2012 b/ChangeLog-2012 index abc1adb6..254f3d29 100644 --- a/ChangeLog-2012 +++ b/ChangeLog-2012 @@ -26733,8 +26733,8 @@ ----- - Copyright (C) 1987-1988, 1991-2015 Free Software Foundation, - Inc. + Copyright (C) 1987-1988, 1991-2015, 2018 Free Software + Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this diff --git a/Makefile.am b/Makefile.am index b6135cbd..d03a65b0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in. -# Copyright (C) 2001-2015 Free Software Foundation, Inc. +# Copyright (C) 2001-2015, 2018 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/NEWS b/NEWS index c45e6e07..dcfddbdc 100644 --- a/NEWS +++ b/NEWS @@ -45,6 +45,36 @@ GNU Bison NEWS input: '0' | exp ^^^ +* Noteworthy changes in release 3.0.5 (2018-05-27) [stable] + +** Bug fixes + +*** C++: Fix support of 'syntax_error' + + One incorrect 'inline' resulted in linking errors about the constructor of + the syntax_error exception. + +*** C++: Fix warnings + + GCC 7.3 (with -O1 or -O2 but not -O0 or -O3) issued null-dereference + warnings about yyformat being possibly null. It also warned about the + deprecated implicit definition of copy constructors when there's a + user-defined (copy) assignment operator. + +*** Location of errors + + In C++ parsers, out-of-bounds errors can happen when a rule with an empty + ride-hand side raises a syntax error. The behavior of the default parser + (yacc.c) in such a condition was undefined. + + Now all the parsers match the behavior of glr.c: @$ is used as the + location of the error. This handles gracefully rules with and without + rhs. + +*** Portability fixes in the test suite + + On some platforms, some Java and/or C++ tests were failing. + * Noteworthy changes in release 3.0.4 (2015-01-23) [stable] ** Bug fixes @@ -106,7 +136,7 @@ GNU Bison NEWS extracted from the documentation: - rpcalc - Reverse polish calculator, a simple introductory example. + Reverse Polish Calculator, a simple introductory example. - mfcalc Multi-function Calc, a calculator with memory and functions and located error messages. @@ -2793,7 +2823,7 @@ Output file does not redefine const for C++. ----- -Copyright (C) 1995-2015 Free Software Foundation, Inc. +Copyright (C) 1995-2015, 2018 Free Software Foundation, Inc. This file is part of Bison, the GNU Parser Generator. diff --git a/PACKAGING b/PACKAGING index 1110aa32..2abda4f2 100644 --- a/PACKAGING +++ b/PACKAGING @@ -36,7 +36,7 @@ to the bison package. ----- -Copyright (C) 2002, 2005, 2009-2015 Free Software Foundation, Inc. +Copyright (C) 2002, 2005, 2009-2015, 2018 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. diff --git a/README b/README index 9cdf33d3..7ec93e49 100644 --- a/README +++ b/README @@ -7,7 +7,7 @@ instructions. Bison requires GNU m4 1.4.6 or later. See: - ftp://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz + https://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz ** Internationalization Bison supports two catalogues: one for Bison itself (i.e., for the @@ -44,7 +44,7 @@ End: ----- -Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2015 Free Software +Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2015, 2018 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. diff --git a/README-alpha b/README-alpha index f0aa3c97..8c1742ce 100644 --- a/README-alpha +++ b/README-alpha @@ -12,7 +12,7 @@ the problems you encounter. ----- -Copyright (C) 2002, 2004, 2009-2015 Free Software Foundation, Inc. +Copyright (C) 2002, 2004, 2009-2015, 2018 Free Software Foundation, Inc. This file is part of GNU Bison. diff --git a/README-hacking b/README-hacking index 25e4ef34..fcc6102a 100644 --- a/README-hacking +++ b/README-hacking @@ -9,19 +9,19 @@ Everything related to the development of Bison is on Savannah: * Administrivia ** If you incorporate a change from somebody on the net: -First, if it is a large change, you must make sure they have signed -the appropriate paperwork. Second, be sure to add their name and -email address to THANKS. +First, if it is a large change, you must make sure they have signed the +appropriate paperwork. Second, be sure to add their name and email address +to THANKS. ** If a change fixes a test, mention the test in the commit message. ** Bug reports -If somebody reports a new bug, mention his name in the commit message -and in the test case you write. Put him into THANKS. +If somebody reports a new bug, mention his name in the commit message and in +the test case you write. Put him into THANKS. -The correct response to most actual bugs is to write a new test case -which demonstrates the bug. Then fix the bug, re-run the test suite, -and check everything in. +The correct response to most actual bugs is to write a new test case which +demonstrates the bug. Then fix the bug, re-run the test suite, and check +everything in. * Hacking @@ -30,17 +30,17 @@ and check everything in. Which include serious bug fixes, must be mentioned in NEWS. ** Translations -Only user visible strings are to be translated: error messages, bits -of the .output file etc. This excludes impossible error messages -(comparable to assert/abort), and all the --trace output which is -meant for the maintainers only. +Only user visible strings are to be translated: error messages, bits of the +.output file etc. This excludes impossible error messages (comparable to +assert/abort), and all the --trace output which is meant for the maintainers +only. ** Horizontal tabs Do not add horizontal tab characters to any file in Bison's repository except where required. For example, do not use tabs to format C code. -However, make files, ChangeLog, and some regular expressions require -tabs. Also, test cases might need to contain tabs to check that Bison -properly processes tabs in its input. +However, make files, ChangeLog, and some regular expressions require tabs. +Also, test cases might need to contain tabs to check that Bison properly +processes tabs in its input. * Working from the repository @@ -103,14 +103,16 @@ to perform the first checkout of the submodules, run $ git submodule update --init -Git submodule support is weak before versions 1.6 and later, upgrade Git if -your version is older. - The next step is to get other files needed to build, which are extracted from other source packages: $ ./bootstrap +Bootstrapping updates the submodules to the versions registered in the +top-level directory. To change gnulib, first check out the version you want +in `gnulib`, then commit this change in Bison's repository, and finally run +bootstrap. + If it fails with missing symbols (e.g., "error: possibly undefined macro: AC_PROG_GNU_M4"), you are likely to have forgotten the submodule initialization part. Otherwise, there you are! Just @@ -137,13 +139,12 @@ explicitly by the user. *** Updating Bison If you pull a newer version of a branch, say via "git pull", you might -import requests for updated submodules. A simple "git diff" will -reveal if the current version of the submodule (i.e., the actual -contents of the gnulib directory) and the current request from the -subscriber (i.e., the reference of the version of gnulib that the -Bison repository requests) differ. To upgrade the submodules (i.e., -to check out the version that is actually requested by the subscriber, -run "git submodule update". +import requests for updated submodules. A simple "git diff" will reveal if +the current version of the submodule (i.e., the actual contents of the +gnulib directory) and the current request from the subscriber (i.e., the +reference of the version of gnulib that the Bison repository requests) +differ. To upgrade the submodules (i.e., to check out the version that is +actually requested by the subscriber, run "git submodule update". $ git pull $ git submodule update @@ -167,8 +168,8 @@ Register your changes. $ git checkin ... -For a suggestion of what gnulib commit might be stable enough for a -formal release, see the ChangeLog in the latest gnulib snapshot at: +For a suggestion of what gnulib commit might be stable enough for a formal +release, see the ChangeLog in the latest gnulib snapshot at: http://erislabs.net/ianb/projects/gnulib/ @@ -178,9 +179,9 @@ The Autoconf files we use are currently: lib/m4sugar/m4sugar.m4 lib/m4sugar/foreach.m4 -These files don't change very often in Autoconf, so it should be -relatively straight-forward to examine the differences in order to -decide whether to update. +These files don't change very often in Autoconf, so it should be relatively +straight-forward to examine the differences in order to decide whether to +update. * Test suite @@ -243,102 +244,99 @@ suite. So currently, do not try to run valgrind on Mac OS X. Try to run the test suite with more severe conditions before a release: -- Configure the package with --enable-gcc-warnings, so that one checks - that 1. Bison compiles cleanly, 2. the parsers it produces compile - cleanly too. +- Configure the package with --enable-gcc-warnings, so that one checks that + 1. Bison compiles cleanly, 2. the parsers it produces compile cleanly too. -- Maybe build with -DGNULIB_POSIXCHECK, which suggests gnulib modules - that can fix portability issues. See if you really want to pay - attention to its warnings; there's no need to obey blindly to it +- Maybe build with -DGNULIB_POSIXCHECK, which suggests gnulib modules that + can fix portability issues. See if you really want to pay attention to + its warnings; there's no need to obey blindly to it (). -- Check with "make syntax-check" if there are issues diagnosed by - gnulib. +- Check with "make syntax-check" if there are issues diagnosed by gnulib. - run "make maintainer-check" which: - runs "valgrind -q bison" to run Bison under Valgrind. - runs the parsers under Valgrind. - runs the test suite with G++ as C compiler... -- run "make maintainer-push-check", which runs "make maintainer-check" - while activating the push implementation and its pull interface wrappers - in many test cases that were originally written to exercise only the - pull implementation. This makes certain the push implementation can - perform every task the pull implementation can. +- run "make maintainer-push-check", which runs "make maintainer-check" while + activating the push implementation and its pull interface wrappers in many + test cases that were originally written to exercise only the pull + implementation. This makes certain the push implementation can perform + every task the pull implementation can. -- run "make maintainer-xml-check", which runs "make maintainer-check" - while checking Bison's XML automaton report for every working grammar - passed to Bison in the test suite. The check just diffs the output of - Bison's included XSLT style sheets with the output of --report=all and - --graph. +- run "make maintainer-xml-check", which runs "make maintainer-check" while + checking Bison's XML automaton report for every working grammar passed to + Bison in the test suite. The check just diffs the output of Bison's + included XSLT style sheets with the output of --report=all and --graph. - running "make maintainer-release-check" takes care of running maintainer-check, maintainer-push-check and maintainer-xml-check. -- Change tests/atlocal/CFLAGS to add your preferred options. For - instance, "-traditional" to check that the parsers are K&R. Note - that it does not make sense for glr.c, which should be ANSI, but - currently is actually GNU C, nor for lalr1.cc. +- Change tests/atlocal/CFLAGS to add your preferred options. For instance, + "-traditional" to check that the parsers are K&R. Note that it does not + make sense for glr.c, which should be ANSI, but currently is actually GNU + C, nor for lalr1.cc. -- Test with a very recent version of GCC for both C and C++. Testing - with older versions that are still in use is nice too. +- Test with a very recent version of GCC for both C and C++. Testing with + older versions that are still in use is nice too. * Release Procedure -This section needs to be updated to take into account features from -gnulib. In particular, be sure to read README-release. +This section needs to be updated to take into account features from gnulib. +In particular, be sure to read README-release. ** Update the submodules. See above. ** Update maintainer tools, such as Autoconf. See above. ** Try to get the *.pot files to the Translation Project at least one -week before a stable release, to give them time to translate them. -Before generating the *.pot files, make sure that po/POTFILES.in and -runtime-po/POTFILES.in list all files with translatable strings. -This helps: grep -l '\<_(' * +week before a stable release, to give them time to translate them. Before +generating the *.pot files, make sure that po/POTFILES.in and +runtime-po/POTFILES.in list all files with translatable strings. This +helps: grep -l '\<_(' * ** Tests See above. ** Update the foreign files -Running "./bootstrap" in the top level should update them all for you. -This covers PO files too. Sometimes a PO file contains problems that -causes it to be rejected by recent Gettext releases; please report -these to the Translation Project. +Running "./bootstrap" in the top level should update them all for you. This +covers PO files too. Sometimes a PO file contains problems that causes it +to be rejected by recent Gettext releases; please report these to the +Translation Project. ** Update README -Make sure the information in README is current. Most notably, make sure -it recommends a version of GNU M4 that is compatible with the latest -Bison sources. +Make sure the information in README is current. Most notably, make sure it +recommends a version of GNU M4 that is compatible with the latest Bison +sources. ** Check copyright years. -We update years in copyright statements throughout Bison once at the -start of every year by running "make update-copyright". However, before -a release, it's good to verify that it's actually been run. Besides the -copyright statement for each Bison file, check the copyright statements -that the skeletons insert into generated parsers, and check all -occurrences of PACKAGE_COPYRIGHT_YEAR in configure.ac. +We update years in copyright statements throughout Bison once at the start +of every year by running "make update-copyright". However, before a +release, it's good to verify that it's actually been run. Besides the +copyright statement for each Bison file, check the copyright statements that +the skeletons insert into generated parsers, and check all occurrences of +PACKAGE_COPYRIGHT_YEAR in configure.ac. ** Update NEWS, commit and tag. -See do-release-commit-and-tag in README-release. For a while, we used -beta names such as "2.6_rc1". Now that we use gnulib in the release -procedure, we must use "2.5.90", which has the additional benefit of -being properly sorted in "git tag -l". +See do-release-commit-and-tag in README-release. For a while, we used beta +names such as "2.6_rc1". Now that we use gnulib in the release procedure, +we must use "2.5.90", which has the additional benefit of being properly +sorted in "git tag -l". ** make alpha, beta, or stable See README-release. ** Upload -There are two ways to upload the tarballs to the GNU servers: using -gnupload (from gnulib), or by hand. Obviously prefer the former. But -in either case, be sure to read the following paragraph. +There are two ways to upload the tarballs to the GNU servers: using gnupload +(from gnulib), or by hand. Obviously prefer the former. But in either +case, be sure to read the following paragraph. *** Setup You need "gnupg". -Make sure your public key has been uploaded at least to -keys.gnupg.net. You can upload it with: +Make sure your public key has been uploaded at least to keys.gnupg.net. You +can upload it with: gpg --keyserver keys.gnupg.net --send-keys F125BDF3 @@ -347,8 +345,8 @@ where F125BDF3 should be replaced with your key ID. *** Using gnupload You need "ncftp". -At the end "make stable" (or alpha/beta) will display the procedure to -run. Just copy and paste it in your shell. +At the end "make stable" (or alpha/beta) will display the procedure to run. +Just copy and paste it in your shell. *** By hand @@ -410,9 +408,9 @@ sections that have been removed or renamed): $ ls -lt Remove these files and commit their removal to CVS. For each of these -files, add a line to the file .symlinks. This will ensure that -hyperlinks to the removed files will redirect to the entire manual; this -is better than a 404 error. +files, add a line to the file .symlinks. This will ensure that hyperlinks +to the removed files will redirect to the entire manual; this is better than +a 404 error. There is a problem with 'index.html' being written twice (once for POSIX function 'index', once for the table of contents); you can ignore this @@ -431,19 +429,18 @@ Complete/fix the announcement file. The generated list of recipients (info-gnu@gnu.org, bug-bison@gnu.org, help-bison@gnu.org, bison-patches@gnu.org, and coordinator@translationproject.org) is appropriate for a stable release or a "serious beta". For any other -release, drop at least info-gnu@gnu.org. For an example of how to -fill out the rest of the template, search the mailing list archives -for the most recent release announcement. +release, drop at least info-gnu@gnu.org. For an example of how to fill out +the rest of the template, search the mailing list archives for the most +recent release announcement. For a stable release, send the same announcement on the comp.compilers -newsgroup by sending email to compilers@iecc.com. Do not make any Cc as -the moderator will throw away anything cross-posted or Cc'ed. It really -needs to be a separate message. +newsgroup by sending email to compilers@iecc.com. Do not make any Cc as the +moderator will throw away anything cross-posted or Cc'ed. It really needs +to be a separate message. ** Prepare NEWS -So that developers don't accidentally add new items to the old NEWS -entry, create a new empty entry in line 3 (without the two leading -spaces): +So that developers don't accidentally add new items to the old NEWS entry, +create a new empty entry in line 3 (without the two leading spaces): * Noteworthy changes in release ?.? (????-??-??) [?] @@ -451,7 +448,7 @@ Push these changes. ----- -Copyright (C) 2002-2005, 2007-2015 Free Software Foundation, Inc. +Copyright (C) 2002-2005, 2007-2015, 2018 Free Software Foundation, Inc. This file is part of GNU Bison. diff --git a/THANKS b/THANKS index 26bea0a7..a5b29e96 100644 --- a/THANKS +++ b/THANKS @@ -15,6 +15,7 @@ Anthony Heading ajrh@ajrh.net Antonio Silva Correia amsilvacorreia@hotmail.com Arnold Robbins arnold@skeeve.com Art Haas ahaas@neosoft.com +Askar Safin safinaskar@mail.ru Baron Schwartz baron@sequent.org Ben Pfaff blp@cs.stanford.edu Benoit Perrot benoit.perrot@epita.fr @@ -39,6 +40,7 @@ Daniel Hagerty hag@gnu.org David J. MacKenzie djm@gnu.org David Kastrup dak@gnu.org Dennis Clarke dclarke@blastwave.org +Derek Clegg derek@me.com Derek M. Jones derek@knosof.co.uk Di-an Jan dianj@freeshell.org Dick Streefland dick.streefland@altium.nl @@ -48,6 +50,7 @@ Enrico Scholz enrico.scholz@informatik.tu-chemnitz.de Eric Blake ebb9@byu.net Evgeny Stambulchik fnevgeny@plasma-gate.weizmann.ac.il Fabrice Bauzac noon@cote-dazur.com +Ferdinand Thiessen ferdinand@fthiessen.de Florian Krohm florian@edamail.fishkill.ibm.com Frank Heckenbach frank@g-n-u.de Frans Englich frans.englich@telia.com @@ -58,7 +61,7 @@ Gilles Espinasse g.esp@free.fr Goran Uddeborg goeran@uddeborg.se Guido Trentalancia trentalg@aston.ac.uk H. Merijn Brand h.m.brand@hccnet.nl -Hans Aberg haberg@matematik.su.se +Hans Ã…berg haberg-1@telia.com Jan Nieuwenhuizen janneke@gnu.org Jerry Quinn jlquinn@optonline.net Jesse Thilo jthilo@gnu.org @@ -93,6 +96,7 @@ Michiel De Wilde mdewilde.agilent@gmail.com Mickael Labau labau_m@epita.fr Mike Castle dalgoda@ix.netcom.com Mike Sullivan Mike.sullivan@Oracle.COM +Nate Guerin nathan.guerin@riseup.net Neil Booth NeilB@earthling.net Nelson H. F. Beebe beebe@math.utah.edu Nick Bowler nbowler@elliptictech.com @@ -172,7 +176,7 @@ End: ----- -Copyright (C) 2000-2015 Free Software Foundation, Inc. +Copyright (C) 2000-2015, 2018 Free Software Foundation, Inc. This file is part of Bison, the GNU Parser Generator. diff --git a/TODO b/TODO index 7d4a5fb4..c25df084 100644 --- a/TODO +++ b/TODO @@ -369,7 +369,8 @@ End: ----- -Copyright (C) 2001-2004, 2006, 2008-2015 Free Software Foundation, Inc. +Copyright (C) 2001-2004, 2006, 2008-2015, 2018 Free Software Foundation, +Inc. This file is part of Bison, the GNU Compiler Compiler. diff --git a/bootstrap b/bootstrap index 2fdf2674..eddacfb6 100755 --- a/bootstrap +++ b/bootstrap @@ -1,10 +1,10 @@ #! /bin/sh # Print a version string. -scriptversion=2014-12-08.12; # UTC +scriptversion=2018-04-28.14; # UTC # Bootstrap this package from checked-out sources. -# Copyright (C) 2003-2015 Free Software Foundation, Inc. +# Copyright (C) 2003-2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ scriptversion=2014-12-08.12; # UTC # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # Originally written by Paul Eggert. The canonical version of this # script is maintained as build-aux/bootstrap in gnulib, however, to @@ -42,7 +42,7 @@ export LC_ALL local_gl_dir=gl -# Honour $PERL, but work even if there is none +# Honor $PERL, but work even if there is none. PERL="${PERL-perl}" me=$0 @@ -109,9 +109,6 @@ die() { warn_ "$@"; exit 1; } # Configuration. -# Name of the Makefile.am -gnulib_mk=gnulib.mk - # List of gnulib modules needed. gnulib_modules= @@ -141,7 +138,7 @@ po_download_command_format=\ # Fallback for downloading .po files (if rsync fails). po_download_command_format2=\ "wget --mirror -nd -q -np -A.po -P '%s' \ - http://translationproject.org/latest/%s/" + https://translationproject.org/latest/%s/" # Prefer a non-empty tarname (4th argument of AC_INIT if given), else # fall back to the package name (1st argument with munging) @@ -170,7 +167,15 @@ source_base=lib m4_base=m4 doc_base=doc tests_base=tests -gnulib_extra_files='' +gnulib_extra_files=" + build-aux/install-sh + build-aux/mdate-sh + build-aux/texinfo.tex + build-aux/depcomp + build-aux/config.guess + build-aux/config.sub + doc/INSTALL +" # Additional gnulib-tool options to use. Use "\newline" to break lines. gnulib_tool_option_extras= @@ -264,24 +269,18 @@ case "$0" in *) test -r "$0.conf" && . ./"$0.conf" ;; esac -# Extra files from gnulib, which override files from other sources. -test -z "${gnulib_extra_files}" && \ - gnulib_extra_files=" - build-aux/install-sh - build-aux/mdate-sh - build-aux/texinfo.tex - build-aux/depcomp - build-aux/config.guess - build-aux/config.sub - doc/INSTALL -" - if test "$vc_ignore" = auto; then vc_ignore= test -d .git && vc_ignore=.gitignore test -d CVS && vc_ignore="$vc_ignore .cvsignore" fi +if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then + use_gnulib=false +else + use_gnulib=true +fi + # Translate configuration into internal form. # Parse options. @@ -418,28 +417,30 @@ sort_ver() { # sort -V is not generally available done } +get_version_sed=' +# Move version to start of line. +s/.*[v ]\([0-9]\)/\1/ + +# Skip lines that do not start with version. +/^[0-9]/!d + +# Remove characters after the version. +s/[^.a-z0-9-].*// + +# The first component must be digits only. +s/^\([0-9]*\)[a-z-].*/\1/ + +#the following essentially does s/5.005/5.5/ +s/\.0*\([1-9]\)/.\1/g +p +q' + get_version() { app=$1 $app --version >/dev/null 2>&1 || { $app --version; return 1; } - $app --version 2>&1 | - sed -n '# Move version to start of line. - s/.*[v ]\([0-9]\)/\1/ - - # Skip lines that do not start with version. - /^[0-9]/!d - - # Remove characters after the version. - s/[^.a-z0-9-].*// - - # The first component must be digits only. - s/^\([0-9]*\)[a-z-].*/\1/ - - #the following essentially does s/5.005/5.5/ - s/\.0*\([1-9]\)/.\1/g - p - q' + $app --version 2>&1 | sed -n "$get_version_sed" } check_versions() { @@ -610,85 +611,87 @@ git_modules_config () { test -f .gitmodules && git config --file .gitmodules "$@" } -if $use_git; then - gnulib_path=$(git_modules_config submodule.gnulib.path) - test -z "$gnulib_path" && gnulib_path=gnulib -fi - -# Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a -# submodule, for use in the rest of the script. - -case ${GNULIB_SRCDIR--} in --) - # Note that $use_git is necessarily true in this case. - if git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - git submodule init -- "$gnulib_path" || exit $? - git submodule update -- "$gnulib_path" || exit $? - - elif [ ! -d "$gnulib_path" ]; then - echo "$0: getting gnulib files..." - - trap cleanup_gnulib 1 2 13 15 - - shallow= - git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' - git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" || - cleanup_gnulib - - trap - 1 2 13 15 +if $use_gnulib; then + if $use_git; then + gnulib_path=$(git_modules_config submodule.gnulib.path) + test -z "$gnulib_path" && gnulib_path=gnulib fi - GNULIB_SRCDIR=$gnulib_path - ;; -*) - # Use GNULIB_SRCDIR directly or as a reference. - if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ - git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - if git submodule -h|grep -- --reference > /dev/null; then - # Prefer the one-liner available in git 1.6.4 or newer. - git submodule update --init --reference "$GNULIB_SRCDIR" \ - "$gnulib_path" || exit $? - else - # This fallback allows at least git 1.5.5. - if test -f "$gnulib_path"/gnulib-tool; then - # Since file already exists, assume submodule init already complete. - git submodule update -- "$gnulib_path" || exit $? - else - # Older git can't clone into an empty directory. - rmdir "$gnulib_path" 2>/dev/null - git clone --reference "$GNULIB_SRCDIR" \ - "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ - && git submodule init -- "$gnulib_path" \ - && git submodule update -- "$gnulib_path" \ - || exit $? - fi + + # Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a + # submodule, for use in the rest of the script. + + case ${GNULIB_SRCDIR--} in + -) + # Note that $use_git is necessarily true in this case. + if git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + git submodule init -- "$gnulib_path" || exit $? + git submodule update -- "$gnulib_path" || exit $? + + elif [ ! -d "$gnulib_path" ]; then + echo "$0: getting gnulib files..." + + trap cleanup_gnulib 1 2 13 15 + + shallow= + git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' + git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" || + cleanup_gnulib + + trap - 1 2 13 15 fi GNULIB_SRCDIR=$gnulib_path + ;; + *) + # Use GNULIB_SRCDIR directly or as a reference. + if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ + git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + if git submodule -h|grep -- --reference > /dev/null; then + # Prefer the one-liner available in git 1.6.4 or newer. + git submodule update --init --reference "$GNULIB_SRCDIR" \ + "$gnulib_path" || exit $? + else + # This fallback allows at least git 1.5.5. + if test -f "$gnulib_path"/gnulib-tool; then + # Since file already exists, assume submodule init already complete. + git submodule update -- "$gnulib_path" || exit $? + else + # Older git can't clone into an empty directory. + rmdir "$gnulib_path" 2>/dev/null + git clone --reference "$GNULIB_SRCDIR" \ + "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ + && git submodule init -- "$gnulib_path" \ + && git submodule update -- "$gnulib_path" \ + || exit $? + fi + fi + GNULIB_SRCDIR=$gnulib_path + fi + ;; + esac + + # $GNULIB_SRCDIR now points to the version of gnulib to use, and + # we no longer need to use git or $gnulib_path below here. + + if $bootstrap_sync; then + cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { + echo "$0: updating bootstrap and restarting..." + case $(sh -c 'echo "$1"' -- a) in + a) ignored=--;; + *) ignored=ignored;; + esac + exec sh -c \ + 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ + $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ + "$0" "$@" --no-bootstrap-sync + } fi - ;; -esac -# $GNULIB_SRCDIR now points to the version of gnulib to use, and -# we no longer need to use git or $gnulib_path below here. - -if $bootstrap_sync; then - cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { - echo "$0: updating bootstrap and restarting..." - case $(sh -c 'echo "$1"' -- a) in - a) ignored=--;; - *) ignored=ignored;; - esac - exec sh -c \ - 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ - $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ - "$0" "$@" --no-bootstrap-sync - } + gnulib_tool=$GNULIB_SRCDIR/gnulib-tool + <$gnulib_tool || exit $? fi -gnulib_tool=$GNULIB_SRCDIR/gnulib-tool -<$gnulib_tool || exit $? - # Get translations. download_po_files() { @@ -697,7 +700,7 @@ download_po_files() { echo "$me: getting translations into $subdir for $domain..." cmd=$(printf "$po_download_command_format" "$domain" "$subdir") eval "$cmd" && return - # Fallback to HTTP. + # Fallback to HTTPS. cmd=$(printf "$po_download_command_format2" "$subdir" "$domain") eval "$cmd" } @@ -788,9 +791,9 @@ symlink_to_dir() # Leave any existing symlink alone, if it already points to the source, # so that broken build tools that care about symlink times # aren't confused into doing unnecessary builds. Conversely, if the - # existing symlink's time stamp is older than the source, make it afresh, + # existing symlink's timestamp is older than the source, make it afresh, # so that broken tools aren't confused into skipping needed builds. See - # . + # . test -h "$dst" && src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 && dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 && @@ -896,31 +899,33 @@ fi # Import from gnulib. -gnulib_tool_options="\ - --import\ - --no-changelog\ - --aux-dir $build_aux\ - --doc-base $doc_base\ - --lib $gnulib_name\ - --m4-base $m4_base/\ - --source-base $source_base/\ - --tests-base $tests_base\ - --local-dir $local_gl_dir\ - $gnulib_tool_option_extras\ -" -if test $use_libtool = 1; then - case "$gnulib_tool_options " in - *' --libtool '*) ;; - *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; - esac -fi -echo "$0: $gnulib_tool $gnulib_tool_options --import ..." -$gnulib_tool $gnulib_tool_options --import $gnulib_modules && +if $use_gnulib; then + gnulib_tool_options="\ + --no-changelog\ + --aux-dir $build_aux\ + --doc-base $doc_base\ + --lib $gnulib_name\ + --m4-base $m4_base/\ + --source-base $source_base/\ + --tests-base $tests_base\ + --local-dir $local_gl_dir\ + $gnulib_tool_option_extras\ + " + if test $use_libtool = 1; then + case "$gnulib_tool_options " in + *' --libtool '*) ;; + *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; + esac + fi + echo "$0: $gnulib_tool $gnulib_tool_options --import ..." + $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ + || die "gnulib-tool failed" -for file in $gnulib_files; do - symlink_to_dir "$GNULIB_SRCDIR" $file \ - || die "failed to symlink $file" -done + for file in $gnulib_files; do + symlink_to_dir "$GNULIB_SRCDIR" $file \ + || die "failed to symlink $file" + done +fi bootstrap_post_import_hook \ || die "bootstrap_post_import_hook failed" @@ -1017,9 +1022,9 @@ bootstrap_epilogue echo "$0: done. Now you can run './configure'." # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/bootstrap.conf b/bootstrap.conf index 6a5c9ae5..3e900b33 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -1,6 +1,6 @@ # Bootstrap configuration. -# Copyright (C) 2006-2015 Free Software Foundation, Inc. +# Copyright (C) 2006-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -81,7 +81,7 @@ gnulib_tool_option_extras='--symlink --makefile-name=gnulib.mk' bootstrap_post_import_hook() { # Massage lib/gnulib.mk before using it later in the bootstrapping process. - build-aux/prefix-gnulib-mk --lib-name=$gnulib_name lib/$gnulib_mk + build-aux/prefix-gnulib-mk --lib-name=$gnulib_name lib/gnulib.mk # Ensure that ChangeLog exists, for automake. test -f ChangeLog || touch ChangeLog diff --git a/build-aux/.gitignore b/build-aux/.gitignore index 2c8b6fe1..0d8a2b30 100644 --- a/build-aux/.gitignore +++ b/build-aux/.gitignore @@ -1,6 +1,4 @@ /announce-gen -/arg-nonnull.h -/c++defs.h /compile /config.guess /config.rpath @@ -16,14 +14,12 @@ /install-sh /javacomp.sh.in /javaexec.sh.in -/link-warning.h /mdate-sh /missing +/prefix-gnulib-mk /test-driver /texinfo.tex /update-copyright /useless-if-before-free /vc-list-files -/warn-on-use.h /ylwrap -/prefix-gnulib-mk diff --git a/build-aux/darwin11.4.0.valgrind b/build-aux/Darwin.valgrind similarity index 95% rename from build-aux/darwin11.4.0.valgrind rename to build-aux/Darwin.valgrind index 9b0b06f3..ba9b9494 100644 --- a/build-aux/darwin11.4.0.valgrind +++ b/build-aux/Darwin.valgrind @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2015 Free Software Foundation, Inc. +# Copyright (C) 2012-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/Linux.valgrind b/build-aux/Linux.valgrind new file mode 100644 index 00000000..a40719fb --- /dev/null +++ b/build-aux/Linux.valgrind @@ -0,0 +1,48 @@ +# Copyright (C) 2012-2015, 2018 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Valgrind suppression file for Bison. + +# Linux prague 4.1.2-2-ARCH #1 SMP PREEMPT Wed Jul 15 08:30:32 UTC 2015 +# x86_64 GNU/Linux +{ + Probably exception handling from G++ 5.1. + Memcheck:Leak + match-leak-kinds: reachable + fun:malloc + fun:pool + fun:__static_initialization_and_destruction_0 + fun:_GLOBAL__sub_I_eh_alloc.cc + fun:call_init.part.0 + fun:_dl_init + obj:/usr/lib/ld-2.21.so +} + +# Linux seattle 2.6.32-5-amd64 #1 SMP Thu Mar 22 17:26:33 UTC 2012 +# x86_64 GNU/Linux +{ + index + Memcheck:Cond + fun:index + fun:expand_dynamic_string_token + fun:_dl_map_object + fun:map_doit + fun:_dl_catch_error + fun:do_preload + fun:dl_main + fun:_dl_sysdep_start + fun:_dl_start + obj:/lib/ld-2.11.3.so +} diff --git a/build-aux/linux-gnu.valgrind b/build-aux/linux-gnu.valgrind deleted file mode 100644 index 3130fbc0..00000000 --- a/build-aux/linux-gnu.valgrind +++ /dev/null @@ -1,16 +0,0 @@ -# Linux seattle 2.6.32-5-amd64 #1 SMP Thu Mar 22 17:26:33 UTC 2012 -# x86_64 GNU/Linux -{ - index - Memcheck:Cond - fun:index - fun:expand_dynamic_string_token - fun:_dl_map_object - fun:map_doit - fun:_dl_catch_error - fun:do_preload - fun:dl_main - fun:_dl_sysdep_start - fun:_dl_start - obj:/lib/ld-2.11.3.so -} diff --git a/build-aux/local.mk b/build-aux/local.mk index 7d752c86..70a900ff 100644 --- a/build-aux/local.mk +++ b/build-aux/local.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2015 Free Software Foundation, Inc. +# Copyright (C) 2000-2015, 2018 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,10 +13,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -EXTRA_DIST += \ - build-aux/cross-options.pl \ - build-aux/darwin11.4.0.valgrind \ - build-aux/linux-gnu.valgrind \ - build-aux/move-if-change \ - build-aux/prev-version.txt \ +EXTRA_DIST += \ + build-aux/Darwin.valgrind \ + build-aux/Linux.valgrind \ + build-aux/cross-options.pl \ + build-aux/move-if-change \ + build-aux/prev-version.txt \ build-aux/update-b4-copyright diff --git a/build-aux/snippet/.gitignore b/build-aux/snippet/.gitignore deleted file mode 100644 index 2a3a2f91..00000000 --- a/build-aux/snippet/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/_Noreturn.h -/arg-nonnull.h -/c++defs.h -/warn-on-use.h diff --git a/build-aux/update-b4-copyright b/build-aux/update-b4-copyright index 901ff05b..8946378a 100755 --- a/build-aux/update-b4-copyright +++ b/build-aux/update-b4-copyright @@ -3,7 +3,7 @@ # Update b4_copyright invocations or b4_copyright_years definitions to # include the current year. -# Copyright (C) 2009-2015 Free Software Foundation, Inc. +# Copyright (C) 2009-2015, 2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/build-aux/update-package-copyright-year b/build-aux/update-package-copyright-year index f2adedf7..da9ac3a1 100755 --- a/build-aux/update-package-copyright-year +++ b/build-aux/update-package-copyright-year @@ -2,7 +2,7 @@ # In configure.ac, update PACKAGE_COPYRIGHT_YEAR to the current year. -# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# Copyright (C) 2010-2015, 2018 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/cfg.mk b/cfg.mk index 7d0fe9a5..ce023732 100644 --- a/cfg.mk +++ b/cfg.mk @@ -1,5 +1,5 @@ # Customize maint.mk -*- makefile -*- -# Copyright (C) 2008-2015 Free Software Foundation, Inc. +# Copyright (C) 2008-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ _is-dist-target = $(filter-out %clean maintainer-check% maintainer-%-check, \ $(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS))) url_dir_list = \ - ftp://$(gnu_rel_host)/gnu/bison + https://$(gnu_rel_host)/gnu/bison # Tests not to run as part of "make distcheck". local-checks-to-skip = \ @@ -158,23 +158,24 @@ sc_space_before_open_paren: exclude = \ $(foreach a,$(1),$(eval $(subst $$,$$$$,exclude_file_name_regexp--sc_$(a)))) -$(call exclude, \ - bindtextdomain=^lib/main.c$$ \ - preprocessor_indentation=^data/|^lib/|^src/parse-gram.[ch]$$ \ - program_name=^lib/main.c$$ \ - prohibit_always-defined_macros=^data/yacc.c$$|^djgpp/ \ - prohibit_always-defined_macros+=?|^lib/timevar.c$$ \ - prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \ - prohibit_always-defined_macros+=?|^tests/regression.at$$ \ - prohibit_always_true_header_tests=^djgpp/subpipe.h$$|^lib/timevar.c$$ \ - prohibit_always_true_header_tests+=?|^m4/timevar.m4$$ \ - prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \ +$(call exclude, \ + bindtextdomain=^lib/main.c$$ \ + preprocessor_indentation=^data/|^lib/|^src/parse-gram.[ch]$$ \ + program_name=^lib/main.c$$ \ + prohibit_always-defined_macros=^data/yacc.c$$|^djgpp/ \ + prohibit_always-defined_macros+=?|^lib/timevar.c$$ \ + prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \ + prohibit_always-defined_macros+=?|^tests/regression.at$$ \ + prohibit_always_true_header_tests=^djgpp/subpipe.h$$|^lib/timevar.c$$ \ + prohibit_always_true_header_tests+=?|^m4/timevar.m4$$ \ + prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \ prohibit_doubled_word=^tests/named-refs.at$$ \ - prohibit_magic_number_exit=^doc/bison.texi$$ \ - prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \ - prohibit_strcmp=^doc/bison\.texi|tests/local\.at$$ \ - prohibit_tab_based_indentation=\.(am|mk)$$|^djgpp/|^\.git \ - require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$ \ + prohibit_magic_number_exit=^doc/bison.texi$$ \ + prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \ + prohibit_strcmp=^doc/bison\.texi|tests/local\.at$$ \ + prohibit_tab_based_indentation=\.(am|mk)$$|^djgpp/|^\.git \ + require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$ \ space_before_open_paren=^(data/|djgpp/) \ - unmarked_diagnostics=^(djgpp/|doc/bison.texi$$|tests/c\+\+\.at$$) \ + two_space_separator_in_usage=^(bootstrap) \ + unmarked_diagnostics=^(djgpp/|doc/bison.texi$$|tests/c\+\+\.at$$) \ ) diff --git a/configure.ac b/configure.ac index 6f200400..99f6ad43 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # Configure template for GNU Bison. -*-Autoconf-*- # -# Copyright (C) 2001-2015 Free Software Foundation, Inc. +# Copyright (C) 2001-2015, 2018 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ m4_pattern_forbid([^gl_[A-Z]]) AC_INIT([GNU Bison], m4_esyscmd([build-aux/git-version-gen .tarball-version]), [bug-bison@gnu.org]) -AC_SUBST([PACKAGE_COPYRIGHT_YEAR], [2015]) +AC_SUBST([PACKAGE_COPYRIGHT_YEAR], [2018]) AC_DEFINE_UNQUOTED([PACKAGE_COPYRIGHT_YEAR], [$PACKAGE_COPYRIGHT_YEAR], [The copyright year for this package]) @@ -82,7 +82,7 @@ AC_ARG_ENABLE([gcc-warnings], AM_CONDITIONAL([ENABLE_GCC_WARNINGS], [test "$enable_gcc_warnings" = yes]) if test "$enable_gcc_warnings" = yes; then warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align -Wdocumentation - -Wformat -Wpointer-arith -Wwrite-strings' + -Wformat -Wnull-dereference -Wpointer-arith -Wwrite-strings' warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes' warn_cxx='-Wnoexcept' # Warnings for the test suite only. @@ -90,7 +90,12 @@ if test "$enable_gcc_warnings" = yes; then # -fno-color-diagnostics: Clang's use of colors in the error # messages is confusing the tests looking at the compiler's output # (e.g., synclines.at). - warn_tests='-Wundef -pedantic -Wsign-compare -fno-color-diagnostics' + # + # -Wno-keyword-macro: We use the "#define private public" dirty + # trick in the test suite to check some private implementation + # details for lalr1.cc. + warn_tests='-Wundef -pedantic -Wdeprecated -Wsign-compare -fno-color-diagnostics + -Wno-keyword-macro' AC_LANG_PUSH([C]) # Clang supports many of GCC's -W options, but only issues warnings @@ -220,20 +225,21 @@ AC_CONFIG_FILES([etc/bench.pl], [chmod +x etc/bench.pl]) AC_CONFIG_TESTDIR(tests) AC_CONFIG_FILES([tests/atlocal]) AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison]) + AC_CHECK_PROGS([VALGRIND], [valgrind]) -case $VALGRIND:$host_os in +# Use something simpler that $host_os to select our suppression file. +uname=`uname` +case $VALGRIND:$uname in '':*) ;; - *:darwin*) + *:Darwin) # See README-hacking. - # VALGRIND+='-q --suppressions=$(abs_top_srcdir)/build-aux/darwin11.4.0.valgrind' VALGRIND=;; *:*) - suppfile=build-aux/$host_os.valgrind + suppfile=build-aux/$uname.valgrind if test -f "$srcdir/$suppfile"; then - VALGRIND="$VALGRIND --gen-suppressions=all" - VALGRIND="$VALGRIND --suppressions=\$(abs_top_srcdir)/$suppfile" + AC_SUBST([VALGRIND_OPTS_SUPPRESSION], + ["--suppressions=\$(abs_top_srcdir)/$suppfile"]) fi - AC_SUBST([VALGRIND_PREBISON], ["$VALGRIND -q"]) ;; esac diff --git a/data/README b/data/README index 4b3e5561..629599cc 100644 --- a/data/README +++ b/data/README @@ -52,7 +52,7 @@ into various formats. ----- -Copyright (C) 2002, 2008-2015 Free Software Foundation, Inc. +Copyright (C) 2002, 2008-2015, 2018 Free Software Foundation, Inc. This file is part of GNU Bison. diff --git a/data/bison.m4 b/data/bison.m4 index 2000d0f6..42bb67b8 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -2,7 +2,7 @@ # Language-independent M4 Macros for Bison. -# Copyright (C) 2002, 2004-2015 Free Software Foundation, Inc. +# Copyright (C) 2002, 2004-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/c++-skel.m4 b/data/c++-skel.m4 index 9117262c..3cd56789 100644 --- a/data/c++-skel.m4 +++ b/data/c++-skel.m4 @@ -2,7 +2,8 @@ # C++ skeleton dispatching for Bison. -# Copyright (C) 2006-2007, 2009-2015 Free Software Foundation, Inc. +# Copyright (C) 2006-2007, 2009-2015, 2018 Free Software Foundation, +# Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/c++.m4 b/data/c++.m4 index d176e1a2..2d2a5957 100644 --- a/data/c++.m4 +++ b/data/c++.m4 @@ -2,7 +2,7 @@ # C++ skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -30,6 +30,16 @@ m4_include(b4_pkgdatadir/[c.m4]) m4_define([b4_comment], [b4_comment_([$1], [$2// ], [$2// ])]) +# b4_inline(hh|cc) +# ---------------- +# Expand to `inline\n ` if $1 is hh. +m4_define([b4_inline], +[m4_case([$1], + [cc], [], + [hh], [[inline + ]], + [m4_fatal([$0: invalid argument: $1])])]) + ## -------- ## ## Checks. ## ## -------- ## @@ -275,25 +285,22 @@ m4_define([b4_public_types_declare], ]b4_symbol_constructor_declare]) -# b4_public_types_define -# ---------------------- +# b4_public_types_define(hh|cc) +# ----------------------------- # Provide the implementation needed by the public types. m4_define([b4_public_types_define], -[[ inline - ]b4_parser_class_name[::syntax_error::syntax_error (]b4_locations_if([const location_type& l, ])[const std::string& m) +[ b4_inline([$1])b4_parser_class_name[::syntax_error::syntax_error (]b4_locations_if([const location_type& l, ])[const std::string& m) : std::runtime_error (m)]b4_locations_if([ , location (l)])[ {} // basic_symbol. template - inline ]b4_parser_class_name[::basic_symbol::basic_symbol () : value () {} template - inline ]b4_parser_class_name[::basic_symbol::basic_symbol (const basic_symbol& other) : Base (other) , value ()]b4_locations_if([ @@ -304,9 +311,7 @@ m4_define([b4_public_types_define], [value = other.value;])[ } - template - inline ]b4_parser_class_name[::basic_symbol::basic_symbol (]b4_join( [typename Base::kind_type t], [const semantic_type& v], @@ -323,7 +328,6 @@ m4_define([b4_public_types_define], ]b4_type_foreach([b4_basic_symbol_constructor_define])], [[ /// Constructor for valueless symbols. template - inline ]b4_parser_class_name[::basic_symbol::basic_symbol (]b4_join( [typename Base::kind_type t], b4_locations_if([const location_type& l]))[) @@ -333,14 +337,12 @@ m4_define([b4_public_types_define], {}]])[ template - inline ]b4_parser_class_name[::basic_symbol::~basic_symbol () { clear (); } template - inline void ]b4_parser_class_name[::basic_symbol::clear () {]b4_variant_if([[ @@ -361,7 +363,6 @@ m4_define([b4_public_types_define], } template - inline bool ]b4_parser_class_name[::basic_symbol::empty () const { @@ -369,11 +370,10 @@ m4_define([b4_public_types_define], } template - inline void ]b4_parser_class_name[::basic_symbol::move (basic_symbol& s) { - super_type::move(s); + super_type::move (s); ]b4_variant_if([b4_symbol_variant([this->type_get ()], [value], [move], [s.value])], [value = s.value;])[]b4_locations_if([ @@ -381,45 +381,38 @@ m4_define([b4_public_types_define], } // by_type. - inline - ]b4_parser_class_name[::by_type::by_type () + ]b4_inline([$1])b4_parser_class_name[::by_type::by_type () : type (empty_symbol) {} - inline - ]b4_parser_class_name[::by_type::by_type (const by_type& other) + ]b4_inline([$1])b4_parser_class_name[::by_type::by_type (const by_type& other) : type (other.type) {} - inline - ]b4_parser_class_name[::by_type::by_type (token_type t) + ]b4_inline([$1])b4_parser_class_name[::by_type::by_type (token_type t) : type (yytranslate_ (t)) {} - inline - void + ]b4_inline([$1])[void ]b4_parser_class_name[::by_type::clear () { type = empty_symbol; } - inline - void + ]b4_inline([$1])[void ]b4_parser_class_name[::by_type::move (by_type& that) { type = that.type; that.clear (); } - inline - int + ]b4_inline([$1])[int ]b4_parser_class_name[::by_type::type_get () const { return type; } ]b4_token_ctor_if([[ - inline - ]b4_parser_class_name[::token_type + ]b4_inline([$1])b4_parser_class_name[::token_type ]b4_parser_class_name[::by_type::token () const { // YYTOKNUM[NUM] -- (External) token number corresponding to the @@ -445,14 +438,13 @@ m4_define([b4_symbol_constructor_declare], []) m4_define([b4_symbol_constructor_define], []) -# b4_yytranslate_define -# --------------------- -# Define yytranslate_. Sometimes used in the header file, +# b4_yytranslate_define(cc|hh) +# ---------------------------- +# Define yytranslate_. Sometimes used in the header file ($1=hh), # sometimes in the cc file. m4_define([b4_yytranslate_define], [[ // Symbol number corresponding to token number t. - inline - ]b4_parser_class_name[::token_number_type + ]b4_inline([$1])b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yytranslate_ (]b4_token_ctor_if([token_type], [int])[ t) { @@ -462,12 +454,12 @@ m4_define([b4_yytranslate_define], { ]b4_translate[ }; - const unsigned int user_token_number_max_ = ]b4_user_token_number_max[; + const unsigned user_token_number_max_ = ]b4_user_token_number_max[; const token_number_type undef_token_ = ]b4_undef_token_number[; - if (static_cast(t) <= yyeof_) + if (static_cast (t) <= yyeof_) return yyeof_; - else if (static_cast (t) <= user_token_number_max_) + else if (static_cast (t) <= user_token_number_max_) return translate_table[t]; else return undef_token_; diff --git a/data/c-like.m4 b/data/c-like.m4 index ff648a7d..26bab42e 100644 --- a/data/c-like.m4 +++ b/data/c-like.m4 @@ -2,7 +2,7 @@ # Common code for C-like languages (C, C++, Java, etc.) -# Copyright (C) 2012-2015 Free Software Foundation, Inc. +# Copyright (C) 2012-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/c-skel.m4 b/data/c-skel.m4 index 51fad177..cb9a7a21 100644 --- a/data/c-skel.m4 +++ b/data/c-skel.m4 @@ -2,7 +2,8 @@ # C skeleton dispatching for Bison. -# Copyright (C) 2006-2007, 2009-2015 Free Software Foundation, Inc. +# Copyright (C) 2006-2007, 2009-2015, 2018 Free Software Foundation, +# Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/c.m4 b/data/c.m4 index 738244d4..8607f55f 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -2,7 +2,7 @@ # C M4 Macros for Bison. -# Copyright (C) 2002, 2004-2015 Free Software Foundation, Inc. +# Copyright (C) 2002, 2004-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -459,7 +459,8 @@ b4_syncline([@oline@], [@ofile@]) # ------------------------------------ m4_define([b4_predicate_case], [ case $1: - if (! ($2)) YYERROR; + if (! ( +$2)) YYERROR; b4_syncline([@oline@], [@ofile@]) break;]) diff --git a/data/glr.c b/data/glr.c index 77fa23ac..cf902622 100644 --- a/data/glr.c +++ b/data/glr.c @@ -2,7 +2,7 @@ # GLR skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -198,7 +198,7 @@ m4_if(b4_skeleton, ["glr.c"], [b4_defines_if( [b4_output_begin([b4_spec_defines_file]) b4_copyright([Skeleton interface for Bison GLR parsers in C], - [2002-2015])[ + [2002-2015, 2018])[ ]b4_cpp_guard_open([b4_spec_defines_file])[ ]b4_shared_declarations[ @@ -213,7 +213,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C], b4_output_begin([b4_parser_file_name]) b4_copyright([Skeleton implementation for Bison GLR parsers in C], - [2002-2015])[ + [2002-2015, 2018])[ /* C GLR parser skeleton written by Paul Hilfinger. */ @@ -808,6 +808,7 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp, *yyvalp = yyval_default; else *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[ + /* Default location. */ YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen); yystackp->yyerror_range[1].yystate.yyloc = *yylocp; ]])[ @@ -2074,6 +2075,7 @@ yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[) case N: \ yyformat = S; \ break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -2294,8 +2296,8 @@ b4_dollar_popdef])[]dnl { yyrule = yydefaultAction (yystate); if (yyrule == 0) - { -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ + {]b4_locations_if([[ + yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ yyreportSyntaxError (&yystack]b4_user_args[); goto yyuser_error; } @@ -2334,8 +2336,8 @@ b4_dollar_popdef])[]dnl yystack.yyerrState -= 1; } else if (yyisErrorAction (yyaction)) - { -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ + {]b4_locations_if([[ + yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ yyreportSyntaxError (&yystack]b4_user_args[); goto yyuser_error; } @@ -2380,8 +2382,8 @@ b4_dollar_popdef])[]dnl if (yystack.yytops.yysize == 0) yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ + YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));]b4_locations_if([[ + yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ yyreportSyntaxError (&yystack]b4_user_args[); goto yyuser_error; } @@ -2462,9 +2464,9 @@ b4_dollar_popdef])[]dnl { while (yystates[yyk]) { - yyGLRState *yys = yystates[yyk]; -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] -)[ if (yys->yypred != YY_NULLPTR) + yyGLRState *yys = yystates[yyk];]b4_locations_if([[ + yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ + if (yys->yypred != YY_NULLPTR) yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); yystates[yyk] = yys->yypred; yystack.yynextFree -= 1; diff --git a/data/glr.cc b/data/glr.cc index fbb6de7b..2ce14bc0 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -1,6 +1,6 @@ # C++ GLR skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -177,7 +177,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl | Print this symbol. | `--------------------*/ - inline void + void ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, const semantic_type* yyvaluep]b4_locations_if([[, const location_type* yylocationp]])[) @@ -329,7 +329,7 @@ b4_percent_define_flag_if([[global_tokens_and_yystype]], b4_defines_if( [b4_output_begin([b4_spec_defines_file]) b4_copyright([Skeleton interface for Bison GLR parsers in C++], - [2002-2015])[ + [2002-2015, 2018])[ // C++ GLR parser skeleton written by Akim Demaille. diff --git a/data/java-skel.m4 b/data/java-skel.m4 index 9b5cb249..79c3f536 100644 --- a/data/java-skel.m4 +++ b/data/java-skel.m4 @@ -2,7 +2,7 @@ # Java skeleton dispatching for Bison. -# Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc. +# Copyright (C) 2007, 2009-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/java.m4 b/data/java.m4 index b319626a..5ac145c4 100644 --- a/data/java.m4 +++ b/data/java.m4 @@ -2,7 +2,7 @@ # Java language support for Bison -# Copyright (C) 2007-2015 Free Software Foundation, Inc. +# Copyright (C) 2007-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/data/lalr1.cc b/data/lalr1.cc index 3773257c..afebda55 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -1,6 +1,6 @@ # C++ skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -131,7 +131,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))])]) m4_pushdef([b4_copyright_years], - [2002-2015]) + [2002-2015, 2018]) m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])]) @@ -142,9 +142,9 @@ b4_bison_locations_if([# Backward compatibility. m4_include(b4_pkgdatadir/[stack.hh]) b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])]) -# b4_shared_declarations -# ---------------------- -# Declaration that might either go into the header (if --defines) +# b4_shared_declarations(hh|cc) +# ----------------------------- +# Declaration that might either go into the header (if --defines, $1 = hh) # or open coded in the parser body. m4_define([b4_shared_declarations], [b4_percent_code_get([[requires]])[ @@ -314,6 +314,8 @@ b4_location_define])])[ typedef basic_symbol super_type; /// Construct an empty symbol. stack_symbol_type (); + /// Copy construct. + stack_symbol_type (const stack_symbol_type& that); /// Steal the contents from \a sym to build this. stack_symbol_type (state_type s, symbol_type& sym); /// Assignment, needed by push_back. @@ -342,7 +344,7 @@ b4_location_define])])[ void yypush_ (const char* m, state_type s, symbol_type& sym); /// Pop \a n symbols the three stacks. - void yypop_ (unsigned int n = 1); + void yypop_ (unsigned n = 1); /// Constants. enum @@ -359,8 +361,8 @@ b4_location_define])])[ ]b4_parse_param_vars[ }; -]b4_token_ctor_if([b4_yytranslate_define -b4_public_types_define])[ +]b4_token_ctor_if([b4_yytranslate_define([$1])[ +]b4_public_types_define([$1])])[ ]b4_namespace_close[ ]b4_percent_define_flag_if([[global_tokens_and_yystype]], @@ -386,7 +388,7 @@ b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++]) // C++ LALR(1) parser skeleton written by Akim Demaille. ]b4_cpp_guard_open([b4_spec_defines_file])[ -]b4_shared_declarations[ +]b4_shared_declarations(hh)[ ]b4_cpp_guard_close([b4_spec_defines_file]) b4_output_end() ]) @@ -406,7 +408,7 @@ m4_if(b4_prefix, [yy], [], ]b4_null_define[ ]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]], - [b4_shared_declarations])[ + [b4_shared_declarations([cc])])[ // User implementation prologue. ]b4_user_post_prologue[ @@ -443,7 +445,7 @@ m4_if(b4_prefix, [yy], [], { \ *yycdebug_ << Title << ' '; \ yy_print_ (*yycdebug_, Symbol); \ - *yycdebug_ << std::endl; \ + *yycdebug_ << '\n'; \ } \ } while (false) @@ -462,9 +464,9 @@ m4_if(b4_prefix, [yy], [], #else // !]b4_api_PREFIX[DEBUG # define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) +# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol) +# define YY_REDUCE_PRINT(Rule) static_cast (0) +# define YY_STACK_PRINT() static_cast (0) #endif // !]b4_api_PREFIX[DEBUG @@ -533,27 +535,23 @@ m4_if(b4_prefix, [yy], [], | Symbol types. | `---------------*/ -]b4_token_ctor_if([], [b4_public_types_define])[ +]b4_token_ctor_if([], [b4_public_types_define([cc])])[ // by_state. - inline ]b4_parser_class_name[::by_state::by_state () : state (empty_state) {} - inline ]b4_parser_class_name[::by_state::by_state (const by_state& other) : state (other.state) {} - inline void ]b4_parser_class_name[::by_state::clear () { state = empty_state; } - inline void ]b4_parser_class_name[::by_state::move (by_state& that) { @@ -561,12 +559,10 @@ m4_if(b4_prefix, [yy], [], that.clear (); } - inline ]b4_parser_class_name[::by_state::by_state (state_type s) : state (s) {} - inline ]b4_parser_class_name[::symbol_number_type ]b4_parser_class_name[::by_state::type_get () const { @@ -576,12 +572,17 @@ m4_if(b4_prefix, [yy], [], return yystos_[state]; } - inline ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type () {} + ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) + : super_type (that.state]b4_locations_if([, that.location])[) + { + ]b4_variant_if([b4_symbol_variant([that.type_get ()], + [value], [copy], [that.value])], + [[value = that.value;]])[ + } - inline ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that) : super_type (s]b4_locations_if([, that.location])[) { @@ -592,7 +593,6 @@ m4_if(b4_prefix, [yy], [], that.type = empty_symbol; } - inline ]b4_parser_class_name[::stack_symbol_type& ]b4_parser_class_name[::stack_symbol_type::operator= (const stack_symbol_type& that) { @@ -606,7 +606,6 @@ m4_if(b4_prefix, [yy], [], template - inline void ]b4_parser_class_name[::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const { @@ -638,7 +637,6 @@ m4_if(b4_prefix, [yy], [], } #endif - inline void ]b4_parser_class_name[::yypush_ (const char* m, state_type s, symbol_type& sym) { @@ -646,7 +644,6 @@ m4_if(b4_prefix, [yy], [], yypush_ (m, t); } - inline void ]b4_parser_class_name[::yypush_ (const char* m, stack_symbol_type& s) { @@ -655,9 +652,8 @@ m4_if(b4_prefix, [yy], [], yystack_.push (s); } - inline void - ]b4_parser_class_name[::yypop_ (unsigned int n) + ]b4_parser_class_name[::yypop_ (unsigned n) { yystack_.pop (n); } @@ -689,7 +685,7 @@ m4_if(b4_prefix, [yy], [], } #endif // ]b4_api_PREFIX[DEBUG - inline ]b4_parser_class_name[::state_type + ]b4_parser_class_name[::state_type ]b4_parser_class_name[::yy_lr_goto_state_ (state_type yystate, int yysym) { int yyr = yypgoto_[yysym - yyntokens_] + yystate; @@ -699,13 +695,13 @@ m4_if(b4_prefix, [yy], [], return yydefgoto_[yysym - yyntokens_]; } - inline bool + bool ]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } - inline bool + bool ]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; @@ -736,7 +732,7 @@ m4_if(b4_prefix, [yy], [], // avoid gratuitous conflicts when merging into the master branch. try { - YYCDEBUG << "Starting parse" << std::endl; + YYCDEBUG << "Starting parse\n"; ]m4_ifdef([b4_initial_action], [ b4_dollar_pushdef([yyla.value], [], [yyla.location])dnl @@ -753,7 +749,7 @@ b4_dollar_popdef])[]dnl // A new symbol was pushed on the stack. yynewstate: - YYCDEBUG << "Entering state " << yystack_[0].state << std::endl; + YYCDEBUG << "Entering state " << yystack_[0].state << '\n'; // Accept? if (yystack_[0].state == yyfinal_) @@ -827,7 +823,7 @@ b4_dollar_popdef])[]dnl yylen = yyr2_[yyn]; { stack_symbol_type yylhs; - yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);]b4_variant_if([ + yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);]b4_variant_if([ /* Variants are always initialized to an empty instance of the correct type. The default '$$ = $1' action is NOT applied when using variants. */ @@ -844,10 +840,11 @@ b4_dollar_popdef])[]dnl yylhs.value = yystack_@{0@}.value;])[ ]b4_locations_if([dnl [ - // Compute the default @@$. + // Default location. { slice slice (yystack_, yylen); YYLLOC_DEFAULT (yylhs.location, slice, yylen); + yyerror_range[1].location = yylhs.location; }]])[ // Perform the reduction. @@ -918,8 +915,7 @@ b4_dollar_popdef])[]dnl YYERROR and the label yyerrorlab therefore never appears in user code. */ if (false) - goto yyerrorlab;]b4_locations_if([[ - yyerror_range[1].location = yystack_[yylen - 1].location;]])[ + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); @@ -993,8 +989,7 @@ b4_dollar_popdef])[]dnl } catch (...) { - YYCDEBUG << "Exception caught: cleaning lookahead and stack" - << std::endl; + YYCDEBUG << "Exception caught: cleaning lookahead and stack\n"; // Do not try to display the values of the reclaimed symbols, // as their printer might throw an exception. if (!yyla.empty ()) @@ -1013,7 +1008,7 @@ b4_dollar_popdef])[]dnl ]b4_parser_class_name[::error (const syntax_error& yyexc) { error (]b4_join(b4_locations_if([yyexc.location]), - [[yyexc.what()]])[); + [[yyexc.what ()]])[); } // Generate an error message. @@ -1091,12 +1086,13 @@ b4_error_verbose_if([state_type yystate, const symbol_type& yyla], case N: \ yyformat = S; \ break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); + default: // Avoid compiler warnings. + YYCASE_ (0, YY_("syntax error")); + YYCASE_ (1, YY_("syntax error, unexpected %s")); + YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } @@ -1144,18 +1140,18 @@ b4_error_verbose_if([state_type yystate, const symbol_type& yyla], i_end = yystack_.end (); i != i_end; ++i) *yycdebug_ << ' ' << i->state; - *yycdebug_ << std::endl; + *yycdebug_ << '\n'; } // Report on the debug stream that the rule \a yyrule is going to be reduced. void ]b4_parser_class_name[::yy_reduce_print_ (int yyrule) { - unsigned int yylno = yyrline_[yyrule]; + unsigned yylno = yyrline_[yyrule]; int yynrhs = yyr2_[yyrule]; // Print the symbols being reduced, and their result. *yycdebug_ << "Reducing stack by rule " << yyrule - 1 - << " (line " << yylno << "):" << std::endl; + << " (line " << yylno << "):\n"; // The symbols being reduced. for (int yyi = 0; yyi < yynrhs; yyi++) YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", @@ -1163,7 +1159,7 @@ b4_error_verbose_if([state_type yystate, const symbol_type& yyla], } #endif // ]b4_api_PREFIX[DEBUG -]b4_token_ctor_if([], [b4_yytranslate_define])[ +]b4_token_ctor_if([], [b4_yytranslate_define([cc])])[ ]b4_namespace_close[ ]b4_epilogue[]dnl b4_output_end() diff --git a/data/lalr1.java b/data/lalr1.java index 670ea013..7bf8e7fc 100644 --- a/data/lalr1.java +++ b/data/lalr1.java @@ -1,6 +1,6 @@ # Java skeleton for Bison -*- autoconf -*- -# Copyright (C) 2007-2015 Free Software Foundation, Inc. +# Copyright (C) 2007-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -84,7 +84,7 @@ m4_define([b4_define_state],[[ b4_output_begin([b4_parser_file_name]) b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java], - [2007-2015]) + [2007-2015, 2018]) b4_percent_define_ifdef([package], [package b4_percent_define_get([package]); ])[/* First part of user declarations. */ diff --git a/data/local.mk b/data/local.mk index 9b0b0680..ea097aab 100644 --- a/data/local.mk +++ b/data/local.mk @@ -1,4 +1,4 @@ -## Copyright (C) 2002, 2005-2015 Free Software Foundation, Inc. +## Copyright (C) 2002, 2005-2015, 2018 Free Software Foundation, Inc. ## This program is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by diff --git a/data/location.cc b/data/location.cc index 53fddd48..3cc949df 100644 --- a/data/location.cc +++ b/data/location.cc @@ -1,6 +1,6 @@ # C++ skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ # along with this program. If not, see . m4_pushdef([b4_copyright_years], - [2002-2015]) + [2002-2015, 2018]) # b4_position_define # ------------------ @@ -28,19 +28,18 @@ m4_define([b4_position_define], public:]m4_ifdef([b4_location_constructors], [[ /// Construct a position. explicit position (]b4_percent_define_get([[filename_type]])[* f = YY_NULLPTR, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) + unsigned l = ]b4_location_initial_line[u, + unsigned c = ]b4_location_initial_column[u) : filename (f) , line (l) , column (c) - { - } + {} ]])[ /// Initialization. void initialize (]b4_percent_define_get([[filename_type]])[* fn = YY_NULLPTR, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) + unsigned l = ]b4_location_initial_line[u, + unsigned c = ]b4_location_initial_column[u) { filename = fn; line = l; @@ -69,15 +68,15 @@ m4_define([b4_position_define], /// File name to which this position refers. ]b4_percent_define_get([[filename_type]])[* filename; /// Current line number. - unsigned int line; + unsigned line; /// Current column number. - unsigned int column; + unsigned column; private: /// Compute max(min, lhs+rhs) (provided min <= lhs). - static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min) + static unsigned add_ (unsigned lhs, int rhs, unsigned min) { - return (0 < rhs || -static_cast(rhs) < lhs + return (0 < rhs || -static_cast(rhs) < lhs ? rhs + lhs : min); } @@ -157,30 +156,27 @@ m4_define([b4_location_define], location (const position& b, const position& e) : begin (b) , end (e) - { - } + {} /// Construct a 0-width location in \a p. explicit location (const position& p = position ()) : begin (p) , end (p) - { - } + {} /// Construct a 0-width location in \a f, \a l, \a c. explicit location (]b4_percent_define_get([[filename_type]])[* f, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) + unsigned l = ]b4_location_initial_line[u, + unsigned c = ]b4_location_initial_column[u) : begin (f, l, c) , end (f, l, c) - { - } + {} ])[ /// Initialization. void initialize (]b4_percent_define_get([[filename_type]])[* f = YY_NULLPTR, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) + unsigned l = ]b4_location_initial_line[u, + unsigned c = ]b4_location_initial_column[u) { begin.initialize (f, l, c); end = begin; @@ -278,7 +274,7 @@ m4_define([b4_location_define], inline std::basic_ostream& operator<< (std::basic_ostream& ostr, const location& loc) { - unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; + unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; ostr << loc.begin; if (loc.end.filename && (!loc.begin.filename diff --git a/data/stack.hh b/data/stack.hh index a56e6c74..c79f0833 100644 --- a/data/stack.hh +++ b/data/stack.hh @@ -1,6 +1,6 @@ # C++ skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,12 +16,13 @@ # along with this program. If not, see . m4_pushdef([b4_copyright_years], - [2002-2015]) + [2002-2015, 2018]) # b4_stack_define # --------------- m4_define([b4_stack_define], -[[ template > +[[ /// A stack with random access from its top. + template > class stack { public: @@ -35,20 +36,24 @@ m4_define([b4_stack_define], seq_.reserve (200); } - stack (unsigned int n) + stack (unsigned n) : seq_ (n) {} - inline + /// Random access. + /// + /// Index 0 returns the topmost element. T& - operator[] (unsigned int i) + operator[] (unsigned i) { return seq_[seq_.size () - 1 - i]; } - inline + /// Random access. + /// + /// Index 0 returns the topmost element. const T& - operator[] (unsigned int i) const + operator[] (unsigned i) const { return seq_[seq_.size () - 1 - i]; } @@ -56,7 +61,6 @@ m4_define([b4_stack_define], /// Steal the contents of \a t. /// /// Close to move-semantics. - inline void push (T& t) { @@ -64,9 +68,8 @@ m4_define([b4_stack_define], operator[](0).move (t); } - inline void - pop (unsigned int n = 1) + pop (unsigned n = 1) { for (; n; --n) seq_.pop_back (); @@ -78,21 +81,18 @@ m4_define([b4_stack_define], seq_.clear (); } - inline typename S::size_type size () const { return seq_.size (); } - inline const_iterator begin () const { return seq_.rbegin (); } - inline const_iterator end () const { @@ -111,21 +111,20 @@ m4_define([b4_stack_define], class slice { public: - slice (const S& stack, unsigned int range) + slice (const S& stack, unsigned range) : stack_ (stack) , range_ (range) {} - inline const T& - operator [] (unsigned int i) const + operator [] (unsigned i) const { return stack_[range_ - i]; } private: const S& stack_; - unsigned int range_; + unsigned range_; }; ]]) diff --git a/data/variant.hh b/data/variant.hh index f918e34c..7a6fbfb9 100644 --- a/data/variant.hh +++ b/data/variant.hh @@ -1,6 +1,6 @@ # C++ skeleton for Bison -# Copyright (C) 2002-2015 Free Software Foundation, Inc. +# Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ m4_define([b4_symbol_variant], [m4_pushdef([b4_dollar_dollar], [$2.$3< $][3 > (m4_shift3($@))])dnl - switch ($1) +switch ($1) { b4_type_foreach([b4_type_action_])[]dnl default: diff --git a/data/xslt/bison.xsl b/data/xslt/bison.xsl index 9e60ad99..9f9132b9 100644 --- a/data/xslt/bison.xsl +++ b/data/xslt/bison.xsl @@ -3,7 +3,7 @@