| 2021-09-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.8.2 |
| * NEWS: Record release date. |
| |
| 2021-09-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: Apple clang issues warning on C++11 features |
| $ cat /tmp/foo.cc |
| using foo = int; |
| foo f; |
| $ clang++ -Wc++11-extensions -c /tmp/foo.cc |
| /tmp/foo.cc:1:13: warning: alias declarations are a C++11 extension [-Wc++11-extensions] |
| using foo = int; |
| ^ |
| 1 warning generated. |
| $ clang++ --version |
| Apple clang version 11.0.0 (clang-1100.0.33.17) |
| Target: x86_64-apple-darwin18.7.0 |
| Thread model: posix |
| InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin |
| |
| * tests/local.at (AT_COMPILE_CXX): Make sure -std=c++11 is passed when |
| running glr2.cc. It may be overridden by another flag in CXXFLAGS |
| afterwards. |
| |
| 2021-09-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| avoid using atoi |
| * cfg.mk: Disable sc_indent as auto indent is too invasive for now. |
| Enable sc_prohibit_atoi_atof, except where we don't care. |
| * src/location.c, src/muscle-tab.c: Use strtol instead of atoi. |
| |
| 2021-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2021-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| To get |
| |
| commit 7818455627c5e54813ac89924b8b67d0bc869146 |
| Author: Bruno Haible <bruno@clisp.org> |
| Date: Fri Sep 17 22:22:50 2021 +0200 |
| |
| threadlib: Avoid crashes in thread-related functions on Cygwin 3.2.0. |
| |
| Reported by Brian Inglis via Akim Demaille in |
| <https://lists.gnu.org/archive/html/bug-gnulib/2021-09/msg00063.html>. |
| |
| * m4/threadlib.m4 (gl_WEAK_SYMBOLS): Force a "guessing no" result on |
| Cygwin. |
| |
| 2021-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: use YY_NOEXCEPT where it helps |
| Suggested by Don Macpherson. |
| <https://github.com/akimd/bison/issues/80> |
| |
| * data/skeletons/c++.m4, data/skeletons/glr2.cc, |
| * data/skeletons/lalr1.cc, data/skeletons/stack.hh: Use YY_NOEXCEPT |
| where it helps constructors. |
| |
| 2021-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: semantic_option: use a symbol |
| * data/skeletons/c++.m4 (basic_symbol): Add assignment operators. |
| * data/skeletons/glr2.cc (semantic_option): Replace yytoken, yyvalue |
| and yylocation by yyla. |
| |
| 2021-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: don't publish move ctor to lalr1.cc |
| These operators were introduced in "c++: add move assignments to the |
| symbol type" (fdaedc780af0dd678a4f4fa3175a201a553be20a) for glr2.cc. |
| |
| * data/skeletons/c++.m4: Define them for glr2.cc only. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: simplify semantic_option |
| * data/skeletons/glr2.cc (semantic_option): Simplify the rule-based |
| constructor. This shows that it should be easy to use a symbol_kind, |
| instead of the kind/value/location triple. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: we require C++11 |
| * data/skeletons/glr2.cc: So no need for C++98 compatibility. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: introduse b4_glr2_cc_if |
| * data/skeletons/bison.m4 (b4_glr2_cc_if): Intro. |
| * data/skeletons/c++.m4: use. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: don't pass %parse-param to destroy |
| I regret that %destructor and %printer give access to the %parse-param |
| in lalr1.cc, since that prevents them from being implemented as a |
| simple destructor and operator<<. Let's not repeat the mistake in |
| glr2.cc. In addition, fixes a name conflict we have currently in |
| tests 566 568 570 657: |
| |
| calc.cc:1395:85: error: declaration shadows a field of 'calc::parser' [-Werror,-Wshadow] |
| void glr_state::destroy (char const* yymsg, calc::parser& yyparser, semantic_value *result, int *count, int *nerrs) |
| ^ |
| calc.hh:441:21: note: previous declaration is here |
| semantic_value *result; |
| ^ |
| |
| With this commit, the whole test suite passes for glr2.cc. |
| |
| * data/skeletons/glr2.cc (glr_state::destroy): Don't take the user |
| arguments. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: kill trailing white spaces |
| Fixes several calc tests. |
| |
| Tests 566 568 570 657 still fail because of a name clash when using |
| %parse-param: |
| |
| calc.cc:1395:85: error: declaration shadows a field of 'calc::parser' [-Werror,-Wshadow] |
| void glr_state::destroy (char const* yymsg, calc::parser& yyparser, semantic_value *result, int *count, int *nerrs) |
| ^ |
| calc.hh:441:21: note: previous declaration is here |
| semantic_value *result; |
| ^ |
| |
| * data/skeletons/glr2.cc: Fix indentation/trailing spaces. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: check linking conflicts |
| * tests/headers.at (Several Headers): Link two glr2.cc parsers. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: move strong_index_alias into the unnamed namespace |
| * data/skeletons/glr2.cc: here. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: use only symbol_kind_type, not yysymbol_kind_t |
| * data/skeletons/glr2.cc: here. |
| And prefer the unnamed namespace to static. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: prefer using, and remove useless type aliases |
| * data/skeletons/glr2.cc: here. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: put glr_state_set and glr_stack_item in unnamed namespace |
| * data/skeletons/glr2.cc: here. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: move state_stack into the unnamed namespace |
| * data/skeletons/glr2.cc: here. |
| Prefer `using` to `typedef`, this is C++11. |
| Use the type alias we introduced. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: style: clarify control flow |
| * data/skeletons/glr2.cc (yypreference): Be more functional-style. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: move glr_stack and glr_state into the parser class |
| In order to be able to link several glr2.cc parser together, we cannot |
| have glr_stack and glr_state be in no namespace. Putting them in the |
| unnamed namespace is not doable, since we need to fwd declare them in |
| the parser. Putting them in the specified namespace is not enough |
| either, since some users would like to be able to put several parsers |
| in the same name, only differing by the class name. |
| |
| * data/skeletons/glr2.cc (glr_state, glr_stack): Move into yy::parser. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: put create_state_set_index in unnamed namespace |
| * data/skeletons/glr2.cc: here. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: prefer unnamed namespace to 'static' |
| * data/skeletons/glr2.cc: here. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: put semantic_option into an unnamed namespace |
| If we link several glr2.cc parsers together, we get linking failures |
| because of duplicate symbols. |
| |
| * data/skeletons/glr2.cc (semantic_option::indexIn) |
| (semantic_option::next): Remove the useless overloads. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: don't publish YY_EXCEPTIONS |
| We don't need them in the header file. |
| |
| * data/skeletons/glr2.cc (YY_EXCEPTIONS): Define only in the |
| implementation file. |
| * tests/headers.at (Several Parsers): Also check glr2.cc. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: demonstrate custom error messages in the examples |
| Let's use c++/glr to demonstrate custom error messages in C++ (not |
| just in glr2.cc). |
| |
| * examples/c++/glr/c++-types.yy (report_syntax_error): New. |
| * examples/c++/glr/c++-types.test: Adjust. |
| * examples/c/bistromathic/parse.y: Comment changes. |
| * tests/local.at (AT_YYERROR_DEFINE(c++)): Use a nicer way to print |
| the lookakead's name. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: custom error messages |
| Reported by Tom Shields <thomas.evans.shields@icloud.com>. |
| <https://lists.gnu.org/r/bug-bison/2021-08/msg00003.html> |
| |
| * data/skeletons/glr2.cc (context): New. |
| Use it to generate the error messages. |
| Add support for custom error messages. |
| * tests/calc.at: Check support for custom error messages. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: start the transition to using symbol_type |
| Currently glr2.cc uses three variables/struct members to denote the |
| symbols' kind (or state), value and location. lalr1.cc has two types |
| for "complete" symbols: symbol_type and stack_symbol_type. Let's use |
| that model in glr2.cc too. |
| |
| For a start use yyla (a symbol_type) to denote the lookahead, instead |
| of the triple yytoken, yylval and yylloc. This will make easier the |
| introduction of the "context" subclass, used in parse.error=custom. |
| |
| It simplifies the code in several places. For instance from: |
| |
| symbol_kind_type yytoken_current = this->yytoken;]b4_variant_if([[ |
| value_type yylval_current; |
| ]b4_symbol_variant([this->yytoken], |
| [yylval_current], [move], [this->yylval])], [[ |
| value_type yylval_current = this->yylval;]])[]b4_locations_if([ |
| location_type yylloc_current = this->yylloc;])[ |
| |
| to: |
| |
| symbol_type yyla_current = std::move (this->yyla); |
| |
| * data/skeletons/glr2.cc (yytoken, yylval, yylloc): Replace by... |
| (yyla): this. |
| Adjust all dependencies. |
| (yyloc_default): Remove, unused. |
| * tests/c++.at, tests/glr-regression.at, tests/types.at: C++11 is |
| required for glr2.cc. |
| Adjust to changes in glr2.cc. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: add move assignments to the symbol type |
| This will be used in glr2.cc, which requires C++11. |
| |
| * data/skeletons/c++.m4 (basic_symbol, by_kind): Add move assignment. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid using the obsolete names |
| * data/skeletons/c++.m4: Don't define obsolete identifiers in the case |
| of glr2.cc. Let's not start with technical debt. |
| * data/skeletons/glr2.cc, data/skeletons/lalr1.cc, |
| * data/skeletons/variant.hh: Use token_kind_type, not token_type. |
| * tests/c++.at, tests/local.at: Use value_type, not semantic_type. |
| |
| 2021-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2021-09-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2021-09-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.8.1 |
| * NEWS: Record release date. |
| |
| 2021-09-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| portability: don't use strtof |
| It is not available on HP-UX 11i. |
| Reported by Larkin Nickle <me@larbob.org>. |
| <https://lists.gnu.org/r/bug-bison/2021-09/msg00012.html> |
| |
| Gnulib provides no replacement, but anyway we should be using doubles, |
| since difftime uses doubles. |
| |
| * bootstrap.conf: We want portability on stdtod. |
| * src/counterexample.c: Use double, not float, for time measurements. |
| |
| 2021-09-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: declare yyerror/yylex only when POSIXLY_CORRECT |
| The recent changes to comply with POSIX are breaking Automake's test |
| suite. |
| Reported by Kiyoshi Kanazawa. |
| <https://lists.gnu.org/r/bug-bison/2021-09/msg00005.html> |
| |
| To limit the impact of POSIX changes, bind them to $POSIXLY_CORRECT. |
| Suggested by Karl Berry. |
| <https://lists.gnu.org/r/bug-bison/2021-09/msg00009.html> |
| |
| The existing `maintainer-check-posix` Make target checks these |
| changes. |
| |
| * src/getargs.h, src/getargs.c (set_yacc): New. |
| Use it. |
| * data/skeletons/bison.m4 (b4_posix_if): New. |
| * data/skeletons/yacc.c (b4_declare_yyerror_and_yylex): Use it. |
| * doc/bison.texi, tests/local.at: Adjust. |
| |
| 2021-09-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2021-09-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.8 |
| * NEWS: Record release date. |
| |
| 2021-09-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2021-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2021-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.91 |
| * NEWS: Record release date. |
| |
| 2021-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: disable "Multistart reports" |
| For some reason this test fails on Solaris/x86. But multistart is not |
| part of 3.8, so we can postpone the debugging of this issue. |
| Reported by Dagobert Michelsen. |
| <https://lists.gnu.org/r/bug-bison/2021-08/msg00027.html> |
| |
| * tests/report.at (Multistart reports): Comment out. |
| |
| 2021-08-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: c++: formatting changes |
| * data/skeletons/variant.hh, data/skeletons/glr2.cc: Fix space before |
| paren issue. |
| |
| 2021-08-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename stmtMerge as stmt_merge |
| Follow the GNU Coding Style. |
| |
| * doc/bison.texi, examples/c++/glr/c++-types.yy, |
| * examples/c/glr/c++-types.y, tests/cxx-type.at: s/stmtMerge/stmt_merge/g. |
| |
| 2021-08-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: beware of Visual C++ limitations |
| Contrary to what commit d8cc6b073e2802d871a16dc62418a7eb62ed2216 "c++: |
| shorten the assertions that check whether tokens are correct" |
| believed, MS Visual C++'s preprocessor limitation is not on the input |
| line length, but on the size of the line holding the full C++ |
| statement. |
| |
| Reported by Vince Huffaker <vince@vincejulie.com> |
| <https://lists.gnu.org/r/help-bison/2021-08/msg00003.html> |
| |
| * data/skeletons/variant.hh (_b4_symbol_constructor_define): Hide the |
| assertion from Visual C++. |
| |
| 2021-08-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't postprocess stderr with sed |
| On Solaris, sed throws away the NUL bytes from the stream, even in C |
| locale. So instead of postprocessing bison's stderr to neutralize |
| changes in value of `argv[0]`, use an envvar to actually neutralize |
| variations of `argv[0]` during tests. |
| |
| Reported by Dagobert Michelsen. |
| <https://lists.gnu.org/r/bug-bison/2021-08/msg00025.html> |
| |
| * src/main.c (main): Change `argv[0]` if BISON_PROGRAM_NAME is |
| defined. |
| * tests/bison.in: No longer mess with stderr, just pass |
| the expected BISON_PROGRAM_NAME value. |
| |
| 2021-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: don't require Autoconf 2.71 |
| |
| 2021-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: don't demonstrate multistart, which is not part of 3.8 |
| Besides, for mysterious reasons, this fails on some environment. |
| Reported by Dagobert Michelsen. |
| <https://lists.gnu.org/archive/html/bug-bison/2021-08/msg00008.html> |
| |
| * examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/parse.y, |
| * examples/c/lexcalc/scan.l: Revert to a single-start example. |
| |
| 2021-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: grep -E is not portable |
| Reported by Dagobert Michelsen. |
| <https://lists.gnu.org/r/bug-bison/2021-08/msg00008.html> |
| |
| * tests/calc.at: Use $EGREP. |
| |
| 2021-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: require C++11 |
| Reported by Dagobert Michelsen. |
| https://lists.gnu.org/r/bug-bison/2021-08/msg00006.html |
| |
| * m4/bison-cxx-std.m4 (_BISON_CXXSTD_98_snippet): We don't need |
| vector::data, it was only for glr2.cc, which is C++11 anyway. |
| (_BISON_CXXSTD_11_snippet): We need vector::data and std::swap on |
| arrays. |
| * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): We don't need |
| vector::data. |
| * tests/local.at (AT_COMPILE_CXX): Skip when glr2.cc and no support |
| for C++11. |
| |
| 2021-08-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| readme: add D |
| |
| 2021-08-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2021-08-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.90 |
| * NEWS: Record release date. |
| |
| 2021-08-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: ignore syntax-check's file_system check on Doxyfile |
| * cfg.mk: Here. |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix incorrect test case |
| In c2ba260487927a4cdf061fae10fdd1b387ca3d95 ("glr.c: fix signature |
| when using custom error messages"), I meant to add a test case for C, |
| not C++. It does not work in C++. |
| |
| * tests/calc.at: Run for glr.c, not glr.cc. |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: be clear that glr2.cc is C++11 |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: modernize to newer Autoconf releases |
| * configure.ac: here. |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: reject C++ compilers that don't support std::vector::data |
| GCC 4.2 on macOS claims to support C++98, but does not feature it. |
| |
| input.cc: In member function 'void state_stack::yycompressStack()': |
| input.cc:1774: error: 'class std::vector<glr_stack_item, std::allocator<glr_stack_item> >' has no member named 'data' |
| |
| Reported by Christopher Nielsen <mascguy@github.com>. |
| <https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz>. |
| |
| * m4/bison-cxx-std.m4 (_BISON_CXXSTD_98_snippet): Check for it. |
| * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Ditto. |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: check for C++ 20 and 2b |
| C++20 is released. |
| |
| * configure.ac, m4/bison-cxx-std.m4, tests/atlocal.in, |
| * tests/local.at: Replace 2a with 20, and add support for 2b. |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove obsolete checks |
| * tests/atlocal.in: It was an error for tests to depend on gnulib: |
| they must not, as gnulib would hide portability issues that we want to |
| catch. So this piece of code is no longer useful, and must not be |
| useful. |
| |
| 2021-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: be robust to old versions of xlstproc |
| Reported by Christopher Nielsen <mascguy@github.com>. |
| <https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz> |
| |
| * tests/report.at (AT_CHECK_HTML): New. |
| Use it. |
| |
| 2021-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: fix _Noreturn support detection |
| Reported by Christopher Nielsen <mascguy@github.com>. |
| <https://trac.macports.org/ticket/59927#comment:59> and |
| <https://trac.macports.org/ticket/59927#comment:62>. |
| |
| * data/skeletons/c.m4: Fix typo. |
| |
| 2021-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: style changes |
| * data/skeletons/lalr1.cc: Formatting changes. |
| Use more `const`, as in glr2.cc. |
| |
| 2021-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: fix signature when using custom error messages |
| Reported by Tom Shields <thomas.evans.shields@icloud.com>. |
| |
| * data/skeletons/glr.c (yypcontext_location): Fix return type. |
| * tests/calc.at: Check the case pure, location, custom error messages. |
| |
| 2021-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check symbol/token renumbering |
| In some extreme situations, with lots of useless tokens, Bison was |
| numbering them incorrectly, which resulted in a broken grammar. |
| <https://lists.gnu.org/r/bison-patches/2021-03/msg00001.html> |
| commit a774839ca873d1082f79ba3c4eecc1e242a28ce1. |
| |
| * tests/regression.at (Useless Tokens): New. |
| |
| 2021-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename b4_lex as b4_yylex |
| For consistency with b4_yyerror_formals, etc. |
| |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/d.m4, |
| * data/skeletons/glr.c, data/skeletons/glr2.cc, |
| * data/skeletons/java.m4, data/skeletons/lalr1.cc, |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java, |
| * data/skeletons/yacc.c |
| (b4_lex, b4_lex_formals): Rename as... |
| (b4_yylex, b4_yylex_formals): these. |
| |
| 2021-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: comply with recent POSIX updates: declare yyerror and yylex |
| In POSIX Yacc mode, declare yyerror and yylex unless already #defined, |
| or if YYERROR_IS_DECLARED/YYLEX_IS_DECLARED are defined (for |
| consistency with Bison's YYSTYPE_IS_DECLARED/YYLTYPE_IS_DECLARED). |
| See <https://austingroupbugs.net/view.php?id=1388#c5220>. |
| |
| * data/skeletons/c.m4 (b4_function_declare): Resurect. |
| (b4_lex_formals): Since we will possibly expose this prototype |
| in the header, take the prefix into account. |
| * data/skeletons/yacc.c (b4_declare_yyerror_and_yylex): New. |
| (b4_shared_declarations): Use it. |
| |
| * tests/local.at (AT_YACC_IF): New. |
| When in Yacc mode, set the `yacc` Autotest keyword. |
| (AT_YYERROR_DECLARE(c)): Don't declare in Yacc mode, |
| to avoid clashes (since this signature is static). |
| (AT_YYERROR_DEFINE(c)): Don't define as static in Yacc mode. |
| * tests/regression.at (Early token definitions with --yacc): Specify |
| that we are in Yacc mode. |
| |
| 2021-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: enable -Wmismatched-dealloc |
| * configure.ac (warn_common): Here. |
| |
| 2021-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-08-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: beware of portability issues with readline |
| In some cases readline emits a trailing spaces after the last |
| suggestion, which results in errors such as: |
| |
| ``` |
| -( - atan cos exp ln number sin sqrt$ |
| +( - atan cos exp ln number sin sqrt $ |
| ``` |
| |
| Reported by Christopher Nielsen <mascguy@github.com>. |
| <https://trac.macports.org/ticket/59927#comment:48> |
| <https://trac.macports.org/attachment/ticket/59927/bison-3.7.6-test-10.13.test-suite.log> |
| |
| * examples/test (run): Add support for -t. |
| * examples/c/bistromathic/bistromathic.test: Use it. |
| |
| 2021-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: prepare to be able to run LAC tests |
| Unfortunately it seems to be quite difficult to have "LAC: Exploratory |
| stack" run for D. |
| |
| * data/skeletons/lalr1.d: We need File when traces are enabled. |
| * tests/local.at (AT_YYLEX_DEFINE(d)): New. |
| * tests/regression.at: Prepare for D, but don't run it, it does not |
| work. |
| |
| 2021-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: factor iterating over skeletons |
| * tests/local.at (AT_FOR_EACH_SKEL): New. |
| Use where appropriate. |
| * data/skeletons/lalr1.d: Reject -d. |
| * tests/input.at, tests/scanner.at: Also check D. |
| |
| 2021-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: catch suspicions of unevaluated macros |
| Check in m4's output if there are sequences such as m4_foo or b4_foo, |
| which are probably resulting from incorrect m4 processing. |
| |
| It actually already is useful: |
| |
| - it caught a leaking b4_lac_if leaking from glr.c, where LAC is not |
| supported, hence b4_lac_if is not defined. |
| |
| - it also caught references to location.hh in position.hh when |
| location.hh does not exist. |
| |
| - while making "Code injection" robust to these new warnings (it is |
| its very purpose to let b4_canary pass unevaluated), I saw that it |
| did not check lalr1.d, and when adding lalr1.d, it revealed it did |
| underquote ocurrences of token value types. |
| |
| * src/scan-skel.l (macro): New abbreviation. |
| Use it. |
| * data/skeletons/glr.c: Don't use b4_lac_if, we don't have it. |
| * data/skeletons/location.cc: Don't generate position.hh when we don't |
| generate location.hh. |
| * data/skeletons/d.m4 (b4_basic_symbol_constructor_define): Fix |
| underquotation. |
| * data/skeletons/bison.m4 (b4_canary): New. |
| * tests/input.at (Code injection): Use it, and check lalr1.d too. |
| |
| 2021-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes in scan-code.l |
| * src/scan-code.l: Fix indentation. |
| |
| 2021-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: avoid #define YYDEBUG in C++ |
| * doc/bison.texi (Enabling Traces): here. |
| |
| 2021-08-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: extract AT_LOCATION_PRINT_DECLARE and AT_LOCATION_PRINT_DEFINE |
| * tests/local.at (AT_LOCATION_PRINT_DECLARE) |
| (AT_LOCATION_PRINT_DEFINE): New. |
| |
| 2021-08-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: rename AT_YACC_IF as AT_YACC_C_IF |
| In data/, b4_yacc_if refers to %yacc, not yacc.c. |
| |
| * tests/local.at (AT_YACC_IF): Rename as... |
| (AT_YACC_C_IF): this. |
| |
| 2021-08-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: more pointers to the examples |
| * doc/bison.texi (Infix Calc): Here. |
| |
| 2021-08-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: add diff patterns for Autotest and Texinfo |
| |
| 2021-08-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: fix the GCC 9 build |
| |
| 2021-08-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: d: push and token ctors are done |
| |
| 2021-08-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: refer to the examples |
| * doc/bison.texi: Point to rpcalc, mfcalc, simple.y, calc++, c/glr and |
| c++/glr. |
| |
| 2021-08-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: modernize the example Makefiles |
| * examples/c++/Makefile, examples/c++/calc++/Makefile, |
| * examples/c++/glr/Makefile, examples/c/bistromathic/Makefile, |
| * examples/c/calc/Makefile, examples/c/glr/Makefile, |
| * examples/c/lexcalc/Makefile, examples/c/mfcalc/Makefile, |
| * examples/c/pushcalc/Makefile, examples/c/reccalc/Makefile, |
| * examples/c/rpcalc/Makefile, examples/d/calc/Makefile, |
| * examples/d/simple/Makefile, examples/java/calc/Makefile, |
| * examples/java/simple/Makefile: |
| Use --html to generate *.html directly. |
| No longer demonstrate --xml. |
| No longer show rules for xml to html. |
| Use --header, not --defines. |
| Use --graph without specifying the output file now that we |
| generate *.gv by default. |
| |
| 2021-08-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: glr: document typed mergers |
| See <https://lists.gnu.org/r/help-bison/2020-12/msg00016.html>. |
| |
| * doc/bison.texi (Merging GLR Parses): document typed mergers. |
| And avoid #define YYSTYPE. |
| |
| 2021-08-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: tests: rebox comments |
| * tests/glr-regression.at: here. |
| |
| 2021-08-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| In particular, announce lalr1.d. |
| |
| 2021-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix spello |
| * doc/bison.texi (Multiple start-symbols): here. |
| |
| 2021-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| scan: fix typo in UTF-8 escape |
| We had: |
| |
| ``` |
| -mbchar ...|\xF0[\x\90-\xBF]([\x80-\xBF]{2})|... |
| +mbchar ...|\xF0[\x90-\xBF]([\x80-\xBF]{2})|... |
| ``` |
| |
| so a precise sequence that matches the incorrect regex can let NUL |
| bytes pass through, which triggers an assertion violation downstream. |
| It is a pity that Flex does not report an error for such input. |
| |
| Reported by Ahcheong Lee <ahcheong.lee@gmail.com>. |
| <https://lists.gnu.org/r/bug-bison/2021-04/msg00003.html> |
| |
| * src/scan-gram.l (mbchar): Fix the bad regex. |
| * tests/input.at (Invalid inputs): Check that case. |
| |
| 2021-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: POSIX yacc and prototypes |
| |
| 2021-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update Doxygen template file |
| * doc/Doxyfile.in: here. |
| |
| 2021-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: a bit of editing |
| * doc/bison.texi: Use @samp{...}, not "..." for pieces of code. |
| Use @samp{...}, not @command{...} for command lines. |
| Promote %header/--header over %defines/--defines. |
| Spellcheck. |
| |
| 2021-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-08-01 Alyssa Ross <hi@alyssa.is> |
| |
| getargs: don't translate first line of --version |
| <https://lists.gnu.org/r/bison-patches/2021-06/msg00002.html> |
| |
| * src/getargs.c (version): here. |
| |
| 2021-08-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| all: fix confusion between token ctor and symbol ctor |
| The symbol constructors are genuine constructors. Token constructors |
| are plain functions that construct tokens. |
| |
| 2021-07-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: minor clean up |
| * doc/bison.texi: Use @samp, not "...", around pieces of code. |
| * examples/d/calc/calc.y: Don't promote %union. |
| |
| 2021-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-06-06 Adela Vais <adela.vais99@gmail.com> |
| |
| d: demonstrate the token constructors |
| * examples/d/calc/calc.y: Use the token constructors in the 'calc' example. |
| |
| 2021-04-11 Adela Vais <adela.vais99@gmail.com> |
| |
| d: update documentation |
| * doc/bison.texi: Various fixes. |
| (D Push Parser Interface, D Complete Symbols): New sections. |
| |
| 2021-04-11 Adela Vais <adela.vais99@gmail.com> |
| |
| d: demonstrate the push parser |
| * examples/d/calc/calc.y: Use a parser of type 'push' in the calc |
| example. |
| |
| 2021-04-11 Adela Vais <adela.vais99@gmail.com> |
| |
| d: add push parser support |
| Support the push-pull directive with the options pull, push and both. |
| Pull remains the default option. |
| |
| * data/skeletons/d.m4: Add user aliases for the push parser's return |
| values: PUSH_MORE, ABORT, ACCEPT. |
| * data/skeletons/lalr1.d: Add push parser support. |
| * tests/calc.at: Test it. |
| |
| 2021-03-26 Adela Vais <adela.vais99@gmail.com> |
| |
| d: add token constructors support |
| The user can return from yylex() by calling the Symbol method of the |
| same name as the TokenKind reported, and adding the parameters for |
| value and location if necessary. These methods generate compile-time |
| errors if the parameters are not correlated. Token constructors work |
| with both %union and api.value.type union. |
| |
| * data/skeletons/d.m4: Here. |
| * tests/calc.at: Test it. |
| |
| 2021-03-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: add api.value.type union support |
| The union of the values is handled by the backend. |
| In D, unions can hold classes, structs, etc., so this is more similar |
| to the C++ api.value.type variant. |
| |
| * data/skeletons/d.m4, data/skeletons/lalr1.d: Here. |
| * tests/calc.at, tests/local.at: Test it. |
| |
| 2021-03-26 Adela Vais <adela.vais99@gmail.com> |
| |
| d: rewrite Symbol's constructors in M4 |
| The D code was becoming too complex. |
| M4 is easier to maintain in the long run. |
| |
| * data/skeletons/d.m4: Here. |
| |
| 2021-03-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-03-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| files: please syntax-check |
| * src/files.c (string_free): syntax-check does not want us to cast |
| arguments to free. |
| |
| 2021-03-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge 3.7.6 into master |
| * maint: |
| maint: post-release administrivia |
| version 3.7.6 |
| yacc: fix push parser |
| tables: fix again the handling of useless tokens |
| |
| 2021-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2021-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.6 |
| * NEWS: Record release date. |
| |
| 2021-03-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: don't mention YY_LOCATION_PRINT |
| * doc/bison.texi (Syntax Error Reporting Function): Don't refer to |
| YY_LOCATION_PRINT, it is a private internal detail. |
| |
| 2021-03-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: fix push parser |
| When a pstate is used for multiple successive parses, some state may |
| leak from one run into the following one. That was introduced in |
| 330552ea499ca474f65967160e9d4e50265f9631 "yacc.c: push: don't clear |
| the parser state when accepting/rejecting". |
| |
| Reported by Ryan <dev@splintermail.com> |
| https://lists.gnu.org/r/bug-bison/2021-03/msg00000.html |
| |
| * data/skeletons/yacc.c (yypush_parse): We reusing a pstate from a |
| previous run, do behave as if it were the first run. |
| * tests/push.at (Pstate reuse): Check this. |
| |
| 2021-03-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| tables: fix again the handling of useless tokens |
| The right-shift added in c22902e360e0fbbe9fd5657dcf107e03166da309 |
| ("tables: fix handling for useless tokens") is incorrect. In |
| particular, we need to reset the "new" bits. |
| |
| Reported by Balázs Scheidler. |
| https://github.com/akimd/bison/issues/74 |
| |
| * src/tables.c (pos_set_set): Fix the right-shift. |
| |
| 2021-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| html: fix memory leak |
| * src/print-xml.c (print_html): Free allocated memory. |
| |
| 2021-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| output: cache the mapped file names |
| Don't repeatedly call malloc/free for each call to map_file_name. |
| |
| * bootstrap.conf: We need hash-map. |
| * src/files.h, src/files.c (map_file_name): The caller must not free |
| the result. |
| Adjust callers. |
| (mapped_dir_prefix, spec_mapped_header_file): Remove. |
| * src/files.c |
| (map_file_name): Rename as... |
| (map_file_name_alloc): this. |
| (mapped_files, map_file_name, string_equals, string_hash, string_free): |
| New. |
| |
| 2021-02-26 Joshua Watt <jpewhacker@gmail.com> |
| |
| output: use mapped file name for symbols |
| Applies the file name mapping before exporting it as a symbol. This |
| allows the symbols to correctly respect the --file-prefix-map command |
| line option. |
| |
| 2021-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * src/files.c, src/files.h: Save horizontal space. |
| Prefer `res` for returned values. |
| Put the doc into the header. |
| |
| 2021-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-02-25 Joshua Watt <jpewhacker@gmail.com> |
| |
| doc: fix documented function name |
| * data/README.md: Fix the name of a referenced function to match the |
| name in code. |
| |
| 2021-02-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2021-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: printing locations |
| Document YYLOCATION_PRINT. |
| |
| * doc/bison.texi (Printing Locations): New node. |
| |
| 2021-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: improve some function prototypes |
| * examples/c/bistromathic/parse.y, examples/c/glr/c++-types.y, |
| * examples/c/lexcalc/parse.y: Use const where appropriate. |
| Avoid `yy` prefixes where it does not make sense. |
| Avoid the `p` prefix for pointers. |
| |
| 2021-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: use YYLOCATION_PRINT |
| * examples/c/bistromathic/parse.y, examples/c/glr/c++-types.y, |
| * examples/c/lexcalc/parse.y: Don't use the private internal detail |
| `YY_LOCATION_PRINT`, use `YYLOCATION_PRINT`. |
| |
| 2021-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: rename YY_LOCATION_PRINT as YYLOCATION_PRINT and make it public |
| It is very helpful to be able to look at the locations in the debug |
| traces, let's provide the users with (i) a means to do that for their |
| location types, and (ii) a public macro to print locations when debug |
| traces are enabled. |
| |
| * data/skeletons/c.m4 (b4_yy_location_print_define): Rename as... |
| (b4_yylocation_print_define): this. |
| Define YYLOCATION_PRINT instead of YY_LOCATION_PRINT. |
| Ensure backward compatibility for those who might have defined/used |
| YY_LOCATION_PRINT in spite the warnings. |
| Adjust dependencies. |
| * data/skeletons/glr2.cc: We don't use YYLOCATION_PRINT here. |
| |
| 2021-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: do not rely on YY_LOCATION_PRINT |
| * examples/c/bistromathic/parse.y (location_print): New. |
| Use it. |
| |
| 2021-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: stop defining YY_LOCATION_PRINT when locations are not enabled |
| * data/skeletons/c.m4 (b4_yy_location_print_define): here. |
| |
| 2021-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| graph: output foo.gv by default, instead of *.dot |
| That change was started in Bison 3.4. The announcement for 3.7 stated |
| that in Bison 3.8 we would use *.gv by default. |
| |
| * src/files.c (compute_output_file_names): spec_graph_file defaults |
| too *.gv. |
| * doc/bison.texi, examples/c++/calc++/local.mk, tests/output.at: |
| Adjust. |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: adjust to the removal of YYPRINT |
| * tests/regression.at: here. |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: remove support for YYPRINT |
| Its removal was annonced several times in NEWS (for Bison 3.5, 3.6, 3.7). |
| |
| * data/skeletons/c.m4, data/skeletons/yacc.c: Remove support for YYPRINT. |
| * NEWS: Fix the mess introduced by the merge. |
| Document the removal of YYPRINT. |
| * doc/bison.texi (The YYPRINT Macro): Remove. |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: issue a compile-time warning when #define YYSTYPE is used |
| Using #define YYSTYPE has always been strongly discouraged in C++. |
| Macros are dangerous and can result in subtle bugs. |
| https://lists.gnu.org/r/bug-bison/2020-12/msg00007.html |
| |
| Maybe some people are currently using #define YYSTYPE. Instead of |
| dropping support right now, first issue a warning. Bison can "see" if |
| YYDEBUG is defined (it could even be on the command line), only the |
| compiler knows. Unfortunately `#warning` is non-portable, and |
| actually GCC even dies on it when `-pedantic` is enabled. So we need |
| to use `#pragma message`. We must make it conditional as some |
| compilers might not support it, but it doesn't matter if only _some_ |
| compilers emit the warning: it should be enough to catch the attention |
| of the developers. |
| |
| * data/skeletons/c++.m4: Issue a warning when the user defined |
| YYSTYPE. |
| * tests/actions.at: Don't #define YYSTYPE. |
| * tests/headers.at (Several parsers): Ignore the YYSTYPE in the |
| warning. |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: make it clear that #define YYSTYPE is not supported |
| We have been accepting this for years, but it is deprecated: people |
| are expecting to define api.value.type instead. |
| |
| * doc/bison.texi: Make it clear that YYSTYPE and YYLTYPE are for C |
| only. |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: stop referring to YYSTYPE in yylex |
| * data/skeletons/glr2.cc, data/skeletons/lalr1.cc (b4_lex): Don't |
| refer to YYSTYPE, but to value_type. |
| Note that this is "symbolic" in the sense that these values are never |
| used by b4_function_call. |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: try GCC 11 and Clang 11 |
| |
| 2021-02-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2021-01-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: no longer be part of b4_glr_cc_if |
| We are fully independant of glr.c/glr.cc, we no longer need to pretend |
| we are glr.cc. |
| |
| * data/skeletons/bison.m4: here. |
| |
| 2021-01-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: provide macros for api.value.type=union |
| * data/skeletons/bison.m4 (b4_union_if): New. |
| Remove support for "%define variant", which was deprecated long ago. |
| * tests/local.at (AT_UNION_IF): New. |
| |
| 2021-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: display the Bison version |
| * src/main.c (main): When traces are enabled, display the Bison |
| version. |
| * tests/conflicts.at, tests/report.at, tests/sets.at: |
| Use AT_PACKAGE_VERSION (for package.m4) instead of post-processing the |
| output. |
| |
| 2021-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: run the main test suite on "make check" |
| Automake appears to not recognize "check-local" when it is not a |
| isolated target. Fixes 77a8b84fc8bbe39dc231a1f657fd56a50fac5855. |
| |
| * tests/local.mk (check-local): Make it visible to Automake. |
| |
| 2021-01-30 Adela Vais <adela.vais99@gmail.com> |
| |
| d: tests: various style fixes |
| * tests/calc.at, tests/scanner.at: Here. |
| (yylex): Report values directly, without storing them to the union |
| first. |
| |
| 2021-01-30 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Update URLs to prefer https: to http: |
| Also, fix a few http: URLs that were no longer working. |
| |
| 2021-01-29 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Update URLs to prefer https: to http: |
| Also, fix a few http: URLs that were no longer working. |
| |
| 2021-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: provide check-examples and check-tests |
| * examples/local.mk (check-examples): New. |
| * tests/local.mk (check-tests): New. |
| * README-hacking.md: Document them. |
| |
| 2021-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: use gettext for all the messages |
| * examples/c/bistromathic/parse.y: Add missing calls to _. |
| |
| 2021-01-24 Adela Vais <adela.vais99@gmail.com> |
| |
| d: tests: avoid mixing output from reportSyntaxError and getExpectedTokens |
| Function reportSyntaxError buffers and prints the message at the end. |
| |
| * tests/local.at: Here. |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix destructor support |
| Currently glr2.cc does not use 'symbol's everywhere, in various places |
| it also uses yykind, yyval and yyloc "by hand". So we need two |
| different calls for user-defined constructors: once for ~symbol, |
| another for yy_destroy_. Both need to call the user destructors with |
| different calling conventions. |
| |
| * data/skeletons/glr2.cc (b4_symbol_action): Rename as... |
| (b4_symbol_action_for_yyval): this. |
| (b4_symbol_action): New, taken from lalr1.cc. |
| (yy_destroy_, yy_symbol_value_print_): Use b4_symbol_action_for_yyval. |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: beware of types with angle brackets |
| For C++98, avoid "yyval.as<std::list<int>>". |
| |
| * data/skeletons/glr2.cc (b4_call_merger): Add spaces within "<...>". |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: fix details after merge with 3.7.5 |
| * TODO, cfg.mk: Update. |
| * src/parse-gram.c, src/parse-gram.h: Regen. |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge tag 'v3.7.5' |
| Three new commits: |
| |
| commit 8358090292e21c61a583da542bad9099ad65f355 |
| Author: Paul Eggert <eggert@cs.ucla.edu> |
| Date: Wed Jan 20 18:30:16 2021 -0800 |
| |
| c: port to HP-UX 11.23 |
| |
| commit 2c294c132528ede23d8ae4959783a67e9ff05ac5 |
| Author: Vincent Imbimbo <vmi6@cornell.edu> |
| Date: Sat Jan 23 13:25:18 2021 -0500 |
| |
| cex: fix state-item pruning |
| |
| commit c22902e360e0fbbe9fd5657dcf107e03166da309 |
| Author: Akim Demaille <akim.demaille@gmail.com> |
| Date: Sat Jan 23 18:40:15 2021 +0100 |
| |
| tables: fix handling for useless tokens |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix typo |
| Reported by Kaz Kylheku. |
| https://lists.gnu.org/r/bison-patches/2020-11/msg00019.html |
| |
| * doc/bison.texi (Versioning): here. |
| |
| 2021-01-24 Kaz Kylheku <kaz@kylheku.com> |
| |
| doc: document best deployment practices. |
| * doc/bison.texi (Versioning): New node about practices |
| regarding dealing with multiple versions of Bison. |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.5 |
| * NEWS: Record release date. |
| |
| 2021-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| tables: fix handling for useless tokens |
| In some rare conditions, the generated parser can be wrong when there |
| are useless tokens. |
| |
| Reported by Balázs Scheidler. |
| https://github.com/akimd/bison/issues/72 |
| |
| Balázs managed to prove that the bug was introduced in |
| |
| commit af1c6f973a60a51c609903713ff8f7fce0887025 |
| Author: Theophile Ranquet <ranquet@lrde.epita.fr> |
| Date: Tue Nov 13 10:38:49 2012 +0000 |
| |
| tables: use bitsets for a performance boost |
| |
| Suggested by Yuri at |
| <http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00000.html>. |
| |
| The improvement is marginal for most grammars, but notable for large |
| grammars (e.g., PosgreSQL's postgre.y), and very large for the |
| sample.y grammar submitted by Yuri in |
| http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00012.html. |
| Measured with --trace=time -fsyntax-only. |
| |
| parser action tables postgre.y sample.y |
| Before 0,129 (44%) 37,095 (99%) |
| After 0,117 (42%) 5,046 (93%) |
| |
| * src/tables.c (pos): Replace this set of integer coded as an unsorted |
| array of integers with... |
| (pos_set): this bitset. |
| |
| which was implemented long ago, but that I installed only recently |
| (March 2019), first published in v3.3.90. |
| |
| That patch introduces a bitset to represent a set of integers. It |
| managed negative integers by using a (fixed) base (the smallest |
| integer to represent). It avoided negative accesses into the bitset |
| by ignoring integers smaller than the base, under the asumption that |
| these cases correspond to useless tokens that are ignored anyway. |
| While it turns out to be true for all the test cases in the test suite |
| (!), Balázs' use case demonstrates that it is not always the case. |
| |
| So we need to be able to accept negative integers that are smaller |
| than the current base. |
| |
| "Amusingly" enough, the aforementioned patch was visibly unsure about |
| itself: |
| |
| /* Store PLACE into POS_SET. PLACE might not belong to the set |
| of possible values for instance with useless tokens. It |
| would be more satisfying to eliminate the need for this |
| 'if'. */ |
| |
| This commit needs several improvements in the future: |
| - support from bitset for bit assignment and shifts |
| - amortized resizing of pos_set |
| - test cases |
| |
| * src/tables.c (pos_set_base, pos_set_dump, pos_set_set, pos_set_test): |
| New. |
| Use them instead of using bitset_set and bitset_test directly. |
| |
| 2021-01-24 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix state-item pruning |
| There were several bugs in pruning that would leave the state-item |
| graph in an inconsistent state which could cause crashes later on: |
| |
| - Pruning now happens in one pass instead of two. |
| |
| - Disabled state-items no longer prune the state-items they transition |
| to if that state-item has other states that transition to it. |
| |
| - State-items that transition to disabled state-items are always |
| pruned even if they have productions. |
| |
| Reported by Michal Bartkowiak <michal.bartkowiak@nokia.com> |
| https://lists.gnu.org/r/bug-bison/2021-01/msg00000.html |
| and Zartaj Majeed |
| https://github.com/akimd/bison/issues/71 |
| |
| * src/state-item.c (prune_forward, prune_backward): Fuse into... |
| (prune_state_item): this. |
| Adjust callers. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: pacify syntax-check |
| * cfg.mk: Currently we cannot update gnulib because of portability |
| issues with ancient versions of clang |
| (https://lists.gnu.org/r/bug-gnulib/2021-01/msg00241.html). So skip |
| the check about copyright date for gnulib. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: bump copyrights to 2021 |
| Run 'make update-copyright'. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: associate it to its first definition, not the latest |
| Currently each time we meet %merge we record this location as the |
| defining location (and symbol). Instead, record the first definition. |
| |
| In the generated code we go from |
| |
| yy0->A = merge (*yy0, *yy1); |
| |
| to |
| |
| yy0->S = merge (*yy0, *yy1); |
| |
| where S was indeed the first symbol, and in the diagnostics we go from |
| |
| glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1> |
| 30 | sym2: sym3 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:29.18-24: note: previous declaration |
| 29 | sym1: sym2 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type2> |
| 31 | sym3: %merge<merge> { $$ = 0; } ; |
| | ^~~~~~~ |
| glr-regr18.y:30.18-24: note: previous declaration |
| 30 | sym2: sym3 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| |
| to |
| |
| glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1> |
| 30 | sym2: sym3 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:29.18-24: note: previous declaration |
| 29 | sym1: sym2 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type1> |
| 31 | sym3: %merge<merge> { $$ = 0; } ; |
| | ^~~~~~~ |
| glr-regr18.y:29.18-24: note: previous declaration |
| 29 | sym1: sym2 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| |
| where both duplicates are reported against definition 1, rather than |
| using definition 1 as a reference when diagnosing about definition 2, |
| and then 2 as a reference for 3. |
| |
| * src/reader.c (record_merge_function_type): Keep the first definition. |
| * tests/glr-regression.at: Adjust. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: fix compatibility with api.value.type=union |
| Reported by Jot Dot. |
| https://lists.gnu.org/r/help-bison/2020-12/msg00014.html |
| |
| * data/skeletons/glr.c, data/skeletons/glr2.cc (b4_call_merger): Use |
| the symbol's slot, not its type. |
| * examples/c/glr/c++-types.y: Use explicit per-symbol typing together |
| with api.value.type=union. |
| (yylex): Use yytoken_kind_t. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: delegate the generation of calls to mergers to m4 |
| Don't generate C code from bison, leave that to the skeletons. |
| |
| * src/output.c (merger_output): Emit invocations to b4_call_merger. |
| * data/skeletons/glr.c (b4_call_merger): New. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: let mergers record a typing-symbol, rather than a type |
| Symbols are richer than types, and in M4 it is my simpler (and more |
| common) to deal with symbols rather than types. So let's associate |
| mergers to a symbol rather than a type name. |
| |
| * src/reader.h (merger_list): Replace the 'type' member by a symbol |
| member. |
| * src/reader.c (record_merge_function_type): Take a symbol as |
| argument, rather than a type name. |
| * src/output.c (merger_output): Adjust. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: clearer tests on diagnostics |
| * tests/glr-regression.at: Use caret errors. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: introduce "slot"s for symbols |
| Extracted from d9cf99b6a5cb0345e91dfb90fe6d6473024ea97a, in the master |
| branch. |
| |
| * data/skeletons/bison.m4 (b4_symbol_slot): New, with safer semantics |
| than type and type_tag. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: YYUSE is private, make it YY_USE |
| This macro is not exposed to users, make start it with 'YY_'. |
| |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.c, |
| * data/skeletons/glr.cc, data/skeletons/lalr1.cc, |
| * src/parse-gram.c, tests/actions.at, tests/c++.at, tests/headers.at, |
| * tests/local.at (YYUSE): Rename as... |
| (YY_USE): this. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: codespell |
| * src/parse-gram.y: Fix spelling. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fix traces: fix display of disabled items |
| The display of disabled state items is incorrect. The item is |
| stuttered, and lacks on end-of-line. |
| |
| From |
| |
| State 7: |
| 1 exp: exp • "⊕" exp |
| -> 1 exp: exp "⊕" • exp |
| <- 1 exp: • exp "⊕" exp |
| |
| 2 exp: exp • "+" exp 2 exp: exp • "+" exp DISABLED |
| 2 exp: exp "+" exp • |
| <- 2 exp: exp "+" • exp |
| |
| 3 exp: exp • "+" exp 3 exp: exp • "+" exp DISABLED |
| 3 exp: exp "+" exp • |
| <- 3 exp: exp "+" • exp |
| |
| to |
| |
| State 7: |
| 1 exp: exp • "⊕" exp |
| -> 1 exp: exp "⊕" • exp |
| <- 1 exp: • exp "⊕" exp |
| |
| 2 exp: exp • "+" exp DISABLED |
| |
| 2 exp: exp "+" exp • |
| <- 2 exp: exp "+" • exp |
| |
| 3 exp: exp • "+" exp DISABLED |
| |
| 3 exp: exp "+" exp • |
| <- 3 exp: exp "+" • exp |
| |
| * src/state-item.c (state_items_report): Don't issue disabled items |
| twice, and issue two '\n' at their end. |
| * tests/conflicts.at: Check it. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fix traces: add missing end-of-lines |
| In 430ca0fc632f5e8072fe468b8a99c640985f6926, I completely forgot that |
| `puts` adds a `\n`. |
| |
| * src/lssi.c, src/state-item.c: Restore missing end-of-lines in the |
| output. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: add support for $TIME_LIMIT |
| * src/counterexample.c (TIME_LIMIT): Replace with... |
| (time_limit): this. |
| (counterexample_init): Check $TIME_LIMIT. |
| * src/scan-gram.l: Reorder includes. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: send traces to stderr, not stdout |
| When comparing traces from different machines, the mixture of |
| stdout/stderr in the output are making things uselessly difficult. |
| |
| * src/lssi.c, src/state-item.c: Output debug traces on stderr. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: I'm tired of Flex's warnings |
| * doc/bison.texi: Disable another warning I'm tired to see. |
| New releases would be most welcome. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: don't "leak" yyparse |
| When using glr.cc, the C function yyparse is an internal detail that |
| should not be exposed. Users might call it by accident (I did). |
| |
| * data/skeletons/glr.c (yyparse): When used for glr.cc, rename as yy_parse_impl. |
| * data/skeletons/glr.cc: Adjust. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tables: avoid warnings and save bits |
| The yydefgoto table uses -1 as an invalid for an impossible case (we |
| never use yydefgoto[0], since it corresponds to the reduction to |
| $accept, which never happens). Since yydefgoto is a table of state |
| numbers, this -1 forces a signed type uselessly, which (1) might |
| trigger compiler warnings when storing a value from yydefgoto into a |
| state number (nonnegative), and (2) wastes bits which might result in |
| using a int16 where a uint8 suffices. |
| |
| Reported by Jot Dot <jotdot@shaw.ca>. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00027.html |
| |
| * src/tables.c (default_goto): Use 0 rather than -1 as invalid value. |
| * tests/regression.at: Adjust. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: use noexcept where appropriate |
| Reported by Don Macpherson. |
| https://github.com/akimd/bison/issues/63 |
| https://github.com/akimd/bison/issues/64 |
| |
| * data/skeletons/c++.m4, data/skeletons/lalr1.cc: here. |
| |
| 2021-01-23 Martin Rehak <martin.rehak@oracle.com> |
| |
| examples: avoid "unbound variable" errors |
| When the shell option `nounset` is set, we may get "unbound variable" |
| errors. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00013.html |
| |
| * examples/test (diff_opts): Be sure to initialize it. |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| autoconf: update |
| |
| 2021-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: adjust _Noreturn to pedantic clang |
| Reported by Joe Nelson <joe@begriffs.com>. |
| https://lists.gnu.org/r/help-bison/2021-01/msg00004.html |
| Fixed by Paul Eggert in gnulib. |
| https://lists.gnu.org/r/bug-gnulib/2021-01/msg00156.html |
| |
| * data/skeletons/c.m4 (b4_attribute_define): Adjust _Noreturn to |
| pedantic clang. |
| |
| 2021-01-21 Paul Eggert <eggert@cs.ucla.edu> |
| |
| c: port to HP-UX 11.23 |
| Problem reported by Albert Chin in: |
| https://lists.gnu.org/r/bug-bison/2021-01/msg00029.html |
| * data/skeletons/c.m4 (b4_c99_int_type_define): |
| Work around HP-UX bug. |
| |
| 2021-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: examples: reduce scopes |
| * data/skeletons/lalr1.d (YYLocation.step): New. |
| * examples/d/calc/calc.y (Lexer): Reduce scopes to avoid uninitialized |
| varibles. |
| Factor the handling of locations. |
| We don't need lenChars. |
| |
| 2021-01-17 Adela Vais <adela.vais99@gmail.com> |
| |
| d: examples: calc: remove Value from Lexer |
| The Symbol constructor does not use it, so it is easier to not use |
| Value at all. |
| |
| * examples/d/calc/calc.y: Here. |
| |
| 2021-01-17 Adela Vais <adela.vais99@gmail.com> |
| |
| d: examples: calc: use of std.conv.parse for location |
| From Dlang v2.095.0 onwards, std.conv.parse reports the number of |
| consumed characters. |
| |
| * examples/d/calc/calc.y: Here. |
| |
| 2021-01-17 Adela Vais <adela.vais99@gmail.com> |
| |
| d: examples: simple: fix style |
| * examples/d/simple/calc.y: Formatting changes. |
| |
| 2021-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: run D tests |
| * .travis.yml: here. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: codespell |
| * data/skeletons/glr2.cc, src/parse-gram.y: Fix spelling. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: fixes |
| * examples/c++/glr/local.mk, examples/c/glr/local.mk (CLEANFILES): |
| Complete to fix distcheck. |
| * src/output.c (merger_output): Obfuscate to pacify syntax-check's |
| sc_space_before_open_paren. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: bump copyrights to 2021 |
| Run 'make update-copyright'. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| * src/output.c, src/print-xml.c: Adjust. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| autoconf: update |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fix traces |
| The display of disabled state items is incorrect. The item is |
| stuttered, and lacks on end-of-line. |
| |
| From |
| |
| State 7: |
| 1 exp: exp • "⊕" exp |
| -> 1 exp: exp "⊕" • exp |
| <- 1 exp: • exp "⊕" exp |
| |
| 2 exp: exp • "+" exp 2 exp: exp • "+" exp DISABLED |
| 2 exp: exp "+" exp • |
| <- 2 exp: exp "+" • exp |
| |
| 3 exp: exp • "+" exp 3 exp: exp • "+" exp DISABLED |
| 3 exp: exp "+" exp • |
| <- 3 exp: exp "+" • exp |
| |
| to |
| |
| State 7: |
| 1 exp: exp • "⊕" exp |
| -> 1 exp: exp "⊕" • exp |
| <- 1 exp: • exp "⊕" exp |
| |
| 2 exp: exp • "+" exp DISABLED |
| |
| 2 exp: exp "+" exp • |
| <- 2 exp: exp "+" • exp |
| |
| 3 exp: exp • "+" exp DISABLED |
| |
| 3 exp: exp "+" exp • |
| <- 3 exp: exp "+" • exp |
| |
| * src/state-item.c (state_items_report): Don't issue disabled items |
| twice, and issue two '\n' at their end. |
| * tests/conflicts.at: Check it. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fix traces |
| In 430ca0fc632f5e8072fe468b8a99c640985f6926, I completely forgot that |
| `puts` adds a `\n`. |
| |
| * src/lssi.c, src/state-item.c: Restore missing end-of-lines in the |
| output. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: add support for YYNOMEM |
| Suggested by Joe Nelson <joe@begriffs.com>. |
| https://lists.gnu.org/r/help-bison/2020-12/msg00020.html |
| |
| * data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): New. |
| Use it. |
| (yyexhaustedlab): Rename as... |
| (yynomemlab): this. |
| * tests/calc.at: Check it. |
| * doc/bison.texi: Document it. |
| Fix incorrect statements about non-existing constants for YYERROR etc. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| Gettext uses "catalog", not "catalogue". |
| |
| * doc/bison.texi, examples/c/README.md, |
| * examples/c/bistromathic/Makefile, |
| * examples/c/bistromathic/README.md, |
| * examples/c/bistromathic/parse.y: |
| Spell check. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c, glr.c: style: rename yyreturn and yyreturnlab |
| * data/skeletons/glr.c, data/skeletons/yacc.c: here. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: style: formatting changes |
| * data/skeletons/glr.c (YYCHK1): here. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check YYACCEPT and YYABORT |
| There are some tests that cover them, but nothing for all the |
| skeletons. Let's do that in the calculator tests. |
| |
| * tests/calc.at: Check YYACCEPT and YYABORT. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: don't prepare for subclassing |
| I am not aware of people subclassing the parser class, and I fail to |
| see how this could be useful. Rather than leaving a badly baked |
| feature (as in glr.cc currently), let's not support it at all, until |
| someone comes and explains why and how it would be useful. |
| |
| * data/skeletons/glr2.cc (parser): We need no virtual function members. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: formatting changes |
| * data/skeletons/glr2.cc: here. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: move strong_index_alias into implementation file |
| * data/skeletons/glr2.cc: here. |
| Fix coding style issues. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: remove some useless qualifications |
| * data/skeletons/glr2.cc: Rely on the type-aliases provided by |
| glr_stack. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: more free functions about the automaton into glr_stack |
| * data/skeletons/glr2.cc (yypact_value_is_default) |
| (yytable_value_is_error, yyisShiftAction, yyisErrorAction) |
| (yyisDefaultedState, yydefaultAction): |
| Move into... |
| (glr_stack): here. |
| Fix naming conventions. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: move free-functions into glr_stack |
| * data/skeletons/glr2.cc (yypreference, yyLRgotoState): Move into... |
| (glr_stack): here. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: make yygetToken a member of glr_stack |
| It's on purpose that I keep the `this->` now. We'll see later if we |
| want to remove them. |
| |
| * data/skeletons/glr2.cc (yygetToken): Move into... |
| (glr_stack::yyget_token): this. |
| (b4_lex): Adjust. |
| |
| 2021-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: move parser::parse into glr_stack |
| Currently we have two classes that actually should be fused together: |
| parser and glr_stack. Both carry part of the parsing: (i) parser |
| contains `parse`, which is the top-level of the parsing process, it |
| uses yygetToken, etc., and (ii) glr_stack takes care of all the |
| details (dealing with the stack), and also calls yygetToken. |
| |
| However if we fuse them together, we would get a large parser class, |
| in the header file. So it is probably better to split this large |
| class using the pimpl idiom. But then it appears that glr_stack is |
| very close from being the impl of parser. |
| |
| Let's improve this. |
| |
| For a start... |
| |
| * data/skeletons/glr2.cc (parser::parse): Move to... |
| (glr_stack::parse): here. |
| (parser::parse): Use it. |
| |
| 2021-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: add support for $TIME_LIMIT |
| * src/counterexample.c (TIME_LIMIT): Replace with... |
| (time_limit): this. |
| (counterexample_init): Check $TIME_LIMIT. |
| * src/scan-gram.l: Reorder includes. |
| |
| 2021-01-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: adjust _Noreturn to pedantic clang |
| Reported by Joe Nelson <joe@begriffs.com>. |
| https://lists.gnu.org/r/help-bison/2021-01/msg00004.html |
| Fixed by Paul Eggert in gnulib. |
| https://lists.gnu.org/r/bug-gnulib/2021-01/msg00156.html |
| |
| * data/skeletons/c.m4 (b4_attribute_define): Adjust _Noreturn to |
| pedantic clang. |
| |
| 2021-01-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: send traces to stderr, not stdout |
| When comparing traces from different machines, the mixture of |
| stdout/stderr in the output are making things uselessly difficult. |
| |
| * src/lssi.c, src/state-item.c: Output debug traces on stderr. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: remove remains from glr.cc |
| * data/skeletons/glr2.cc: We no longer play dirty tricks with |
| parse-params, remove the now useless dance around them. |
| We now have genuine objects for locations, leave the initial action |
| alone. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: add support for api.token.constructor |
| * data/skeletons/glr2.cc: Add support for api.token.constructor. |
| * examples/c++/glr/c++-types.yy: Use it. |
| * examples/c++/glr/c++-types.test: Adjust expectations for error |
| messages. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: introduce the yytranslate_ member function |
| * data/skeletons/c++.m4 (b4_yytranslate_define): Use static_cast |
| rather than the YY_CAST macro. |
| Avoids the need to define YY_CAST in the header. |
| * data/skeletons/glr2.cc: Fix calls to b4_shared_declarations: pass |
| the type of file we are in. |
| Don't define YYTRANSLATE. |
| (parser::yytranslate_): New, as in lalr1.cc. |
| Adjust to use it. |
| |
| * tests/glr-regression.at: Adjust. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: tests: simplify |
| * tests/glr-regression.at: Remove useless qualification for tokens. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: rely on symbol kinds rather than token kinds |
| Instead of tracking the lookahead with yychar, use yytoken. This is |
| consistent with lalr1.cc, saves us from calls to YYTRANSLATE (except |
| when calling yylex), and makes it easier to migrate to using |
| symbol_type. |
| |
| * data/skeletons/glr2.cc: Replace all uses of `int yychar` with |
| `symbol_kind_type yytoken`. |
| (yygetToken): Don't take/return the lookahead's token-kind and |
| symbol-kind, just work directly on yystack's `yytoken` member. |
| |
| * tests/glr-regression.at (AT_PRINT_LOOKAHEAD_DECLARE) |
| (AT_PRINT_LOOKAHEAD_DEFINE): New. |
| Adjust to the fact that we have yytoken, not yychar, in glr2.cc. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: example: style changes |
| * examples/c++/glr/c++-types.yy: We need C++ 11 (we use shared_ptr). |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: use references to print symbols |
| * data/skeletons/glr2.cc (b4_symbol_action): New, so that we use |
| `yyval` and `yyloc` rather than the `yyvaluep` and `yylocationp` |
| pointers. |
| (yy_symbol_value_print_, yy_symbol_print_, yy_destroy_): Use |
| references rather than pointers. |
| Drop support for the undocumented, obsolete, `yyoutput` variable. |
| Adjust callers. |
| (glr_state::destroy): Don't use yy_symbol_print_ when we don't have a |
| symbol. Rather, write dedicated code. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix memory leak |
| * data/skeletons/glr2.cc (glr_stack_item::setState): Free the previous |
| state before installing the new one. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: examples: fix locations |
| The locations are actually false: they should include the location of |
| the semicolon (we print statements), but they don't. |
| |
| * examples/c++/glr/c++-types.test, examples/c++/glr/c++-types.yy, |
| * examples/c/glr/c++-types.test, examples/c/glr/c++-types.y, |
| * tests/cxx-type.at: |
| Fix locations and adjust expectations. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: tests: more macros |
| This will be useful to support changes in glr2.cc. |
| |
| tests/glr-regression.at |
| (Incorrect lookahead during deterministic GLR) |
| (Incorrect lookahead during nondeterministc GLR): |
| Introduce and use PRINT_LOOKAHEAD. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: tests: formatting changes |
| * tests/glr-regression.at: here. |
| Use %empty where applicable. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix definition for parser class name |
| * tests/local.at (AT_PARSER_CLASS): Fix it. |
| And use it. |
| |
| 2021-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: disable the installation of dmd |
| Currently all the builds fail: |
| |
| $ mkdir -p ~/dlang && wget https://dlang.org/install.sh -O ~/dlang/install.sh |
| --2021-01-10 06:05:39-- https://dlang.org/install.sh |
| Resolving dlang.org (dlang.org)... 162.217.114.56, 2607:fc50:1:ff02::5:0 |
| Connecting to dlang.org (dlang.org)|162.217.114.56|:443... connected. |
| ERROR: cannot verify dlang.org's certificate, issued by ‘CN=R3,O=Let's Encrypt,C=US’: |
| Unable to locally verify the issuer's authority. |
| To connect to dlang.org insecurely, use `--no-check-certificate'. |
| |
| * .travis.yml: Disable dmd. |
| |
| 2021-01-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove some redundant tests |
| * tests/calc.at: Cut the CI some slack. |
| |
| 2021-01-07 Adela Vais <adela.vais99@gmail.com> |
| |
| d: create getter for the number of errors from the parser |
| * data/skeletons/lalr1.d: Here. |
| |
| 2021-01-07 Adela Vais <adela.vais99@gmail.com> |
| |
| d: remove support for parse.error verbose |
| Without the history, D should not support this option. Before the |
| removal, 'detailed' and 'verbose' options generated the same code. |
| |
| * data/skeletons/lalr1.d: Here. |
| * doc/bison.texi: Adapt tests to use 'detailed' instead of 'verbose'. |
| * tests/calc.at: Document it. |
| |
| 2021-01-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: add support for %printer |
| Currently we display the addresses of the semantic values. Instead, |
| print the values. |
| |
| Add support for YY_USE across languages. |
| |
| * data/skeletons/c.m4, data/skeletons/d.m4 (b4_use): New. |
| * data/skeletons/bison.m4 (b4_symbol_actions): Use b4_use to be |
| portable to D. |
| |
| Add support for %printer, and use it. |
| |
| * data/skeletons/d.m4: Instead of duplicating what's already in |
| c-like.m4, include it. |
| (b4_symbol_action): New. |
| Differs from the one in bison.m4 in that it uses yyval/yyloc instead |
| of *yyvaluep and *yylocationp. |
| |
| * data/skeletons/lalr1.d (yy_symbol_print): Avoid calls to formatting, |
| just call write directly. |
| Use the %printer. |
| * examples/d/calc/calc.y: Specify a printer. |
| Enable traces when $YYDEBUG is set. |
| * tests/calc.at: Fix the use of %printer with D. |
| |
| 2021-01-06 Adela Vais <adela.vais99@gmail.com> |
| |
| d: remove unnecessary imports |
| * data/skeletons/lalr1.d: Here. |
| |
| 2021-01-06 Adela Vais <adela.vais99@gmail.com> |
| |
| d: remove yytnamerr usage |
| It is a backwards-compatible feature for the other parsers. |
| D should not support this option. |
| |
| * data/skeletons/d.m4: Here. |
| |
| 2021-01-06 Adela Vais <adela.vais99@gmail.com> |
| |
| d: add internationalisation support |
| The D parser implements this feature similarly to the C parser, |
| by using Gettext. Functions gettext() and dgettext() are |
| imported using extern(C). The internationalisation uses yysymbol_name |
| to report the name of the SymbolKinds. |
| |
| * data/skeletons/d.m4 (SymbolKind.toString.yytranslatable, |
| SymbolKind.toString.yysymbol_name: New), data/skeletons/lalr1.d: Here. |
| * doc/bison.texi: Document it. |
| * tests/calc.at: Test it. |
| |
| 2021-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: add support for variants |
| (Bison) Variants are extremely picky, which makes them both |
| annoying (lots of micro-details must be taken care of) and |
| precious (all the micro-details must be taken care of, in particular |
| object lifetime). |
| |
| So (i) each time a semantic value is stored, it must be stored in a |
| place that exists, and (ii) each time a semantic value is discarded, |
| its place must have been emptied. |
| |
| Example of (i) |
| |
| - new (&yys.value ()) value_type (s->value ()); |
| + {]b4_variant_if([[ |
| + new (&yys.value ()) value_type (); |
| + ]b4_symbol_variant([yy_accessing_symbol (s->yylrState)], |
| + [yys.value ()], [copy], [s->value ()])], [[ |
| + new (&yys.value ()) value_type (s->value ());]])[ |
| + } |
| |
| Example of (ii) |
| |
| yyparser.yy_destroy_ ("Error: discarding", |
| - yytoken, &yylval]b4_locations_if([, &yylloc])[); |
| + yytoken, &yylval]b4_locations_if([, &yylloc])[);]b4_variant_if([[ |
| + // Value type destructor. |
| + ]b4_symbol_variant([[YYTRANSLATE (this->yychar)]], [[yylval]], [[template destroy]])])[ |
| this->yychar = ]b4_namespace_ref[::]b4_parser_class[::token::]b4_symbol(empty, id)[; |
| |
| However, in some places we must not be "pure". In particular: |
| |
| glr_stack_item (const glr_stack_item& other) YY_NOEXCEPT YY_NOTHROW |
| : is_state_ (other.is_state_) |
| { |
| std::memcpy (raw_, other.raw_, union_size); |
| } |
| |
| still must use memcpy, because the constructor would change pred, and |
| it must not. This constructor is used only when resizing the stack, |
| in which case pred (which is relative) must not be "adjusted". |
| |
| The result works, but is messy. Its verbosity comes from at least two |
| factors: |
| |
| - we don't have support for complete symbols (binding kind, value and |
| location), and we should at least try to have it. That simplified |
| lalr1.cc a lot. |
| |
| - I have not tried to be smart and use 'move' when possible. As a |
| consequence many places have 'copy' and then 'destroy'. That kind |
| of clean up can be done once everything appears to be solid. |
| |
| * data/skeletons/glr2.cc: Be more rigorous in object lifetime. |
| In particular, don't forget to discard the lookahead when we're done |
| with it. |
| Call variant routines where needed. |
| Deal with plenty of details. |
| (b4_call_merger): Add support for variants. |
| Use references in mergers, rather than pointers. |
| |
| * examples/c++/glr/c++-types.yy: Exercise variants. |
| |
| 2021-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: strengthen the tests |
| On some experimentation I was running, the test suite was passing, yet |
| the example crashed when run in verbose mode. Let's add this case to |
| the test suite. |
| |
| * tests/cxx-type.at: Run all these tests in verbose mode too. |
| |
| 2021-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: I'm tired of Flex's warnings |
| * doc/bison.texi: Disable another warning I'm tired to see. |
| New releases would be most welcome. |
| |
| 2021-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: example: flush the output |
| * examples/c/glr/c++-types.y: Flush stdout so that the logs (on |
| stderr) and the effective output (on stdout) mix correctly. |
| While at it, be a bit more const-correct. |
| |
| 2021-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: YYUSE is private, make it YY_USE |
| This macro is not exposed to users, make start it with 'YY_'. |
| |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.c, |
| * data/skeletons/glr.cc, data/skeletons/glr2.cc, data/skeletons/lalr1.cc, |
| * src/parse-gram.c, tests/actions.at, tests/c++.at, tests/headers.at, |
| * tests/local.at (YYUSE): Rename as... |
| (YY_USE): this. |
| |
| 2021-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: example: use a printer |
| * examples/c++/glr/c++-types.yy: Here. |
| |
| 2021-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: consistently use the same wording in traces |
| * data/skeletons/glr.c, data/skeletons/glr2.cc (yyglrReduce): Traces |
| refer to "state 42", not to "state #42". |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: also equip semantic_option with self check |
| * data/skeletons/glr2.cc (semantic_option): Add MAGIC_, magic_ and |
| check_ members. |
| Use it. |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: log the execution of deferred actions |
| See "glr.c: log the execution of deferred actions". |
| |
| * data/skeletons/glr2.cc (yyuserAction): Take yyk as a new argument. |
| Rename argument yyn as yyrule for clarity. |
| Log before and after the user action. |
| Adjust callers to not call YY_REDUCE_PRINT and YY_SYMBOL_PRINT. |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: minor clean up |
| * data/skeletons/glr2.cc (YYUNDEFTOK): Now useless. |
| Formatting/coding style changes. |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: log the execution of deferred actions |
| Currently deferred reductions are not "verbose" at all: only immediate |
| reductions are displayed in the YYDEBUG traces. I don't understand |
| why. Besides it seems actually simpler the install the reduction |
| traces right around the user action inside yyuserAction rather that |
| around calls to yyuserAction. |
| |
| This only trouble is that yyuserAction does not know the stack number |
| it works on, so we have to pass it. And pass -1 when we are actually |
| running on a temporary stack. |
| |
| The glr example, on "T(x) + y;" as input, adds these logs, which |
| allow to see when the `<cast>` is built: |
| |
| Stack 0 Entering state 26 |
| Reduced stack 0 by rule 7 (line 108); action deferred. Now in state 7. |
| Stack 0 Entering state 7 |
| Reading a token |
| Next token is token '+' (1.6: ) |
| Stack 1 Entering state 27 |
| Reduced stack 1 by rule 13 (line 123); action deferred. Now in state 12. |
| Stack 1 Entering state 12 |
| Next token is token '+' (1.6: ) |
| Stack 1 dies. |
| Removing dead stacks. |
| On stack 0, shifting token '+' (1.6: ) |
| Stack 0 now in state #14 |
| +Reducing stack -1 by rule 6 (line 107): |
| + $1 = token identifier (1.3: x) |
| +-> $$ = nterm expr (1.3: x) |
| +Reducing stack -1 by rule 7 (line 108): |
| + $1 = token typename (1.0: T) |
| + $2 = token '(' (1.2: ) |
| + $3 = nterm expr (1.3: x) |
| + $4 = token ')' (1.4: ) |
| +-> $$ = nterm expr (1.0-3: <cast>(x,T)) |
| Returning to deterministic operation. |
| |
| * data/skeletons/glr.c (yyuserAction): Take yyk as a new argument. |
| Rename argument yyn as yyrule for clarity. |
| Log before and after the user action. |
| Adjust callers to not call YY_REDUCE_PRINT and YY_SYMBOL_PRINT. |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: reorder routines |
| The next commit wants to use YY_REDUCE_PRINT above its current |
| definition. Move it higher. |
| |
| * data/skeletons/glr.c (yylhsNonterm, YY_REDUCE_PRINT): Make available |
| earlier. |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: example: use the exact same display as in the C++ example |
| * examples/c/glr/c++-types.y: Add a space after the commas. |
| * examples/c/glr/c++-types.test: Adjust expectations. |
| |
| 2021-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: example: several improvements |
| * examples/c/glr/c++-types.y (node_print): New. |
| Use YY_LOCATION_PRINT instead of duplicating it. |
| And actually use it in the action instead of badly duplicating it. |
| (main): Add proper option support. |
| * examples/c/glr/c++-types.test: Adjust expectations on locations. |
| * examples/c++/glr/c++-types.yy: Fix bad iteration. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: the example requires Bison 3.8 |
| This will save us from generating the position.hh file. |
| |
| * src/parse-gram.y: Claim we are 3.8. |
| * examples/c++/glr/c++-types.yy: Require 3.8. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: associate it to its first definition, not the latest |
| Currently each time we meet %merge we record this location as the |
| defining location (and symbol). Instead, record the first definition. |
| |
| In the generated code we go from |
| |
| yy0->A = merge (*yy0, *yy1); |
| |
| to |
| |
| yy0->S = merge (*yy0, *yy1); |
| |
| where S was indeed the first symbol, and in the diagnostics we go from |
| |
| glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1> |
| 30 | sym2: sym3 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:29.18-24: note: previous declaration |
| 29 | sym1: sym2 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type2> |
| 31 | sym3: %merge<merge> { $$ = 0; } ; |
| | ^~~~~~~ |
| glr-regr18.y:30.18-24: note: previous declaration |
| 30 | sym2: sym3 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| |
| to |
| |
| glr-regr18.y:30.18-24: error: result type clash on merge function 'merge': <type2> != <type1> |
| 30 | sym2: sym3 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:29.18-24: note: previous declaration |
| 29 | sym1: sym2 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| glr-regr18.y:31.13-19: error: result type clash on merge function 'merge': <type3> != <type1> |
| 31 | sym3: %merge<merge> { $$ = 0; } ; |
| | ^~~~~~~ |
| glr-regr18.y:29.18-24: note: previous declaration |
| 29 | sym1: sym2 %merge<merge> { $$ = $1; } ; |
| | ^~~~~~~ |
| |
| where both duplicates are reported against definition 1, rather than |
| using definition 1 as a reference when diagnosing about definition 2, |
| and then 2 as a reference for 3. |
| |
| * src/reader.c (record_merge_function_type): Keep the first definition. |
| * tests/glr-regression.at: Adjust. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: test support for api.value.type=union |
| * tests/glr-regression.at: here. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: fix compatibility with api.value.type=union |
| Reported by Jot Dot. |
| https://lists.gnu.org/r/help-bison/2020-12/msg00014.html |
| |
| * data/skeletons/glr.c, data/skeletons/glr2.cc (b4_call_merger): Use |
| the symbol's slot, not its type. |
| * examples/c/glr/c++-types.y: Use explicit per-symbol typing together |
| with api.value.type=union. |
| (yylex): Use yytoken_kind_t. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: delegate the generation of calls to mergers to m4 |
| Don't generate C code from bison, leave that to the skeletons. |
| |
| * src/output.c (merger_output): Emit invocations to b4_call_merger. |
| * data/skeletons/glr.c, data/skeletons/glr2.cc (b4_call_merger): New. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: let mergers record a typing-symbol, rather than a type |
| Symbols are richer than types, and in M4 it is my simpler (and more |
| common) to deal with symbols rather than types. So let's associate |
| mergers to a symbol rather than a type name. |
| |
| * src/reader.h (merger_list): Replace the 'type' member by a symbol |
| member. |
| * src/reader.c (record_merge_function_type): Take a symbol as |
| argument, rather than a type name. |
| * src/output.c (merger_output): Adjust. |
| |
| 2020-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| %merge: clearer tests on diagnostics |
| * tests/glr-regression.at: Use caret errors. |
| |
| 2020-12-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: style: quoting changes |
| * data/skeletons/glr2.cc: Use stricter quoting rules. |
| |
| 2020-12-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: style: quoting changes |
| * data/skeletons/lalr1.cc: here. |
| |
| 2020-12-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: use references to the stack rather than pointers |
| Now that the lookahead macros (that used yystackp) are out of the way, |
| there is no reason to continue using a pointer. |
| |
| * data/skeletons/glr2.cc: Use yystack, a reference, rather that |
| yystackp, a pointer. |
| Fix tons of const-correctness issues. |
| |
| 2020-12-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: simplify names |
| Now that we no longer play dangerous games with macros, we can give |
| the lookahead's token kind its proper name. The content of yychar |
| _is_ raw (as opposed to yytoken), there's no reason to pleonasmicate |
| it (and thus to neologize). |
| |
| * data/skeletons/glr2.cc (glr_stack::yyrawchar): Rename as... |
| (glr_stack::yychar): this. |
| |
| 2020-12-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: get rid of the macros wrapping the lookahead |
| In glr.c, the macros yychar, yylval and yylloc allow to deal with |
| api.pure: sometimes they point to global variables (impure), sometimes |
| they point to the member variables (pure). |
| |
| There's no room for globals in glr2.cc. Besides, they map yychar to |
| yyrawchar, yylval to yyval, etc. which obfuscates what is actually |
| going on. |
| |
| * data/skeletons/glr2.cc (glr_stack::yyval, glr_stack::yyloc): Rename |
| as... |
| (glr_stack::yylval, glr_stack::yylloc): these, for clarity. |
| (yynerrs, yychar, yylval, yylloc, yystackp): Remove these macros. |
| (b4_yygetToken_call): Remove. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: reorganize the skeleton |
| Restore a more natural order: first define the macros and then use |
| them. Currently, some macros were defined between the moment the |
| header is issued, and then the implementation file. As a result, it |
| was possible for the header and the implementation to not use the same |
| versions of the macros. |
| |
| * data/skeletons/glr2.cc: Define the macros first, then use them. |
| * data/skeletons/lalr1.cc: Minor comment and quoting changes. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: example: simplify |
| * examples/c++/glr/c++-types.yy: Formatting changes. |
| Remove unused support for '@'. |
| * examples/c/glr/c++-types.y: Ditto. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: make yyreportTree a member function of semantic_option |
| * data/skeletons/glr2.cc (yy_accessing_symbol, yylhsNonterm): Define |
| ealier. |
| (state_stack::yyreportTree): Move to... |
| (semantic_option::yyreportTree): here. |
| Adjust dependencies. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: pass references to yyreportAmbiguity |
| * data/skeletons/glr2.cc (yyreportAmbiguity): Use references. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use yyval only, not yysval |
| * data/skeletons/glr.c, data/skeletons/glr2.cc: Use yyval, as in |
| the other skeletons. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: pass location by const ref to yyglrShift |
| * data/skeletons/glr2.cc (glr_state.yyglrShift): Take the location by |
| const&. |
| Remove useless `inline`. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename semanticVal as value |
| * data/skeletons/README-D.txt: Remove, now useless and obsolete. |
| * data/skeletons/glr2.cc, examples/d/calc/calc.y, |
| * tests/calc.at, tests/d.at, tests/scanner.at (semanticVal): Replace |
| with... |
| (value): this. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: remove dead comments |
| * data/skeletons/glr2.cc: We no longer wrap glr.c here. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: use YYCDEBUG, not YY_DEBUG_STREAM |
| * data/skeletons/glr2.cc (YY_DEBUG_STREAM): Rename as... |
| (YYCDEBUG): this, as in lalr1.cc. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: formatting changes |
| * data/skeletons/glr2.cc: here. |
| Remove useless `inline`. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: don't use YYSTYPE/YYLTYPE at all |
| * data/skeletons/glr2.cc: Define value_type and location_type where |
| needed, and use them only. |
| (yyuserMerge): Make it a member function of the glr_state class. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't require YYSTYPE/YYLTYPE to be defined in C++ |
| * tests/glr-regression.at: Use AT_YYSTYPE/AT_YYLTYPE to generate |
| yy::parser::value_type and yy::parser::location_type in C++. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: rename semantic_type as value_type |
| We always refer to the triplet "kind, value, location". All of them |
| are nouns, and we support api.value.type and api.location.type. On |
| this regard, "semantic_type" was a poor choice. Make it "value_type". |
| |
| The test suite was not updated to use value_type, on purpose, to |
| enforce backward compatibility. |
| |
| * data/skeletons/c++.m4, data/skeletons/glr.cc, data/skeletons/glr2.cc, |
| * data/skeletons/variant.hh, doc/bison.texi: Define value_type rather |
| than semantic_type. |
| Add a backward compatibility typedef. |
| * examples/c++/glr/c++-types.yy: Migrate. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: more about sanitizers |
| * README-hacking.md: here. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: simplify |
| * data/skeletons/glr2.cc (glr_state_set::yyremoveDeletes): Use |
| vector::resize rather than vector::erase. |
| (glr_state::copyFrom): Merge into... |
| (glr_state::operator=): here. |
| Valentin wanted each assignment to be explicit, hence copyFrom rather |
| that operator=. But in 0a82316e54fead8c3f1cf41d2213c868ab88f508 |
| (glr2.cc: example: use objects (not pointers) to represent the AST), |
| in order to get real objects to be processed correctly, we had to |
| introduce the assignment operator. Afterward, we also introduced a |
| full implementation of the copy-ctor, independent of copyFrom. As a |
| result, today the only invocation of copyFrom is from the assignment |
| operator. Simplify this. |
| |
| 2020-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix warnings about uninitialized locations |
| With GCC10, the CI shows tons of warnings such as |
| (327. actions.at:374: testing Initial location: glr2.cc): |
| |
| input.cc: In member function 'YYRESULTTAG glr_stack::yyglrReduce(state_set_index, rule_num, bool)': |
| input.cc:1357:11: error: '<anonymous>.glr_state::yyloc' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| 1357 | yyloc = other.yyloc; |
| | ~~~~~~^~~~~~~~~~~~~ |
| |
| This is because we don't have the constructors for locations. But we |
| should have them! That's only because of glr.cc that ctors were not |
| enabled by default. In glr2.cc, they should. |
| |
| That fixes all the warnings when Bison's locations are used. However, |
| when user-defined locations without constructor are used, we still |
| have: |
| |
| 550. calc.at:1409: testing Calculator glr2.cc %locations api.location.type={Span} ... |
| calc.cc: In member function 'YYRESULTTAG glr_stack::yyglrReduce(state_set_index, rule_num, bool)': |
| calc.cc:1261:11: error: '<anonymous>.glr_state::yyloc' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| 1261 | yyloc = other.yyloc; |
| | ~~~~~~^~~~~~~~~~~~~ |
| |
| To address this case, we need glr_state to explicily initialize its |
| yyloc member. |
| |
| * data/skeletons/glr2.cc: Use genuine objects, with ctors, for position |
| and location. |
| (glr_state): Explicitly initialize yyloc in the constructors. |
| |
| 2020-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: provide glr_state with a genuine copy-constructor |
| The copy constructor was (lazily) implemented by a call to copyFrom. |
| Unfortunately copyFrom reads yyresolved from the destination (and |
| source), and in the case of the copy-ctor this is random garbagge, |
| which UBSAN catches: |
| |
| glr-regr2a.cc:1072:10: runtime error: load of value 7, which is not a valid value for type 'bool' |
| |
| Rather than defining yyresolved before calling copyFrom, let's just |
| provide a genuine cpy-ctor for glr_state. |
| |
| * data/skeletons/glr2.cc (glr_state::glr_state): Implement properly. |
| |
| 2020-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: beware of self-assignment |
| In yycompressStack: |
| |
| while (yyr != YY_NULLPTR) |
| { |
| nextFreeItem->check_ (); |
| yyr->check_(); |
| nextFreeItem->setState(*yyr); |
| glr_state& nextFreeState = nextFreeItem->getState(); |
| yyr = yyr->pred(); |
| nextFreeState.setPred(&(nextFreeItem - 1)->getState()); |
| setFirstTop(&nextFreeState); |
| ++nextFreeItem; |
| } |
| |
| it is possible that nextFreeItem and yyr are actually the same state. |
| In which case `nextFreeItem->setState(*yyr)` does really bad things. |
| |
| * data/skeletons/glr2.cc (glr_stack_item::setState): Beware of |
| self-assignment. |
| |
| 2020-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: comment changes |
| * data/skeletons/glr.c: A bit more doc. |
| (yypstates): Rename yyst (only occurrence) to yys (commonly used for |
| yyGLRState). |
| * data/skeletons/glr2.cc: Ditto. |
| Prefer '\n' to "\n". |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: remove unnecessary methods from the Lexer interface |
| The complete symbol approach in yylex removes the need for the methods |
| semanticVal, startPos and endPos, which were used when the values were |
| reported separately. |
| |
| * data/skeletons/lalr1.d: Here. |
| * doc/bison.texi: Remove sections about the three methods. |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Remove the unused methods. |
| * tests/calc.at, tests/d.at, tests/scanner.at: Test it. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: use Location and Position aliases in the backend |
| * data/skeletons/lalr1.d: Here. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: remove unnecessary comparison from YYParser.parse() |
| * data/skeletons/lalr1.d: Here. |
| |
| 2020-12-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: address syntax-check diagnostics |
| * examples/c/glr/c++-types.y: Formatting changes. |
| * po/POTFILES.in: Add missing files. |
| * src/reader.c: Remove useless include. |
| * tests/calc.at: Avoid magic values for exit. |
| Obfuscate calls to error. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: create alias Position for YYPosition |
| * data/skeletons/d.m4 (b4_public_types_declare): Here. |
| * data/skeletons/lalr1.d: Adjust. |
| * doc/bison.texi: Document it. |
| * examples/d/calc/calc.y: Use it. |
| * tests/calc.at: Test it. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: create alias Value for YYSemanticType |
| * data/skeletons/d.m4: Here. |
| * data/skeletons/lalr1.d, examples/d/calc/calc.y, examples/d/simple/calc.y: Adjust. |
| * tests/calc.at, tests/d.at, tests/scanner.at: Test it. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: create alias Location for YYLocation |
| * data/skeletons/d.m4: Here. |
| * doc/bison.texi: Document it. |
| * examples/d/calc/calc.y: Adjust. |
| * tests/calc.at: Test it. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: remove yychar from YYParse.parse() |
| The yychar variable was keeping the external form of the token (the |
| TokenKind). As the D parser translates the token to its internal |
| form (the SymbolKind) inside the struct Symbol, there is no need for |
| yychar anymore. |
| |
| * data/examples/lalr1.d (yychar): Remove. |
| Use only yytoken. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: reduce verbosity for returning the location from yylex() |
| * examples/d/calc/calc.y (start, end): Replace by this... |
| (location): new member variable in the Lexer class. |
| Use it. |
| * tests/calc.at: Use the defined location variable. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: m4 style consistency fix |
| * data/skeletons/lalr1.d: Here. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: create alias Symbol for YYParse.Symbol |
| * data/skeletons/lalr1.d: Here. |
| * doc/bison.texi: Document it. |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Adjust. |
| * tests/calc.at, tests/d.at, tests/scanner.at: Test it. |
| |
| 2020-12-21 Adela Vais <adela.vais99@gmail.com> |
| |
| d: change name of YYParser.Symbol's semanticValue() to value() |
| Member value was renamed to value_ to avoid the name clash. |
| |
| * data/skeletons/d.m4: Change member names. |
| * data/skeletons/lalr1.d: Adjust. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: formatting changes |
| * data/skeletons/glr2.cc (glr_state): here. |
| (glr_state::MAGIC): Make it easier to recognize in decimal. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: call the destructor in a way that complies with clang |
| examples/c++/glr/c++-types.cc:721:24: error: |
| expected the class name after '~' to name a destructor |
| yysval.YYSTYPE::~semantic_type (); |
| ^ |
| |
| Using a local typedef, for some reaon, result in clang complaining |
| about a useless local typedef. Since anyway we don't want to keep on |
| using YYSTYPE and YYLTYPE, it is time to introduce proper typedefs to |
| reach these guys. And to be slightly in advance of the other |
| skeletons: use value_type, not semantic_type. This is much more |
| consistent with our use of the (kind, value, location) triplet. |
| |
| * data/skeletons/glr2.cc (glr_state::value_type) |
| (glr_state::location_type): New. |
| (glr_state::~glr_state): Use value_type to name the dtor. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: example: use objects (not pointers) to represent the AST |
| Currently we are using pointers. The whole point of |
| glr2.cc (vs. glr.cc) is precisely to allow genuine C++ objects to be |
| semantic values. Let's make that work. |
| |
| * data/skeletons/glr2.cc (glr_state::glr_state): Be sure to initialize |
| yysval. |
| (glr_state): Add copy-ctor, assignment and dtor. |
| (glr_state::copyFrom): Be sure to initialize the destination if it was |
| not. |
| (glr_state::~glr_state): Destroy the semantic value. |
| * examples/c++/glr/ast.hh: Rewrite so that we use genuine objects, |
| rather than a traditional OOP hierarchy that requires to deal with |
| pointers. |
| With help from Bruno Belanyi <bruno.belanyi@epita.fr>. |
| * examples/c++/glr/c++-types.yy: Remove memory management. |
| Use true objects. |
| (main): Don't reach yydebug directly. |
| |
| * examples/c++/glr/local.mk: We need C++11. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: more checks |
| * data/skeletons/glr2.cc: Clarify use of magic numbers. |
| (glr_stack_item::getState): Check the returned state. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix GLR stack expansion |
| When expanding the GLR stack, none of the pointers were updated to |
| reflect the new location of the displaced objects. |
| |
| This fixes |
| |
| 748: Incorrect lookahead during nondeterministic GLR: glr2.cc |
| |
| * data/skeletons/glr2.cc (yyexpandGLRStack): Update the split point |
| and the stack tops. |
| (reduceToOneStack): Factor a bit. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: factor the computation of the accessing symbol |
| * data/skeletons/glr2.cc (yy_accessing_symbol): New, as in glr.c. |
| Use it. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix calling conventions for yyexpandGLRStackIfNeeded |
| This test fails: |
| |
| 748: Incorrect lookahead during nondeterministic GLR: glr2.cc |
| |
| It consumes lots of stack space, so at some point we need to expand |
| it. Because of Boolean logic mistakes, we then claim |
| memory-exhausted (first error). Hence we jump to cleaning the |
| stack (popall_), calling all the destructors, and at some point we |
| crash with heap-use-after-free (second error). |
| |
| This commit fixes the first error. Unfortunately, even though we now |
| do expand the stack, we crash again with (another) |
| heap-use-after-free, not addressed here. |
| |
| Eventually, we should make sure popall_() properly works. |
| |
| * data/skeletons/glr2.cc (yyexpandGLRStackIfNeeded): Return true iff |
| success (i.e., memory not exhausted). |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: example: use streams and accept arguments |
| From a debugger, it is easier to pass a file name than working on |
| stdin. |
| |
| * examples/c++/glr/c++-types.yy: Reduce scopes. |
| Avoid YYSTYPE/YYLTYPE: use the C++ types. |
| (input, process): New. |
| (main): Use them. |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: formatting changes |
| * data/skeletons/glr.c: Formatting changes. |
| * data/skeletons/glr2.cc: Ditto. |
| (glr_state_set::INITIAL_NUMBER_STATES): Remove, unused (and useless: |
| let std::vector deal with that). |
| |
| 2020-12-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: better comments for some tables |
| And also, remove the incorrect indentation of these comments: |
| |
| - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ |
| +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ |
| static const yytype_int8 yyr2[] = |
| { |
| 0, 2, 4, 0, 2, 1, 1, 1, 3, 2, |
| |
| I don't remember why this indentation was added (in |
| 0991e29b75f192570b6fac1ba23657ab4f3509ee), but it seems wrong, |
| at least for yacc.c. I suspect this was done with lalr1.cc (where |
| this is embeded in the class definition, so it should be indented), |
| but today lalr1.cc uses other routines to output these comments. |
| |
| * data/skeletons/bison.m4 (b4_integral_parser_tables_map): Improve the |
| wording of the comments of some tables. |
| * data/skeletons/c.m4 (b4_integral_parser_table_define): Remove |
| indentation. |
| |
| 2020-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix glr_stack_item::setState |
| A glr_stack_item has "raw" memory to store either a glr_state or a |
| semantic_option. glr_stack_item::setState stores a state using a copy |
| assignment. However, this is more like a construction: we are |
| starting from "raw" memory, so use the placement new operator instead. |
| While it probably makes no difference when parse.assert is disabled, |
| it does make one when it is: the constructor properly initialize the |
| magic number, the assignment does not. So without these changes, the |
| next commit (which stores genuine objects in semantic values) fails |
| tests 712 and 730 because of incorrect magic numbers. |
| |
| * data/skeletons/glr2.cc (glr_stack_item::setState): Build the state, |
| don't just copy it. |
| |
| 2020-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: more self checks |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: style: s/Type/Kind/g |
| * data/skeletons/glr2.cc (YY_SYMBOL_PRINT): Use Kind, not Type. |
| As in the other skeletons. |
| |
| 2020-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: example: style: add missing copyright headers |
| * examples/c++/glr/ast.hh, examples/c++/glr/c++-types.yy: here. |
| * examples/c++/glr/local.mk: Fix distribution of ast.hh. |
| |
| 2020-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: example: address Clang warnings |
| ast.hh:24:7: error: 'Node' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Werror,-Wweak-vtables] |
| class Node |
| ^ |
| ast.hh:57:7: error: 'Nterm' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Werror,-Wweak-vtables] |
| class Nterm : public Node |
| ^ |
| ast.hh:102:7: error: 'Term' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Werror,-Wweak-vtables] |
| class Term : public Node |
| ^ |
| |
| * examples/c++/glr/ast.hh: Define the destructors out of the class |
| definition. |
| This does not change anything, it is still in the header, but that |
| does pacify clang. |
| |
| 2020-12-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: tests: add support for the YYDEBUG envvar |
| When debugging these parsers, we really need debug traces. |
| Enable them, and bind them to $YYDEBUG. |
| |
| * tests/glr-regression.at: Support the YYDEBUG envvar. |
| As a consequence, now that syntactic ambiguities are reported, adjust |
| the expected output. |
| (No users destructors if stack 0 deleted): Don't return 0 on memory |
| exhaustion, really return the parser's status, and adust expectations. |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: comment changes |
| * data/skeletons/glr.c (yycompressStack): Reduce scope, and import some |
| nice comments from glr2.cc. |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: make the example more C++ |
| Currently the example really looks like C. Instead of a union of |
| structs to implement the AST, use a hierarchy. It would be nice to |
| feature a C++17 version with std variants. |
| |
| * examples/c++/glr/c++-types.yy (Node, free_node, new_nterm) |
| (new_term): Move into... |
| * examples/c++/glr/ast.hh: here, a proper C++ hierarchy. |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: make yyparse a member function |
| Amusingly enough, glr2.cc still had its core function, yyparse, being |
| a free function instead of a member function. |
| |
| * data/skeletons/glr2.cc (yyparse): Remove this free function called |
| from yyparser::parse. Inline its body into... |
| (yyparser::parse): this member function. |
| This requires moving a bit the yychar, etc. macros. |
| Access to token can be simplified (the |
| b4_namespace_ref::b4_parser_class prefix is no longer needed). |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: being pure is not an option |
| Remove the useless conditional b4_pure_if: the skeleton is, of course, |
| pure (no global variables). Make glr2.cc intrinsically pure. |
| |
| * data/skeletons/glr2.cc (b4_pure_if): Remove definition and uses. |
| (b4_lex): New. |
| Stolen from lalr1.cc to avoid needing to use the one from c.m4. |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix yycompressStack |
| Currently, yycompressStack expects the free items to be states only. |
| That's not the case. |
| |
| Fixes 712 and 730 pass. 748 still fails, but later and |
| differently (heap-use-after-free). |
| |
| * data/skeletons/glr2.cc (glr_stack_item::setState): New. |
| (glr_stack_item::yycompressStack): Use it. |
| * tests/glr-regression.at: Adjust. |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix pointer arithmethics |
| A glr_state keeps tracks of its predecessor using an offset relative |
| to itself (i.e., pointer subtraction). Unfortunately we sometimes |
| have to compute offsets for pointers that live in different |
| containers, in particular in yyfillin. In that case there is no |
| reason for the distance between the two objects to be a multiple of |
| the object size (0x40 on my machine), and the resulting ptrdiff_t may |
| be "wrong", i.e., it does allow to recover one from the other. We |
| cannot use "typed" pointer arithmetics here, the Euclidean division |
| has it wrong. So use "plain" char* pointers. |
| |
| Fixes 718 (Duplicate representation of merged trees: glr2.cc) and |
| examples/c++/glr/c++-types. |
| |
| Still XFAIL: |
| |
| 712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc |
| 730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc |
| 748: Incorrect lookahead during nondeterministic GLR: glr2.cc |
| |
| * data/skeletons/glr2.cc (glr_state::as_pointer_): New. |
| (glr_state::pred): Use it. |
| * examples/c++/glr/c++-types.test: The test passes. |
| * tests/glr-regression.at (Duplicate representation of merged trees: |
| glr2.cc): Passes. |
| |
| 2020-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: style fixes |
| * data/skeletons/glr2.cc: Formatting changes. |
| |
| 2020-12-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: add sanity check in glr_state |
| The use of YY_IGNORE_NULL_DEREFERENCE_BEGIN/END in `check_` is to |
| please GCC 10: |
| |
| glr-regr8.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state&)': |
| glr-regr8.cc:1433:21: error: potential null pointer dereference [-Werror=null-dereference] |
| 1433 | YYASSERT (this->magic_ == MAGIC); |
| | ~~~~~~^~~~~~ |
| glr-regr8.cc:905:40: note: in definition of macro 'YYASSERT' |
| 905 | # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) |
| | ^~~~~~~~~ |
| |
| * data/skeletons/glr2.cc (glr_state::check_): New. |
| Use it in the member functions. |
| |
| 2020-12-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: add sanity checks in glr_stack_item |
| We obviously have broken pointer arithmetics that hands us |
| glr_stack_items that are not glr_stack_items. Have a simple check for |
| this, to have earlier failures. |
| |
| * data/skeletons/glr2.cc (glr_stack_item::check_): New. |
| Use it. |
| (glr_stack_item::contents): Avoid the useless struct. |
| Fix minor stylistic issues. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: run the glr-regression tests |
| When installed on master as of 2020-12-05 (on top of "glr2.cc: fix |
| when the stack is not expandable", almost all the GLR regression tests |
| fail (with a SEGV): |
| |
| 709: Badly Collapsed GLR States: glr2.cc FAILED (glr-regression.at:130) |
| 712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc FAILED (glr-regression.at:275) |
| 715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:404) |
| 718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:502) |
| 721: User destructor for unresolved GLR semantic value: glr2.cc FAILED (glr-regression.at:566) |
| 724: User destructor after an error during a split parse: glr2.cc FAILED (glr-regression.at:624) |
| 727: Duplicated user destructor for lookahead: glr2.cc FAILED (glr-regression.at:724) |
| 730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc FAILED (glr-regression.at:823) |
| 733: No users destructors if stack 0 deleted: glr2.cc FAILED (glr-regression.at:911) |
| 736: Corrupted semantic options if user action cuts parse: glr2.cc FAILED (glr-regression.at:974) |
| 739: Undesirable destructors if user action cuts parse: glr2.cc FAILED (glr-regression.at:1042) |
| 742: Leaked semantic values if user action cuts parse: glr2.cc FAILED (glr-regression.at:1173) |
| 748: Incorrect lookahead during nondeterministic GLR: glr2.cc FAILED (glr-regression.at:1546) |
| 751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1639) |
| 754: Leaked lookahead after nondeterministic parse syntax error: glr2.cc FAILED (glr-regression.at:1710) |
| 757: Uninitialized location when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1794) |
| 766: Predicates: glr2.cc FAILED (glr-regression.at:2045) |
| |
| These pass: |
| |
| 745: Incorrect lookahead during deterministic GLR: glr2.cc ok |
| 760: Missed %merge type warnings when LHS type is declared later: glr2.cc ok |
| 763: Ambiguity reports: glr2.cc ok |
| |
| With Valentin Tolmer's "glr2.cc: Fix memory corruption bug" commit, |
| these test fail "gracefully": |
| |
| 712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc FAILED (glr-regression.at:268) |
| 730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc FAILED (glr-regression.at:816) |
| 748: Incorrect lookahead during nondeterministic GLR: glr2.cc FAILED (glr-regression.at:1539) |
| |
| And these do not end: |
| |
| 709: Badly Collapsed GLR States: glr2.cc FAILED (glr-regression.at:123) |
| 715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:397) |
| 718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:495) |
| 751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1632) |
| |
| With "tests: glr2.cc: run the glr-regression tests", none loop, and |
| 709, 715, and 751 pass. Only 718 still fails. |
| |
| * tests/glr-regression.at: Run all the tests with glr2.cc. |
| * tests/local.at (AT_GLR2_CC_IF): New. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: use the same format for traces as glr.c |
| * data/skeletons/glr2.cc: here. |
| This allows to share the same expected output. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: add support for parse.assert |
| * data/skeletons/glr2.cc: Fake support of parse.assert, so that the |
| tests can use it without failing. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix yyresolveValue |
| When "tests: glr2.cc: run the glr-regression tests" tests are run, |
| before this commit the following tests used to loop endlessly: |
| |
| 709: Badly Collapsed GLR States: glr2.cc FAILED (glr-regression.at:123) |
| 715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:397) |
| 718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:495) |
| 751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1632) |
| |
| After this commit, no test loops and 709, 715, and 751 pass. Only 718 |
| still fails. |
| |
| * data/skeletons/glr2.cc (yyresolveValue): Add missing incrementation |
| of the iteration variable. |
| |
| 2020-12-06 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: misc cleanups |
| * data/skeletons/glr2.cc: Use 'const' on variables and applicable |
| member functions. |
| Improve comments. |
| Use references where applicable. |
| Enforce names_like_this, notLikeThis. |
| Reduce scopes. |
| |
| 2020-12-06 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: fix memory corruption bug |
| * data/skeletons/glr2.cc (yyremoveDeletes): Remove double-increment in |
| the loop. |
| (glr_state::copyFrom): Handle gracefully when other is resolved. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: turn some pointers into references |
| * data/skeletons/glr2.cc: Prefer references to pointers. |
| Add a few more const. |
| |
| 2020-12-06 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: use 'const' for some constant local variables |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix when the stack is not expandable |
| * data/skeletons/glr2.cc (yyexpandGLRStackIfNeeded): Fix the |
| implementation when !YYSTACKEXPANDABLE. |
| |
| 2020-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: fix line numbers in logs |
| * data/skeletons/glr.c (yyglrReduce): Fix line numbers. |
| * tests/glr-regression.at: Fix expectations. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: glr: run the glr regression tests with glr.cc |
| * tests/glr-regression.at: Adjust the tests to be more independent of |
| the language, and run them with glr.cc. |
| Some tests relied on yychar, yylval and yylloc being global variables: |
| pass arguments instead. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: glr: prepare for more languages |
| * tests/glr-regression.at: Wrap each test in an AT_TEST. |
| Call it with glr.c. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: glr: use AT_FULL_COMPILE |
| * tests/glr-regression.at: Instead of using AT_BISON_CHECK and |
| AT_COMPILE, use AT_FULL_COMPILE. This is shorter, and makes it easier |
| to add support for other programming languages. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: glr: prefer directives to warnings |
| * tests/glr-regression.at: Use %expect and %expect-rr in the grammar |
| files, rather than accepting diagnostics. |
| This will make it easier to support other programming languages. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: factor the access to token kinds |
| * tests/local.at (AT_BISON_OPTION_PUSHDEFS): Define AT_TOKEN. |
| (AT_BISON_OPTION_POPDEFS): Undefine it. |
| * tests/actions.at, tests/c++.at, tests/calc.at: Use AT_TOKEN. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: formatting changes |
| * tests/local.at: here. |
| |
| 2020-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: don't "leak" yyparse |
| When using glr.cc, the C function yyparse is an internal detail that |
| should not be exposed. Users might call it by accident (I did). |
| |
| * data/skeletons/glr.c (yyparse): When used for glr.cc, rename as yy_parse_impl. |
| * data/skeletons/glr.cc: Adjust. |
| |
| 2020-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| portability: beware of GCC 4.6 |
| src/reader.c: In function 'grammar_start_symbols_add': |
| src/reader.c:67:24: error: declaration of 'dup' shadows a global declaration [-Werror=shadow] |
| |
| * src/reader.c (grammar_start_symbols_add): Rename dup as dupl. |
| |
| 2020-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tables: avoid warnings and save bits |
| The yydefgoto table uses -1 as an invalid for an impossible case (we |
| never use yydefgoto[0], since it corresponds to the reduction to |
| $accept, which never happens). Since yydefgoto is a table of state |
| numbers, this -1 forces a signed type uselessly, which (1) might |
| trigger compiler warnings when storing a value from yydefgoto into a |
| state number (nonnegative), and (2) wastes bits which might result in |
| using a int16 where a uint8 suffices. |
| |
| Reported by Jot Dot <jotdot@shaw.ca>. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00027.html |
| |
| * src/tables.c (default_goto): Use 0 rather than -1 as invalid value. |
| * tests/regression.at: Adjust. |
| |
| 2020-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: use noexcept where appropriate |
| Reported by Don Macpherson. |
| https://github.com/akimd/bison/issues/63 |
| https://github.com/akimd/bison/issues/64 |
| |
| * data/skeletons/c++.m4, data/skeletons/lalr1.cc: here. |
| |
| 2020-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: check duplicates |
| * src/symlist.h, src/symlist.c (symbol_list_find_symbol) |
| (symbol_list_last): New. |
| (symbol_list_append): Use symbol_list_last. |
| * src/reader.c (grammar_start_symbols_add): Check and discard duplicates. |
| * tests/input.at (Duplicate %start symbol): New. |
| * tests/reduce.at (Bad start symbols): Add the multistart keyword. |
| |
| 2020-11-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: change the format of a debugging function |
| * src/symlist.c (symbol_list_syms_print): Use braces to make traces |
| easier to read. |
| |
| 2020-11-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename grammar_start_symbols_set as grammar_start_symbols_add |
| * src/reader.h, src/reader.c (grammar_start_symbols_set): Rename as... |
| (grammar_start_symbols_add): this. |
| Adjust dependencies. |
| |
| 2020-11-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: update |
| |
| 2020-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: also use the api.prefix in the implementation |
| We were declaring foo_parse_expr but implementing yyparse_expr. |
| |
| * data/skeletons/yacc.c (_b4_define_sub_yyparse): Use api.prefix for |
| the parse function name. |
| |
| 2020-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: using stow to set up a bison herd |
| * README-hacking.md (Stow): New. |
| |
| 2020-11-20 Adela Vais <adela.vais99@gmail.com> |
| |
| d: change YYLocation's type from class to struct |
| This avoids heap allocation and gives minimal costs for the |
| creation and destruction of the YYParser.Symbol struct if |
| the location tracking is active. |
| |
| Suggested by H. S. Teoh. |
| |
| * data/skeletons/lalr1.d: Here. |
| * doc/bison.texi: Document it. |
| * examples/d/calc/calc.y: Adjust. |
| * tests/calc.at: Test it. |
| |
| 2020-11-20 Adela Vais <adela.vais99@gmail.com> |
| |
| d: change the return value of yylex from TokenKind to YYParser.Symbol |
| The complete symbol approach was deemed to be the right approach for Dlang. |
| Now, the user can return from yylex() an instance of YYParser.Symbol structure, |
| which binds together the TokenKind, the semantic value and the location. Before, |
| the last two were reported separately to the parser. |
| Only the user API is changed, Bisons's internal structure is kept the same. |
| |
| * data/skeletons/d.m4 (struct YYParser.Symbol): New. |
| * data/skeletons/lalr1.d: Change the return value. |
| * doc/bison.texi: Document it. |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Demonstrate it. |
| * tests/calc.at, tests/scanner.at: Test it. |
| |
| 2020-11-20 Martin Rehak <martin.rehak@oracle.com> |
| |
| examples: avoid "unbound variable" errors |
| When the shell option `nounset` is set, we may get "unbound variable" |
| errors. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00013.html |
| |
| * examples/test (diff_opts): Be sure to initialize it. |
| |
| 2020-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| * Makefile.am (gitsort): New. |
| Use it. |
| |
| 2020-11-18 Adela Vais <adela.vais@yahoo.com> |
| |
| d: add support for lookahead correction |
| When using lookahead correction, the method YYParser.Context.getExpectedTokens |
| is not annotated with const, because the method calls yylacCheck, which is not |
| const. Also, because of yylacStack and yylacEstablished, yylacCheck needs to |
| be called from the context of the parser class, which is sent as parameter to |
| the Context's constructor. |
| |
| * data/skeletons/lalr1.d (yylacCheck, yylacEstablish, yylacDiscard, |
| yylacStack, yylacEstablished): New. |
| (Context): Use it. |
| * doc/bison.texi: Document it. |
| * tests/calc.at: Check it. |
| |
| 2020-11-18 Adela Vais <adela.vais@yahoo.com> |
| |
| d: change the name of the custom error message function to reportSyntaxError |
| Changed from syntax_error to reportSyntaxError to be similar to the Java parser. |
| |
| * data/skeletons/lalr1.d: Change the function name. |
| * doc/bison.texi: Document it. |
| * tests/local.at: Adjust. |
| |
| 2020-11-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * upstream/maint: |
| maint: post-release administrivia |
| version 3.7.4 |
| |
| 2020-11-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-11-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.4 |
| * NEWS: Record release date. |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer b4_symbol(empty, ...) to b4_symbol(-2, ...) |
| * data/skeletons/c.m4: here. |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * maint: |
| c++: shorten the assertions that check whether tokens are correct |
| c++: don't glue functions together |
| lalr1.cc: YY_ASSERT should use api.prefix |
| c++: don't use YY_ASSERT at all if parse.assert is disabled |
| c++: style: follow the Bison m4 quoting pattern |
| yacc.c: provide the Bison version as an integral macro |
| regen |
| style: make conversion of version string to int public |
| %require: accept version numbers with three parts ("3.7.4") |
| yacc.c: fix #definition of YYEMPTY |
| gnulib: update |
| doc: fix incorrect section title |
| doc: minor grammar fixes in counterexamples section |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: shorten the assertions that check whether tokens are correct |
| Before: |
| |
| YY_ASSERT (tok == token::YYEOF || tok == token::YYerror || tok == token::YYUNDEF || tok == 120 || tok == 49 || tok == 50 || tok == 51 || tok == 52 || tok == 53 || tok == 54 || tok == 55 || tok == 56 || tok == 57 || tok == 97 || tok == 98); |
| |
| After: |
| |
| YY_ASSERT (tok == token::YYEOF |
| || (token::YYerror <= tok && tok <= token::YYUNDEF) |
| || tok == 120 |
| || (49 <= tok && tok <= 57) |
| || (97 <= tok && tok <= 98)); |
| |
| Clauses are now also wrapped on several lines. This is nicer to read |
| and diff, but also avoids pushing Visual C++ to its arbitrary |
| limits (640K and lines of 16380 bytes ought to be enough for anybody, |
| otherwise make an C2026 error). |
| |
| The useless parens are there for the dummy warnings about |
| precedence (in the future, will we also have to put parens in |
| `1+2*3`?). |
| |
| * data/skeletons/variant.hh (_b4_filter_tokens, b4_tok_in, b4_tok_in): |
| New. |
| (_b4_token_constructor_define): Use them. |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: don't glue functions together |
| * data/skeletons/bison.m4 (b4_type_foreach): Accept a separator. |
| * data/skeletons/c++.m4: Use it. |
| And fix an incorrect comment. |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: YY_ASSERT should use api.prefix |
| Working on the previous commit I realized that YY_ASSERT was used in |
| the generated headers, so must follow api.prefix to avoid clashes when |
| multiple C++ parser with variants are used. |
| |
| Actually many more macros should obey api.prefix (YY_CPLUSPLUS, |
| YY_COPY, etc.). There was no complaint so far, so it's not urgent |
| enough for 3.7.4, but it should be addressed in 3.8. |
| |
| * data/skeletons/variant.hh (b4_assert): New. |
| Use it. |
| * tests/local.at (AT_YYLEX_RETURN): Fix. |
| * tests/headers.at: Make sure variant-based C++ parsers are checked |
| too. |
| This test did find that YY_ASSERT escaped renaming (before the fix in |
| this commit). |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: don't use YY_ASSERT at all if parse.assert is disabled |
| In some extreme situations (about 800 tokens), we generate a |
| single-line assertion long enough for Visual C++ to discard the end of |
| the line, thus falling into parse ends for the missing `);`. On a |
| shorter example: |
| |
| YY_ASSERT (tok == token::TOK_YYEOF || tok == token::TOK_YYerror || tok == token::TOK_YYUNDEF || tok == token::TOK_ASSIGN || tok == token::TOK_MINUS || tok == token::TOK_PLUS || tok == token::TOK_STAR || tok == token::TOK_SLASH || tok == token::TOK_LPAREN || tok == token::TOK_RPAREN); |
| |
| Whether NDEBUG is used or not is irrelevant, the parser dies anyway. |
| |
| Reported by Jot Dot <jotdot@shaw.ca>. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00002.html |
| |
| We should avoid emitting lines so long. |
| |
| We probably should also use a range-based assertion (with extraneous |
| parens to pacify fascist compilers): |
| |
| YY_ASSERT ((token::TOK_YYEOF <= tok && tok <= token::TOK_YYUNDEF) |
| || (token::TOK_ASSIGN <= tok && ...) |
| |
| But anyway, we should simply not emit this assertion at all when not |
| asked for. |
| |
| * data/skeletons/variant.hh: Do not define, nor use, YY_ASSERT when it |
| is not enabled. |
| |
| 2020-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style: follow the Bison m4 quoting pattern |
| * data/skeletons/variant.hh: here. |
| |
| 2020-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: more |
| |
| 2020-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: provide the Bison version as an integral macro |
| Suggested by Balazs Scheidler. |
| https://github.com/akimd/bison/issues/55 |
| |
| * src/muscle-tab.c (muscle_init): Move/rename `b4_version` to/as... |
| * src/output.c (prepare): `b4_version_string`. |
| Also define `b4_version`. |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/d.m4, |
| * data/skeletons/java.m4: Adjust. |
| * doc/bison.texi: Document it. |
| |
| 2020-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: make conversion of version string to int public |
| * src/parse-gram.y (str_to_version): Rename as/move to... |
| * src/strversion.h, src/strversion.c (strversion_to_int): these new |
| files. |
| |
| 2020-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| %require: accept version numbers with three parts ("3.7.4") |
| * src/parse-gram.y (str_to_version): Support three parts. |
| * data/skeletons/location.cc, data/skeletons/stack.hh: |
| Adjust. |
| |
| 2020-11-11 Todd C. Miller <Todd.Miller@sudo.ws> |
| |
| yacc.c: fix #definition of YYEMPTY |
| When generating a C parser, YYEMPTY is present in enum yytokentype but |
| there is no corresponding #define like there is for the other values. |
| There is a special case for YYEMPTY in b4_token_enums but no |
| corresponding case in b4_token_defines. |
| |
| * data/skeletons/c.m4 (b4_token_defines): Do define YYEMPTY. |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: enforce java coding style |
| * tests/scanner.at: here. |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| ielr: fix incorrect function call |
| * src/ielr.c: s/rule_is_accepting/rule_is_initial/. |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| ielr: more comments and logs |
| * src/ielr.c: More comments. |
| (state_list_print): New. |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: fix IELR computations |
| IELR needs to rule out the successors of the kernel items of the |
| initial state (`$accept: input • $end`). In the case of multistart, |
| this condition must be expressed differently: the mere item index does |
| not suffice. |
| |
| * src/ielr.c (ielr_item_has_lookahead, ielr_compute_lookaheads): Don't |
| rely on the item index to check whether is_successor_of_initial_item. |
| It is certainly more costly than just checking the item index, but (i) |
| we need to compute the rule anyway, so it's not very much more costly, |
| and (ii) in ielr_item_has_lookahead, this situation is actually |
| impossible, so an optimizing compiler reading the assertions should |
| actually avoid this computation. |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| ielr: make some conditions about items easier to understand |
| Checking that an item index is > 1 means ruling out `$accept: • input |
| $end` and `$accept: input • $end`. But actually only the latter is |
| possible there, i.e., we're checking whether this item is about a |
| successor of a (kernel) item of the initial state ($accept: input • |
| $end). |
| |
| * src/ielr.c (is_successor_of_initial_item): Use a variable to name |
| this condition. |
| |
| 2020-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: introduce and use rule_is_initial |
| * src/gram.h (rule_is_initial): New. |
| * src/graphviz.c, src/print-xml.c, src/print.c, src/lalr.c: Use it. |
| Some of these occurrences were incorrect (checking whether this is |
| rule 0), and not behaving properly in the case of multistart. |
| |
| 2020-11-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment and formatting changes, and fixes |
| * examples/c/lexcalc/parse.y: Fix option handling. |
| * src/gram.h: Clarify comments. |
| * src/ielr.c: Fix indentation. |
| * src/print.c, src/state.h: More comments. |
| |
| 2020-11-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: add assertions |
| * src/lalr.c: Remove incorrect comment (subsumed anyway by the |
| (correct) one in the header. |
| (set_goto_map): More debug traces. |
| (map_goto): Add an assertion. |
| |
| 2020-11-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: remove scaffolding for glr.c |
| * data/skeletons/glr2.cc (b4_glr_cc_setup, b4_glr_cc_cleanup): Remove. |
| |
| 2020-11-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: remove dead comment |
| * data/skeletons/lalr1.d (reportSyntaxError): here. |
| |
| 2020-11-07 Adela Vais <adela.vais@yahoo.com> |
| |
| d: add the custom error message feature |
| Parser.Context class returns a const YYLocation, so Lexer's method |
| yyerror() needs to receive the location as a const parameter. |
| |
| Internal error reporting flow is changed to be similar to that of |
| the other skeletons. Before, case YYERRLAB was calling yyerror() |
| with the result of yysyntax_error() as the string parameter. As the |
| custom error message lets the user decide if they want to use |
| yyerror() or not, this flow needed to be changed. Now, case YYERRLAB |
| calls yyreportSyntaxError(), that builds the error message using |
| yysyntaxErrorArguments(). Then yyreportSyntaxError() passes the |
| error message to the user defined syntax_error() in case of a custom |
| message, or to yyerror() otherwise. |
| |
| In the tests in tests/calc.at, the order of the tokens needs to be |
| changed in order of precedence, so that the D program outputs the |
| expected tokens in the same order as the other parsers. |
| |
| * data/skeletons/lalr1.d: Add the custom error message feature. |
| * doc/bison.texi: Document it. |
| * examples/d/calc/calc.y: Adjust. |
| * tests/calc.at, tests/local.at: Test it. |
| |
| 2020-11-07 Adela Vais <adela.vais@yahoo.com> |
| |
| d: examples: fix coding style |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Fix whitespace issues |
| and remove the @property attribute. |
| |
| 2020-11-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid explicit symbol numbers |
| This should have been part of commit "symbols: stop dealing with YYEMPTY |
| as b4_symbol(-2, ...)" (cd40ec9526df27d0e3e1c2d41e82a3e6a47254d1). |
| Give names to all the special symbols: "eof", "error" and "undef". |
| |
| * data/skeletons/bison.m4 (b4_symbol): Let `b4_symbol(eof, ...)` mean |
| `b4_symbol(0, ...)`, `b4_symbol(error, ...)` mean `b4_symbol(1, ...)`, |
| and , `b4_symbol(undef, ...)` mean `b4_symbol(2, ...)`.. |
| |
| * data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/glr.cc, |
| * data/skeletons/glr2.cc, data/skeletons/lalr1.cc, |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java, |
| * data/skeletons/yacc.c: |
| Prefer symbols to numbers. |
| |
| 2020-11-07 Adela Vais <adela.vais@yahoo.com> |
| |
| d: fix Context class |
| All methods are now declared as const. Method getExpectedTokens() has now the |
| functionality of reporting only the number of expected tokens. |
| |
| * data/skeletons/lalr1.d: Fix Context class. |
| |
| 2020-11-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix typo |
| Reported by Kaz Kylheku. |
| https://lists.gnu.org/r/bison-patches/2020-11/msg00019.html |
| |
| * doc/bison.texi (Versioning): here. |
| |
| 2020-11-07 Adela Vais <adela.vais99@gmail.com> |
| |
| d: doc: add D Action Features section |
| * doc/bison.texi (D Action Features section): New. |
| |
| 2020-11-07 Adela Vais <adela.vais99@gmail.com> |
| |
| d: add yyerrok |
| In D's case, yyerrok() is a private method of the Parser class. |
| It can be called directly as `yyerrok()` from the grammar rules section. |
| |
| * data/skeletons/lalr1.d: Add yyerrok(). |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Demonstrate yyerrok(). |
| * tests/calc.at: Update D tests to use yyerrok(). |
| |
| 2020-11-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: lac: a stronger test for the exploratory stack |
| * tests/local.at (AT_YYLEX_DEFINE(java)): Fix overquoting issue. |
| Style changes. |
| * tests/regression.at (LAC: Exploratory stack): Run for lalr1.java too. |
| |
| 2020-11-05 Kaz Kylheku <kaz@kylheku.com> |
| |
| doc: document best deployment practices. |
| * doc/bison.texi (Versioning): New node about practices |
| regarding dealing with multiple versions of Bison. |
| |
| 2020-11-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: lac: more tests, and some doc |
| * doc/bison.texi: C++ and Java support LAC. |
| * tests/input.at (LAC: Errors for %define): Generalize the test, and |
| apply it to Java. |
| |
| 2020-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: avoid Integer(String), use parseInt |
| examples/java/calc/Calc.java:1531: warning: [deprecation] Integer(String) in Integer has been deprecated |
| yylval = new Integer(st.sval); |
| ^ |
| |
| * examples/java/calc/Calc.y, examples/java/simple/Calc.y, |
| * tests/calc.at, tests/scanner.at: Use Integer.parseInt. |
| |
| 2020-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: prefer ArrayList to Vector |
| Vector is synchronized, which is completely useless in our case (and |
| not even relevant when concurrency matters). No seasoned Java |
| programmer would use it. |
| Reported by Uxio Prego. |
| |
| * data/skeletons/lalr1.java: Replace Vector with ArrayList. |
| Unfortunately its API is not as rich, and lacks lastElement and |
| setSize. |
| |
| 2020-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: lac: check it |
| * tests/calc.at: Add tests for LAC in pull and push parsers. |
| Skip LAC: line from the logs. |
| * tests/local.at (reportSyntaxError): Output the error message in a |
| single call, to avoid having the error message on stderr be |
| interrupted by the debug traces of LAC in getExpectedTokens. |
| |
| 2020-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: add support for lookahead correction |
| Shamelessly stolen from Adrian Vogelsgesang's implementation in |
| lalr1.cc. |
| |
| * data/skeletons/lalr1.java (yycdebugNnl, yyLacCheck, yyLacEstablish) |
| (yyLacDiscard, yylacStack, yylacEstablished): New. |
| (Context): Use it. |
| * examples/java/calc/Calc.y: Enable LAC. |
| |
| 2020-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: java: more style fixes |
| * data/skeletons/lalr1.java, tests/java.at: Avoid space before paren. |
| And use braces as is customary in the Java. |
| |
| 2020-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes in the skeletons |
| * data/skeletons/lalr1.cc: Prepare for Java's LAC. |
| * data/skeletons/lalr1.java: Style fixes. |
| |
| 2020-11-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix incorrect section title |
| Reported by Gaurav Singh <gaurav.singh199709@yahoo.com>. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00000.html |
| |
| * doc/bison.texi (Rpcalc Expr): Rename as... |
| (Rpcalc Exp): this, as the nterm is named 'exp'. |
| |
| 2020-11-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix incorrect section title |
| Reported by Gaurav Singh <gaurav.singh199709@yahoo.com>. |
| https://lists.gnu.org/r/bug-bison/2020-11/msg00000.html |
| |
| * doc/bison.texi (Rpcalc Expr): Rename as... |
| (Rpcalc Exp): this, as the nterm is named 'exp'. |
| |
| 2020-10-28 Nick Gasson <nick@nickg.me.uk> |
| |
| doc: minor grammar fixes in counterexamples section |
| * doc/bison.texi: Minor fixes in counterexamples section. |
| |
| 2020-10-28 Nick Gasson <nick@nickg.me.uk> |
| |
| doc: minor grammar fixes in counterexamples section |
| * doc/bison.texi: Minor fixes in counterexamples section. |
| |
| 2020-10-27 Adela Vais <adela.vais99@gmail.com> |
| |
| d: create the Parser.Context class |
| This will provide the user an interface for creating custom error messages. |
| |
| * data/skeletons/lalr1.d: Add the Context class. |
| * doc/bison.texi: Document it. |
| |
| 2020-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * upstream/maint: |
| doc: fix typo |
| maint: post-release administrivia |
| version 3.7.3 |
| build: don't link bison against libreadline |
| gnulib: update |
| glr.cc: fix: use symbol_name |
| build: fix a concurrent build issue in examples |
| |
| 2020-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix typo |
| * README: here. |
| |
| 2020-10-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-10-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.3 |
| * NEWS: Record release date. |
| |
| 2020-10-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: don't link bison against libreadline |
| Reported by Paul Smith <psmith@gnu.org>. |
| https://lists.gnu.org/r/bug-bison/2020-10/msg00001.html |
| |
| * src/local.mk (src_bison_LDADD): here. |
| |
| 2020-10-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: D comes before Java in alphabetical order |
| * doc/bison.texi: Keep languages sorted. |
| |
| 2020-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| report: put the dot after %empty in items |
| When printing items, it is clearer to put the dot after %emtpy rather |
| than before: |
| |
| 0 $accept: . unit "end of file" |
| 1 unit: . assignments exp |
| - 2 assignments: . %empty |
| + 2 assignments: %empty . |
| 3 | . assignments assignment |
| |
| Also, use the Unicode characters if they are supported. |
| |
| * src/gram.c (item_print): Put the dot after %emtpy. |
| * tests/conflicts.at, tests/reduce.at, tests/report.at: Adjust. |
| |
| 2020-10-03 Adela Vais <adela.vais99@gmail.com> |
| |
| d: change api.token.raw default value to true |
| Generate consecutive values for enum TokenKind, as D's yylex() |
| returns TokenKind and collisions can't happen. |
| |
| * data/skeletons/d.m4: Change default value. |
| * tests/scanner.at, tests/d.at: Check it. |
| |
| 2020-10-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: have b4_percent_define_if_define apply default values lazily |
| Currently `b4_percent_define_ifdef([foo])` assigns a default value to |
| `foo` when invoked. As a consequence, skeletons such as lalr1.d |
| cannot specify their specific default values: `foo` was defined in |
| bison.m4. |
| |
| Instead, provide `foo` with a default value when `b4_foo_if` is |
| invoked. |
| |
| I could not measure a runtime difference between both cases. |
| |
| * data/skeletons/bison.m4 (_b4_percent_define_define): New. |
| Helps getting rid of spurious indentation that resulted in spurious |
| white space in the output. |
| (b4_percent_define_if_define): Move the definition to... |
| (_b4_percent_define_if_define): when the defined macros is called. |
| |
| 2020-10-02 Adela Vais <adela.vais99@gmail.com> |
| |
| d: don't trigger GC in void toString |
| * data/skeletons/d.m4 (b4_declare_symbol_enum): Here. |
| |
| 2020-10-02 Adela Vais <adela.vais@yahoo.com> |
| |
| d: document support |
| * doc/bison.texi: Various fixes. |
| (D Parsers): New section. |
| |
| 2020-10-02 Adela Vais <adela.vais@yahoo.com> |
| |
| d: remove the default prefix for SymbolKind's enum elements |
| This is not needed in D, since the kinds are "scoped". |
| |
| * data/skeletons/d.m4: Remove the default prefix. |
| * doc/bison.text: Document it. |
| |
| 2020-10-02 Adela Vais <adela.vais@yahoo.com> |
| |
| d: remove the @property attribute from interface Lexer |
| D best practices is to not use it. |
| |
| * data/skeletons/lalr1.d: Remove attribute. |
| |
| 2020-09-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: stop dealing with YYEMPTY as b4_symbol(-2, ...) |
| * data/skeletons/bison.m4 (b4_symbol): Redirect `b4_symbol(empty, |
| ...)` to `b4_symbol(-2, ...)`. |
| Change all uses of the latter to the former. |
| |
| 2020-09-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove useless prefix for EOF in D |
| * tests/calc.at (CALC_EOF): Rename as... |
| (EOF): this. |
| Since there is no risk of a clash with #define EOF here... |
| |
| 2020-09-28 Adela Vais <adela.vais99@gmail.com> |
| |
| d: support api.symbol.prefix and api.token.prefix |
| The D skeleton was not properly supporting them. |
| |
| * data/skeletons/d.m4, data/skeletons/lalr1.d: Fix it. |
| * tests/calc.at: Check it. |
| |
| 2020-09-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: start more thorough testing |
| * tests/local.at (AT_MULTISTART_IF): New. |
| * tests/calc.at: Adjust to check multiple start symbols. |
| * data/skeletons/yacc.c (yy_parse_impl): Fix. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style: reorder the calculator test macros |
| * tests/local.at (AT_TOKEN_TRANSLATE_IF): New, moved from... |
| * tests/calc.at: here. |
| Instead of sorting per feature (main, yylex, calc.y) and then by |
| language, do the converse, so that C bits are together, etc. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: shorten the generated file |
| * tests/synclines.at (_AT_SYNCLINES_COMPILE): Pull the comments out. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: also give access to yynerrs |
| This is something that has always bothered me: with pure parsers (and |
| they all should be) the user does not have an (easy) access to yynerrs |
| at the end of the parse. In the case of error recovery, that's the |
| only direct means to know if there were errors. The usual approach |
| being having the user maintain a counter incremented each time yyerror |
| is called. |
| |
| So here, also capture yynerrs in the return value of the start-symbol |
| parsing functions. |
| |
| * data/skeletons/yacc.c (yy_parse_impl_t): New. |
| (yy_parse_impl): Use it. |
| (b4_accept): Fill it. |
| * examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l: No longer |
| pass nerrs as lex- and parse-param, just use the resulting yynerrs. |
| bistromathic and reccalc both demonstrate %param. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: also count calls to YYERROR in yynerrs |
| * data/skeletons/yacc.c: here. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: allow tokens as start symbols |
| After all, why not? |
| |
| * src/reader.c (switching_token): Use symbol_id_get. |
| (check_start_symbols): Require that the start symbol is a token only |
| if it's the only one. |
| * examples/c/lexcalc/parse.y: Let NUM be a start symbol. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: use b4_accept instead of action post-processing |
| For each start symbol, generate a parsing function with a richer |
| return value than the usual of yyparse. Reserve a place for the |
| returned semantic value, in order to avoid having to pass a pointer as |
| argument to "return" that value. This also makes the call to the |
| parsing function independent of whether a given start-symbol is typed. |
| |
| For instance, if the grammar file contains: |
| |
| %type <int> expression |
| %start input expression |
| |
| (so "input" is valueless) we get |
| |
| typedef struct |
| { |
| int yystatus; |
| } yyparse_input_t; |
| |
| yyparse_input_t yyparse_input (void); |
| |
| typedef struct |
| { |
| int yyvalue; |
| int yystatus; |
| } yyparse_expression_t; |
| |
| yyparse_expression_t yyparse_expression (void); |
| |
| This commit also changes the implementation of the parser termination: |
| when there are multiple start symbols, it is the initial rules that |
| explicitly YYACCEPT. They do that after having exported the |
| start-symbol's value (if it is typed): |
| |
| switch (yyn) |
| { |
| case 1: /* $accept: YY_EXPRESSION expression $end */ |
| { ((*yyvalue).TOK_expression) = (yyvsp[-1].TOK_expression); YYACCEPT; } |
| break; |
| |
| case 2: /* $accept: YY_INPUT input $end */ |
| { YYACCEPT; } |
| break; |
| |
| I have tried several ways to deal with termination, and this is the |
| one that appears the best one to me. It is also the most natural. |
| |
| * src/scan-code.h, src/scan-code.l (obstack_for_actions): New. |
| * src/reader.c (grammar_rule_check_and_complete): Generate the actions |
| of the rules for each start symbol. |
| |
| * data/skeletons/bison.m4 (b4_symbol_slot): New, with safer semantics |
| than type and type_tag. |
| * data/skeletons/yacc.c (b4_accept): New. |
| Generates the body of the action of the start rules. |
| (_b4_declare_sub_yyparse): For each start symbol define a dedicated |
| return type for its parsing function. |
| Adjust the declaration of its parsing function. |
| (_b4_define_sub_yyparse): Adjust the definition of the function. |
| |
| * examples/c/lexcalc/parse.y: Check the case of valueless symbols. |
| * examples/c/lexcalc/lexcalc.test: Check start symbols. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: adjust reader checks for generated rules |
| So far we were not checking the generated rule 0 at all. Now there |
| can be several of them. Instead of not checking at all, let's be more |
| selective on the check to run on them. |
| |
| * src/reader.c (grammar_rule_check_and_complete): Don't check for |
| value usage for generated rules, it is ok to have a valued start |
| symbol, in which case it is ok for the generated rule ("accept: start |
| $end {}") to not use $1. |
| (packgram): Call grammar_rule_check_and_complete for all the rules. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: more |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: toy with it in lexcalc |
| * examples/c/lexcalc/parse.y: Define several start symbols. |
| * examples/c/lexcalc/lexcalc.test: Check support. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: equip yacc.c |
| * data/skeletons/yacc.c: Add support for multiple start symbols. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: pass the list of start symbols to the backend |
| * src/output.c (start_symbols_output): New. |
| (muscles_output): Use it. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: also check the HTML report |
| We don't actually have checks for HTML, so let's do it for multistart. |
| |
| * tests/report.at: here. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: adjust computation of initial core and adjust reports |
| Currently the core of the initial state is limited to the single rule |
| on $accept. |
| |
| * src/lr0.c (generate_states): There may now be several rules on |
| $accept. |
| |
| * src/graphviz.c (conclude_red): Recognize "final" transitions by the |
| fact that we reduce to "$accept". |
| * src/print.c (print_reduction): Likewise. |
| * src/print-xml.c (print_reduction): Likewise. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| multistart: turn start symbols into rules on $accept |
| Now that the parser can read several start symbols, let's process |
| them, and create the corresponding rules. |
| |
| * src/parse-gram.y (grammar_declaration): Accept a list of start symbols. |
| * src/reader.h, src/reader.c (grammar_start_symbol_set): Rename as... |
| (grammar_start_symbols_set): this. |
| |
| * src/reader.h, src/reader.c (start_flag): Replace with... |
| (start_symbols): this. |
| * src/reader.c (grammar_start_symbols_set): Build a list of start |
| symbols. |
| (switching_token, create_start_rules): New. |
| (check_and_convert_grammar): Use them to turn the list of start |
| symbols into a set of rules. |
| * src/reduce.c (nonterminals_reduce): Don't complain about $accept, |
| it's an internal detail. |
| (reduce_grammar): Complain about all the start symbols that don't |
| derive sentences. |
| |
| * src/symtab.c (startsymbol, startsymbol_loc): Remove, replaced by |
| start_symbols. |
| symbols_pack): Move the check about the start symbols |
| to... |
| * src/symlist.c (check_start_symbols): here. |
| Adjust to multiple start symbols. |
| * tests/reduce.at (Empty Language): Generalize into... |
| (Bad start symbols): this. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: expose a list of symbols |
| * src/parse-gram.y (%type): Also use current_class. |
| (symbol_decl.1): Rename as... |
| (symbols.1): this. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: get ready to create several initial rules |
| * src/reader.c (create_start_rule): New. |
| Use it. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| gram: more debugging information |
| * src/gram.c (ritem_print): Show indices in ritem. |
| |
| 2020-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: fix: use symbol_name |
| * data/skeletons/glr.cc: here. |
| |
| 2020-09-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: add an example |
| Currently this example crashes on input such as "T (x) + y;". |
| The same example with glr.c works properly. |
| |
| * examples/c++/glr/Makefile, examples/c++/glr/README.md, |
| * examples/c++/glr/c++-types.test, examples/c++/glr/c++-types.yy, |
| * examples/c++/glr/local.mk, examples/c++/local.mk: New. |
| Based on examples/c/glr/c++-types.y. |
| |
| 2020-09-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: fix: use symbol_name |
| * data/skeletons/glr.cc: here. |
| |
| 2020-09-26 Adela Vais <adela.vais99@gmail.com> |
| |
| d: change the return value of yylex from int to TokenKind |
| * data/skeletons/lalr1.d: Change the return value. |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Adjust. |
| * tests/scanner.at: Adjust. |
| * tests/calc.at (_AT_DATA_CALC_Y(d)): New, extracted from... |
| (_AT_DATA_CALC_Y(c)): here. |
| The two grammars have been sufficiently different to be separated. |
| Still trying to be them together results in a maintenance burden. For |
| the same reason, instead of specifying the results for D and for the |
| rest, compute the expected results with D from the regular case. |
| |
| 2020-09-24 Adela Vais <adela.vais99@gmail.com> |
| |
| d: support api.parser.extends and api.parser.implements |
| The D skeleton was not properly supporting them. |
| |
| * data/skeletons/d.m4: Fix it. |
| * tests/d.at: Check it. |
| * tests/local.mk, tests/testsuite.at: Adjust. |
| |
| 2020-09-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: also run all the calculator tests |
| This revealed issues with yy_symbol_print and yy_reduce_print. |
| These changes, in turn, reactivated GCC10 warnings: |
| |
| 559. calc.at:1258: testing Calculator glr2.cc %locations %header parse.error=verbose %debug api.prefix={calc} %verbose %parse-param {semantic_value *result}{int *count}{int *nerrs} ... |
| tests/calc.at:1258: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS; bison --color=no -fno-caret -Wno-deprecated -o calc.cc calc.y |
| tests/calc.at:1258: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS |
| stderr: |
| calc.cc: In function 'void glr_stack::yyresolveLocations(glr_state*, int)': |
| calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference] |
| 2623 | yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference] |
| 2623 | yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference] |
| 2623 | yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| calc.cc:1177:10: error: potential null pointer dereference [-Werror=null-dereference] |
| 1177 | return yypred ? &(asItem (this) - yypred)->getState () : YY_NULLPTR; |
| | ^~~~~~ |
| calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference] |
| 2623 | yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference] |
| 2623 | yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| calc.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)': |
| calc.cc:2623:46: error: potential null pointer dereference [-Werror=null-dereference] |
| 2623 | yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| * tests/calc.at (AT_CHECK_CALC_GLR_CC): Also check glr2.cc. |
| * data/skeletons/glr2.cc: Don't pass the user arguments to |
| yy_symbol_print and yy_reduce_print, since they have it in the parser |
| object. |
| (b4_user_formals_no_comma, b4_pure_args, b4_lpure_args) |
| (b4_locuser_formals, b4_locuser_args): Remove, useless. |
| (YY_IGNORE_NULL_DEREFERENCE_BEGIN): Enable for GCC >= 10 too. |
| |
| 2020-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check the location of the right-hand side symbols |
| The D skeleton was not properly supporting @1 etc. |
| Reported by Adela Vais. |
| https://lists.gnu.org/r/bison-patches/2020-09/msg00049.html |
| |
| * data/skeletons/d.m4 (b4_rhs_location): Fix it. |
| * tests/calc.at: Check the support of @n for all the skeletons. |
| |
| 2020-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * src/scan-code.l: here. |
| |
| 2020-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: introduce parse_positional_ref |
| * src/scan-code.l: here. |
| |
| 2020-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clarify the way state kernels (aka cores) are built |
| Use state_list_append in a more natural way. |
| |
| * src/lr0.c (generate_states): Here. |
| |
| 2020-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reorder and comment |
| * src/reader.h: here. |
| |
| 2020-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add a demonstration of GLR parsers in C |
| Based on the test case 668 (cxx-type.at:437) "GLR: Merge conflicting |
| parses, pure, locations". |
| |
| * examples/c/glr/Makefile, examples/c/glr/README.md, |
| * examples/c/glr/c++-types.test, examples/c/glr/c++-types.y, |
| * examples/c/glr/local.mk: New. |
| |
| 2020-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: support api.header.include |
| * data/skeletons/glr.c: here. |
| |
| 2020-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| add support for --html |
| * bootstrap.conf: We need the "execute" module. |
| * src/files.h, src/files.c (spec_html_file, html_flag): New. |
| * src/getargs.h, src/getargs.c (--html): New. |
| * src/print-xml.h, src/print-xml.c (print_html): New. |
| * src/main.c: Use them. |
| * tests/output.at, tests/report.at: Check --html. |
| |
| 2020-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| deprecate %defines in favor of %header |
| This is consistent with --defines being deprecated in favor of |
| --header. The directive %defines is also too similar to %define. |
| And %header matches nicely with api.header.name. |
| |
| * src/scan-gram.l (%defines): Deprecate to %header. |
| (%header): Scan it. |
| * src/parse-gram.y (PERCENT_DEFINES): Replace with... |
| (PERCENT_HEADER): this. |
| * data/skeletons/lalr1.java |
| * doc/bison.texi |
| * tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at, |
| * tests/input.at, tests/java.at, tests/local.at, tests/output.at, |
| * tests/synclines.at, tests/types.at: |
| Convert most tests to check %header instead of %defines. |
| |
| 2020-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| options: rename --defines as --header |
| The name "defines" is incorrect, the generated file contains far more |
| than just #defines. |
| |
| * src/getargs.h, src/getargs.c (-H, --header): New option. |
| With optional argument, just like --defines, --xml, etc. |
| (defines_flag): Rename as... |
| (header_flag): this. |
| Adjust dependencies. |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.c, |
| * data/skeletons/glr.cc, data/skeletons/glr2.cc, data/skeletons/lalr1.cc, |
| * data/skeletons/yacc.c: |
| Adjust. |
| * examples, doc/bison.texi: Adjust. |
| * tests/headers.at, tests/local.at, tests/output.at: Convert most |
| tests from using --defines to using --header. |
| |
| 2020-09-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: beware of time limits |
| * .travis.yml (GCC 8): Run only the part 1 of the tests. |
| |
| 2020-09-17 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: replace refs to parser::symbol_kind_type with yysymbol_kind_t |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-09-17 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: fix container out-of-bounds access |
| Clang 10 with ASAN enabled reported errors in glr2.cc. |
| |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: disable GCC 4.6 warning |
| 231. conflicts.at:1096: testing Syntax error in consistent error state: glr2.cc ... |
| tests/conflicts.at:1096: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS |
| input.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)': |
| input.cc:2674:36: error: 'yysval' may be used uninitialized in this function [-Werror=uninitialized] |
| |
| Do not initialize the variable: this way ASAN can really make sure we |
| do set it to a proper value. |
| If we initialize it, ASAN would report nothing. |
| |
| * data/skeletons/c.m4 (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): Disable |
| GCC 4.6's -Wuninitialized. |
| * data/skeletons/glr2.cc: Disable the warning locally. |
| |
| 2020-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix warning with GCC 4.7 and 4.8 |
| 231. conflicts.at:1096: testing Syntax error in consistent error state: glr2.cc ... |
| tests/conflicts.at:1096: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS |
| input.cc: In function 'int yyparse(yy::parser&)': |
| input.cc:3147:41: error: 'yyarg' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| return yytnamerr_ (yytname_[yysymbol]); |
| ^ |
| input.cc:2058:34: note: 'yyarg' was declared here |
| yy::parser::symbol_kind_type yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; |
| ^ |
| |
| * data/skeletons/glr2.cc (yyreportSyntaxError): Initialize yyarg. |
| |
| 2020-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: simplify symbol kinds |
| We emit code like |
| |
| if (yytoken != yy::parser::symbol_kind::symbol_kind::S_YYEMPTY) |
| |
| * data/skeletons/glr2.cc: Use b4_symbol correctly. |
| |
| 2020-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix warning about local variable vs. member |
| Fix a warning triggered in GCC (at least from 4.6 to 4.9): |
| |
| input.cc: In constructor 'glr_stack_item::glr_stack_item(bool)': |
| input.cc:1371:5: error: declaration of 'is_state' shadows a member of 'this' [-Werror=shadow] |
| : is_state_(is_state) |
| ^ |
| |
| * data/skeletons/glr2.cc (glr_stack_item): Alpha-convert. |
| |
| 2020-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: variants: minor simplification |
| Do as Valentin Tolmer did in glr2.cc. |
| |
| * data/skeletons/variant.hh: The union does not need to be named. |
| |
| 2020-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: avoid type-punning issues |
| On the CI, tests fail with GCC 4.6 to GCC 6 as follows: |
| |
| tests/synclines.at:440: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS; bison --color=no -fno-caret -o \"\\\"\".cc \"\\\"\".y |
| tests/synclines.at:440: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o \"\\\"\" \"\\\"\".cc $LIBS |
| stderr: |
| "\"".cc: In member function 'glr_state& glr_stack_item::getState()': |
| "\"".cc:1404:47: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| return *reinterpret_cast<glr_state*>(&raw_); |
| ^ |
| "\"".cc: In member function 'const glr_state& glr_stack_item::getState() const': |
| "\"".cc:1408:53: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| return *reinterpret_cast<const glr_state*>(&raw_); |
| ^ |
| "\"".cc: In member function 'semantic_option& glr_stack_item::getOption()': |
| "\"".cc:1413:53: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| return *reinterpret_cast<semantic_option*>(&raw_); |
| ^ |
| "\"".cc: In member function 'const semantic_option& glr_stack_item::getOption() const': |
| "\"".cc:1417:59: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] |
| return *reinterpret_cast<const semantic_option*>(&raw_); |
| ^ |
| |
| See also be6fa942acae21a4a025bac5e339451be6ad136d. |
| |
| * data/skeletons/glr2.cc (glr_stack_item): Use a temporary void* |
| variable to avoid type-punning issues with reinterpret_cast. |
| |
| 2020-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc, glr2.cc: don't publish compiler pragmas |
| Currently the compiler attributes are defined in |
| b4_shared_declarations (that can in the header if it exists, otherwise |
| in the implementation file). This is not needed, only the |
| implementation file needs them. |
| |
| Besides, glr2.cc was also defining these macros in the implementation |
| file, so we had two definitions. |
| |
| * data/skeletons/glr.cc, data/skeletons/glr2.cc: Define the compiler |
| attribute macros only in the implementation files. |
| * tests/regression.at (Lex and parse params): Generate a header, to |
| make it easy to check that the header is self-sufficient. |
| |
| 2020-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: disable incorrect warnings from GCC6 to 9 |
| For instance with GCC8: |
| |
| 616. regression.at:1560: testing Lex and parse params: glr2.cc ... |
| tests/regression.at:1560: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS; bison --color=no -fno-caret -o input.cc input.y |
| tests/regression.at:1560: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS |
| stderr: |
| input.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)': |
| input.cc:1796:10: error: potential null pointer dereference [-Werror=null-dereference] |
| return yypred ? &(asItem(this) - yypred)->getState() : YY_NULLPTR; |
| ^~~~~~ |
| input.cc:1796:10: error: potential null pointer dereference [-Werror=null-dereference] |
| return yypred ? &(asItem(this) - yypred)->getState() : YY_NULLPTR; |
| ^~~~~~ |
| cc1plus: all warnings being treated as errors |
| |
| It complains that the implicit this in yypred might be null. It fears |
| it because of loops such as |
| |
| for (glr_state* yys = firstTopState(); |
| yys != yystateStack.yysplitPoint; |
| yys = yys->pred()) |
| yyn += 1; |
| |
| that could possibly set yys to null, since yys->pred might return |
| null. However, the warning is incorrect, since in C++ `this` cannot |
| be null. GCC 10 no longer emits this warning. |
| |
| GCC 7 also complains many times about glr_stack::yyresolveLocations |
| when NDEBUG is enabled (when it is not, YYASSERT (yyoption != |
| YY_NULLPTR) is probably enough to pacify GCC): |
| |
| 616. regression.at:1560: testing Lex and parse params: glr2.cc ... |
| tests/regression.at:1560: COLUMNS=1000; export COLUMNS; NO_TERM_HYPERLINKS=1; export NO_TERM_HYPERLINKS; bison --color=no -fno-caret -o input.cc input.y |
| tests/regression.at:1560: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS |
| stderr: |
| input.cc: In member function 'void glr_stack::yyresolveLocations(glr_state*, int)': |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc: In member function 'YYRESULTTAG glr_stack::yyresolveValue(glr_state*)': |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.cc:3061:46: error: potential null pointer dereference [-Werror=null-dereference] |
| yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc; |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| * data/skeletons/glr2.cc (YY_IGNORE_NULL_DEREFERENCE_BEGIN) |
| (YY_IGNORE_NULL_DEREFERENCE_BEGIN): New. |
| (glr_state::pred, glr_stack::yyresolveLocations): Use them. |
| |
| 2020-09-12 Adela Vais <adela.vais99@gmail.com> |
| |
| d: make enum SymbolKind idiomatic D |
| Taking into account comments from H. S. Teoh. |
| https://lists.gnu.org/r/bison-patches/2020-09/msg00021.html |
| |
| * data/skeletons/d.m4, data/skeletons/lalr1.d (SymbolKind): Wrap the |
| enum in a structure that contains its string representation. |
| |
| 2020-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: address warnings with G++ 4.8 |
| input.cc: In constructor 'glr_stack_item::glr_stack_item(bool)': |
| input.cc:1423:5: error: declaration of 'isState' shadows a member of 'this' [-Werror=shadow] |
| : isState_(isState) { |
| ^ |
| test.cc:1165:45: error: declaration of 'begin' shadows a member of 'this' [-Werror=shadow] |
| test.cc:1167:45: error: declaration of 'end' shadows a member of 'this' [-Werror=shadow] |
| |
| * data/skeletons/glr2.cc (isState): Rename as... |
| (is_state): this. |
| Formatting changes. |
| (reduceToOneStack): Rename variables to avoid name clashes. |
| |
| 2020-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: get rid of the C indirection for yy_symbol_print |
| * data/skeletons/glr2.cc (yy_symbol_print): Remove. |
| Just use yyparser.yy_symbol_print_ directly. |
| |
| 2020-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: formatting changes |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix GCC10 warning |
| For instance on test 433: "glr2.cc api.value.type={double}" |
| |
| tests/types.at:138: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o test test.cc $LIBS |
| stderr: |
| In file included from /opt/local/include/gcc10/c++/bits/stl_tempbuf.h:60, |
| from /opt/local/include/gcc10/c++/bits/stl_algo.h:62, |
| from /opt/local/include/gcc10/c++/algorithm:62, |
| from test.cc:82: |
| /opt/local/include/gcc10/c++/bits/stl_construct.h: In instantiation of 'constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...) [with _Tp = glr_stack_item; _Args = {glr_stack_item}; decltype (::new(void*(0)) _Tp) = glr_stack_item*]': |
| /opt/local/include/gcc10/c++/bits/alloc_traits.h:514:21: required from 'static constexpr void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = glr_stack_item; _Args = {glr_stack_item}; _Tp = glr_stack_item; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<glr_stack_item>]' |
| /opt/local/include/gcc10/c++/bits/vector.tcc:115:30: required from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {glr_stack_item}; _Tp = glr_stack_item; _Alloc = std::allocator<glr_stack_item>; std::vector<_Tp, _Alloc>::reference = glr_stack_item&]' |
| /opt/local/include/gcc10/c++/bits/stl_vector.h:1204:21: required from 'void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = glr_stack_item; _Alloc = std::allocator<glr_stack_item>; std::vector<_Tp, _Alloc>::value_type = glr_stack_item]' |
| test.cc:1949:48: required from here |
| /opt/local/include/gcc10/c++/bits/stl_construct.h:95:14: error: noexcept-expression evaluates to 'false' because of a call to 'glr_stack_item::glr_stack_item(const glr_stack_item&)' [-Werror=noexcept] |
| 95 | noexcept(noexcept(::new((void*)0) _Tp(std::declval<_Args>()...))) |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| test.cc:1436:3: note: but 'glr_stack_item::glr_stack_item(const glr_stack_item&)' does not throw; perhaps it should be declared 'noexcept' |
| 1436 | glr_stack_item(const glr_stack_item& other) |
| | ^~~~~~~~~~~~~~ |
| cc1plus: all warnings being treated as errors |
| stdout: |
| tests/types.at:138: exit code was 1, expected 0 |
| 433. types.at:138: 433. glr2.cc api.value.type={double} (types.at:138): FAILED (types.at:138) |
| |
| * data/skeletons/glr2.cc (glr_stack_item): Use YY_NOEXCEPT/YY_NOTHROW. |
| |
| 2020-09-12 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: coding style changes |
| * data/skeletons/glr2.cc: Change some CamlCase to snake_case, and |
| remove some yy prefixes for classes inside the namespace. |
| |
| 2020-09-12 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: move StrongIndexAlias into the namespace |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-09-12 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: remove usage of PTRDIFF_MAX |
| * data/skeletons/glr2.cc: Use std::ptrdiff_t and numeric_limits. |
| |
| 2020-09-12 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: remove C-style casts |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-09-12 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: add copy constructor to yyGLRStackItem |
| This silences the clang warning -Wdeprecated-copy. |
| |
| * data/skeletons/glr2.cc: here. |
| |
| 2020-09-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: d: remove unused token |
| * examples/d/calc/calc.y, examples/d/simple/calc.y: Remove "=". |
| |
| 2020-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' (i.e., Bison 3.7.2) |
| * upstream/maint: |
| maint: post-release administrivia |
| version 3.7.2 |
| build: disable syntax-check warning |
| gnulib: update |
| build: fix incorrect dependencies |
| doc: updates |
| gnulib: update |
| tests: beware of sed portability issues |
| |
| 2020-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix a concurrent build issue in examples |
| Reported by Thomas Deutschmann <whissi@gentoo.org>. |
| https://lists.gnu.org/r/bug-bison/2020-09/msg00010.html |
| |
| * examples/c/lexcalc/local.mk: scan.o depends on parse.[ch]. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.2 |
| * NEWS: Record release date. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: disable syntax-check warning |
| error_message_uppercase |
| etc/bench.pl.in-419-static int yylex (@{[is_pure (@directive) ? "YYSTYPE *yylvalp" : "void"]}); |
| |
| * cfg.mk: here. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix incorrect dependencies |
| Commit af000bab111768a04021bf5ffa4bbe91d44e231c ("doc: work around |
| Texinfo 6.7 bug"), published in 3.4.91, added a dependency on the |
| "all" target. |
| |
| This is a super bad idea, since "make all" will run this |
| target *before* "all", which builds bison. It turns out that this new |
| dependency actually needed bison to be built. So all the regular |
| process (i) build $(BUILT_SOURCES) and then (ii) build bison, was |
| wrecked since some of the $(BUILT_SOURCES) depended on bison... |
| |
| It was "easy" to see in the logs of "make V=1" because we were |
| building bison files (such as src/files.o) *before* displaying the |
| banner for "all-recursive". With this fix, we finally get again the |
| proper sequence: |
| |
| rm -f examples/c/reccalc/scan.stamp examples/c/reccalc/scan.stamp.tmp |
| /opt/local/libexec/gnubin/mkdir -p examples/c/reccalc |
| touch examples/c/reccalc/scan.stamp.tmp |
| flex -oexamples/c/reccalc/scan.c --header=examples/c/reccalc/scan.h ./examples/c/reccalc/scan.l |
| mv examples/c/reccalc/scan.stamp.tmp examples/c/reccalc/scan.stamp |
| rm -f lib/fcntl.h-t lib/fcntl.h && \ |
| { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ |
| ... |
| } > lib/fcntl.h-t && \ |
| mv lib/fcntl.h-t lib/fcntl.h |
| ... |
| mv -f lib/alloca.h-t lib/alloca.h |
| make all-recursive |
| |
| Reported by Mingli Yu <mingli.yu@windriver.com>. |
| https://github.com/akimd/bison/issues/31 |
| https://lists.gnu.org/r/bison-patches/2020-05/msg00055.html |
| |
| Reported by Claudio Calvelli <bugb@w42.org>. |
| https://lists.gnu.org/r/bug-bison/2020-09/msg00001.html |
| https://bugs.gentoo.org/716516 |
| |
| * doc/local.mk (all): Rename as... |
| (all-local): this. |
| So that we don't compete with BUILT_SOURCES. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: simplify the extraction of example snippets |
| * doc/bison.texi: Use qualified paths. |
| * examples/extexi: Comment changes. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: style changes |
| * data/skeletons/glr2.cc: Remove stray comment. |
| |
| 2020-09-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: get rid of the yyerror scaffolding |
| The yyerror stand-alone function was used to bounce from glr.c's call |
| to yyerror to glr.cc's parser.error. Now that glr.c is out of the |
| way, just directly use parser.error. |
| |
| * data/skeletons/glr2.cc (yyerror): Remove. |
| Adjust callers. |
| (b4_yyerror_args, b4_lyyerror_args, b4_pure_formals): Remove. |
| Now unused. |
| |
| 2020-09-04 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: avoid warnings about printf and shadowing |
| * data/skeletons/glr2.cc: Migrate from using printf to std::cerr & co. |
| Since the yyGLRStack has the user params, no need to pass them around. |
| |
| 2020-09-03 Adela Vais <adela.vais99@gmail.com> |
| |
| examples: d: demonstrate location tracking |
| * examples/d/calc/calc.y: Track locations. |
| * examples/d/calc/calc.test: Check locations. |
| |
| 2020-09-03 Adela Vais <adela.vais99@gmail.com> |
| |
| examples: d: duplicate the example as "simple" and "calc" |
| * examples/d/Makefile, examples/d/calc.d, examples/d/calc.test, |
| examples/d/calc/local.mk: Move into... |
| * examples/d/calc, examples/d/simple: these new directories. |
| |
| 2020-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: updates |
| * NEWS, TODO: here. |
| |
| 2020-09-02 Adela Vais <adela.vais99@gmail.com> |
| |
| examples: d: fix the handling of unary + |
| It was interpreting "+exp" as "-exp". |
| |
| * examples/d/calc.y: Fix. |
| * examples/d/calc.test: Check it. |
| |
| 2020-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: always show ε/%empty in counterexamples |
| On a case such as |
| %% |
| exp |
| : empty "a" |
| | "a" empty |
| |
| empty |
| : %empty |
| |
| we used to display |
| |
| warning: shift/reduce conflict on token "a" [-Wcounterexamples] |
| Example: • "a" |
| Shift derivation |
| exp |
| ↳ 2: • "a" empty |
| ↳ 2: ε |
| Example: • "a" |
| Reduce derivation |
| exp |
| ↳ 1: empty "a" |
| ↳ 3: • |
| |
| where the shift derivation shows an item "2: empty → ε", with an |
| explicit "ε", but the reduce derivation shows "3: empty → •", without |
| "ε". |
| |
| For consistency, let's always show ε/%empty in rules with an empty |
| rhs: |
| |
| Reduce derivation |
| exp |
| ↳ 1: empty "a" |
| ↳ 3: ε • |
| |
| * src/derivation.c (derivation_width, derivation_print_tree_impl): |
| Always show ε/%empty in counterexamples. |
| * tests/diagnostics.at: Check that case. |
| * tests/conflicts.at, tests/counterexample.at: Adjust. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: avoid warnings about long long |
| * data/skeletons/glr2.cc: Disable the warning before triggering it. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: display the rule numbers |
| From |
| |
| Example: "if" expr "then" "if" expr "then" stmt • "else" stmt |
| Shift derivation |
| if_stmt |
| ↳ "if" expr "then" stmt |
| ↳ if_stmt |
| ↳ "if" expr "then" stmt • "else" stmt |
| Reduce derivation |
| if_stmt |
| ↳ "if" expr "then" stmt "else" stmt |
| ↳ if_stmt |
| ↳ "if" expr "then" stmt • |
| |
| to |
| |
| Example: "if" expr "then" "if" expr "then" stmt • "else" stmt |
| Shift derivation |
| if_stmt |
| ↳ 3: "if" expr "then" stmt |
| ↳ 2: if_stmt |
| ↳ 4: "if" expr "then" stmt • "else" stmt |
| Example: "if" expr "then" "if" expr "then" stmt • "else" stmt |
| Reduce derivation |
| if_stmt |
| ↳ 4: "if" expr "then" stmt "else" stmt |
| ↳ 2: if_stmt |
| ↳ 3: "if" expr "then" stmt • |
| |
| * src/state-item.h, src/state-item.c (state_item_rule): New. |
| * src/derivation.h, src/derivation.c (struct derivation): Add a rule |
| member. |
| Adjust dependencies. |
| * src/counterexample.c, src/parse-simulation.c: Pass the rule to |
| derivation_new. |
| * src/derivation.c (fprintf_if): New. |
| (derivation_width, derivation_print_tree_impl): Take the rule number |
| into account. |
| |
| * tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at, |
| * tests/report.at: Adjust. |
| |
| * doc/bison.texi: Adjust. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of sed portability issues |
| Reported by David Laxer <davidl@softintel.com>. |
| https://lists.gnu.org/r/bug-bison/2020-08/msg00027.html |
| |
| * tests/output.at: Don't use + with sed. |
| While at it, fix a quotation problem hidden by the use of '#'. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of sed portability issues |
| Reported by David Laxer <davidl@softintel.com>. |
| https://lists.gnu.org/r/bug-bison/2020-08/msg00027.html |
| |
| * tests/output.at: Don't use + with sed. |
| While at it, fix a quotation problem hidden by the use of '#'. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr2.cc: fix a few warnings |
| * data/skeletons/glr2.cc: Fix some documentation. |
| Be consistent between class/struct. |
| (yydoAction, yyresolveAction): Avoid passing yyparser where useless. |
| |
| 2020-08-30 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| glr2.cc: fork glr.cc to a c++ version |
| This is a fork of glr.cc to be c++-first instead of a wrapper around |
| glr.c. |
| |
| * data/skeletons/glr2.cc: New. |
| * data/skeletons/bison.m4, data/skeletons/c++.m4: Adjust. |
| * data/skeletons/c.m4 (b4_user_args_no_comma): New. |
| * src/reader.c (grammar_rule_check_and_complete): glr2.cc is C++. |
| * tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at, |
| * tests/input.at, tests/local.at, tests/regression.at, tests/scanner.at, |
| * tests/synclines.at, tests/types.at: Also check glr2.cc. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: always use YYMALLOC/YYFREE |
| Reported by Kovalex <kovalex.pro@gmail.com>. |
| https://lists.gnu.org/r/bug-bison/2020-08/msg00015.html |
| |
| * data/skeletons/yacc.c: Don't make direct calls to malloc/free. |
| * tests/calc.at: Check it. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: beware of POSIX mode |
| Reported by Dennis Clarke. |
| https://lists.gnu.org/r/bug-bison/2020-08/msg00013.html |
| |
| * examples/d/local.mk, examples/java/calc/local.mk, |
| * examples/java/simple/local.mk: Pass bison's options before its |
| argument, in case we're in POSIX mode. |
| |
| 2020-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: history of api.prefix |
| Reported by Matthew Fernandez <matthew.fernandez@gmail.com>. |
| https://lists.gnu.org/r/help-bison/2020-08/msg00015.html |
| |
| * doc/bison.texi (api.prefix): We move to {} in 3.0. |
| |
| 2020-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: intel moved the script for ICC |
| * .travis.yml: Adjust. |
| |
| 2020-08-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: unterminated \-escape |
| An assertion failed when the last character is a '\' and we're in a |
| character or a string. |
| Reported by Agency for Defense Development. |
| https://lists.gnu.org/r/bug-bison/2020-08/msg00009.html |
| |
| * src/scan-gram.l: Catch unterminated escapes. |
| * tests/input.at (Unexpected end of file): New. |
| |
| 2020-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: crash when redefining the EOF token |
| Reported by Agency for Defense Development. |
| https://lists.gnu.org/r/bug-bison/2020-08/msg00008.html |
| |
| On an empty such as |
| |
| %token FOO |
| BAR |
| FOO 0 |
| %% |
| input: %empty |
| |
| we crash because when we find FOO 0, we decrement ntokens (since FOO |
| was discovered to be EOF, which is already known to be a token, so we |
| increment ntokens for it, and need to cancel this). This "works well" |
| when EOF is properly defined in one go, but here it is first defined |
| and later only assign token code 0. In the meanwhile BAR was given |
| the token number that we just decremented. |
| |
| To fix this, assign symbol numbers after parsing, not during parsing, |
| so that we also saw all the explicit token codes. To maintain the |
| current numbers (I'd like to keep no difference in the output, not |
| just equivalence), we need to make sure the symbols are numbered in |
| the same order: that of appearance in the source file. So we need the |
| locations to be correct, which was almost the case, except for nterms |
| that appeared several times as LHS (i.e., several times as "foo: |
| ..."). Fixing the use of location_of_lhs sufficed (it appears it was |
| intended for this use, but its implementation was unfinished: it was |
| always set to "false" only). |
| |
| * src/symtab.c (symbol_location_as_lhs_set): Update location_of_lhs. |
| (symbol_code_set): Remove broken hack that decremented ntokens. |
| (symbol_class_set, dummy_symbol_get): Don't set number, ntokens and |
| nnterms. |
| (symbol_check_defined): Do it. |
| (symbols): Don't count nsyms here. |
| Actually, don't count nsyms at all: let it be done in... |
| * src/reader.c (check_and_convert_grammar): here. Define nsyms from |
| ntokens and nnterms after parsing. |
| * tests/input.at (EOF redeclared): New. |
| |
| * examples/c/bistromathic/bistromathic.test: Adjust the traces: in |
| "%nterm <double> exp %% input: ...", exp used to be numbered before |
| input. |
| |
| 2020-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix missing space before paren |
| * cfg.mk (_space_before_paren_exempt): Be less laxist. |
| * src/output.c, src/reader.c: Fix space before paren issues. |
| Pacify the warnings where applicable. |
| |
| 2020-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix comments and more debug trace |
| * src/location.c, src/symtab.h, src/symtab.c: here. |
| |
| 2020-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: more uses of const |
| * src/symtab.c: here. |
| |
| 2020-08-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: fix support for pure parser |
| * etc/bench.pl.in (is_pure): New. |
| (generate_grammar_calc): Use code provides where needed. |
| Use is_pure to call yylex properly. |
| Coding style fixes. |
| |
| 2020-08-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| portability: multiple typedefs |
| Older versions of GCC (4.1.2 here) don't like repeated typedefs. |
| |
| CC src/bison-parse-simulation.o |
| src/parse-simulation.c:61: error: redefinition of typedef 'parse_state' |
| src/parse-simulation.h:74: error: previous declaration of 'parse_state' was here |
| make: *** [Makefile:7876: src/bison-parse-simulation.o] Error 1 |
| |
| Reported by Nelson H. F. Beebe. |
| |
| * src/parse-simulation.c (parse_state): Don't typedef, |
| parse-simulation.h did it already. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: revert "avoid warnings with GCC 4.6" |
| This reverts commit d0bec3175ff5cf6582ffbf584b73ea6aaea838d0 (which |
| should have read "We have a clash...", not "With have a clash..."). |
| Now that `max()` was renamed `max_int()`, we can use `max` again, as |
| elsewhere in the code. |
| |
| * src/counterexample.c (visited_hasher): Alpha reconversion. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7.1 |
| * NEWS: Record release date. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| portability: we use termios.h and sys/ioctl.h |
| Reported by Maarten De Braekeleer. |
| https://lists.gnu.org/r/bison-patches/2020-07/msg00079.html |
| |
| * bootstrap.conf (gnulib_modules): Add termios and sys_ioctl. |
| |
| 2020-08-02 Maarten De Braekeleer <maarten.debraekeleer@gmail.com> |
| |
| portability: rename accept to acceptsymbol because of MSVC |
| MSVC already defines this symbol. |
| |
| * src/symtab.h, src/symtab.c (accept): Rename as... |
| (acceptsymbol): this. |
| Adjust dependencies. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-08-02 Maarten De Braekeleer <maarten.debraekeleer@gmail.com> |
| |
| portability: use CHAR_LITERAL instead of CHAR because MSVC defines CHAR |
| * src/parse-gram.y, src/scan-gram.l: here. |
| |
| 2020-08-02 Maarten De Braekeleer <maarten.debraekeleer@gmail.com> |
| |
| portability: use INT_LITERAL instead of INT because MSVC defines INT |
| It is defined as a typedef, not a macro. |
| https://lists.gnu.org/r/bison-patches/2020-08/msg00001.html |
| |
| * src/parse-gram.y, src/scan-gram.l: here. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| portability: beware of max () with MSVC |
| Reported by Maarten De Braekeleer. |
| https://lists.gnu.org/r/bison-patches/2020-07/msg00080.html |
| |
| We don't want to use gnulib's min and max macros, since we use |
| function calls in min/max arguments. |
| |
| * src/location.c (max_int, min_int): Move to... |
| * src/system.h: here. |
| * src/counterexample.c, src/derivation.c: Use max_int instead of max. |
| |
| 2020-08-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| libtextstyle: be sure to have ostream_printf and hyperlink support |
| Older versions of libtextstyle do not support them, rule them out. |
| |
| Reported by Lars Wendler |
| https://lists.gnu.org/r/bug-bison/2020-07/msg00030.html |
| |
| and by Arnold Robbins |
| https://lists.gnu.org/r/bug-bison/2020-07/msg00041.html and |
| https://lists.gnu.org/mailman/private/gawk-devel/2020-July/003988.html |
| |
| and by Nelson H. F. Beebe |
| https://lists.gnu.org/mailman/private/gawk-devel/2020-July/003993.html |
| |
| With support from Bruno Haible in gnulib |
| https://lists.gnu.org/r/bug-gnulib/2020-08/msg00000.html |
| thread starting at |
| https://lists.gnu.org/r/bug-gnulib/2020-07/msg00148.html |
| |
| * configure.ac: Require libtextstyle 0.20.5. |
| * gnulib: Update. |
| |
| 2020-08-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: comment changes |
| |
| 2020-08-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-08-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: better location for type redeclarations |
| From |
| |
| foo.y:1.7-11: error: %type redeclaration for bar |
| 1 | %type <foo> bar bar |
| | ^~~~~ |
| foo.y:1.7-11: note: previous declaration |
| 1 | %type <foo> bar bar |
| | ^~~~~ |
| |
| to |
| |
| foo.y:1.17-19: error: %type redeclaration for bar |
| 1 | %type <foo> bar bar |
| | ^~~ |
| foo.y:1.13-15: note: previous declaration |
| 1 | %type <foo> bar bar |
| | ^~~ |
| |
| * src/symlist.h, src/symlist.c (symbol_list_type_set): There's no need |
| for the tag's location, use that of the symbol. |
| * src/parse-gram.y: Adjust. |
| * tests/input.at: Adjust. |
| |
| 2020-07-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: updates for D |
| |
| 2020-07-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style: comment changes |
| * src/parse-simulation.c: here. |
| |
| 2020-07-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style: prefer "res" for the returned value |
| * src/derivation.c (derivation_new): here. |
| |
| 2020-07-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style: prefer FOO_print to print_FOO |
| * src/state-item.h, src/state-item.c (print_state_item): Rename as... |
| (state_item_print): this. |
| * src/counterexample.c (print_counterexample): Rename as... |
| (counterexample_print): this. |
| |
| 2020-07-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| scanner: don't crash on strings containing a NUL byte |
| We crash if the input contains a string containing a NUL byte. |
| Reported by Suhwan Song. |
| https://lists.gnu.org/r/bug-bison/2020-07/msg00051.html |
| |
| * src/flex-scanner.h (STRING_FREE): Avoid accidental use of |
| last_string. |
| * src/scan-gram.l: Don't call STRING_FREE without calling |
| STRING_FINISH first. |
| * tests/input.at (Invalid inputs): Check that case. |
| |
| 2020-07-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: refer to cex from sections dealing with conflicts |
| The documentation about -Wcex should be put forward. |
| |
| * doc/bison.texi: Refer to -Wcex from the sections about conflicts. |
| |
| 2020-07-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: factor ifnottex/iftex examples |
| * doc/bison.texi: Factor the common bits out of ifnottex/iftex. |
| |
| 2020-07-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix colors |
| The original Texinfo macros introducing colors were made for |
| diagnostics, which are printed in bold. So by copy-paste accident the |
| styles we introduced for counterexamples were also in bold. They |
| should not. |
| |
| * doc/bison.texi: Separate the styling of diagnostics from the styling |
| for counterexamples. |
| Don't use bold in the latter case. |
| |
| 2020-07-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fixes |
| * doc/bison.texi: Fix spello. |
| Fix missing colors, and factor. |
| |
| 2020-07-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-07-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.7 |
| * NEWS: Record release date. |
| |
| 2020-07-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid warnings with GCC 4.6 |
| With have a clash with the "max" function. |
| |
| src/counterexample.c: In function 'visited_hasher': |
| src/counterexample.c:720:48: error: declaration of 'max' shadows a global declaration [-Werror=shadow] |
| src/counterexample.c:116:12: error: shadowed declaration is here [-Werror=shadow] |
| |
| * src/counterexample.c (visited_hasher): Alpha conversion. |
| |
| 2020-07-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix definition of -Wall |
| * doc/bison.texi (Diagnostics): here. |
| |
| 2020-07-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| * bootstrap.conf: We need stpncpy. |
| |
| 2020-07-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fixes |
| Fix 6b78e50cef3c2cd8e6f4e7938be987e8769f8eef, "cex: make "rerun with |
| '-Wcex'" a note instead of a warning" |
| |
| * tests/conflicts.at (-W versus %expect and %expect-rr): Fix |
| expectations. |
| |
| 2020-07-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: update NEWS for 3.7 |
| * NEWS: Update to the current style of cex display. |
| |
| 2020-07-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: catch up with the current display of cex |
| Unfortunately I found no way to use the ↳ glyph in Texinfo, so I used |
| @arrow{} instead, which has a different width, so we have to have all |
| the examples doubled, once for TeX, another for the rest of the world. |
| |
| * doc/bison.texi: Use the current display in the examples. |
| * doc/calc.y, doc/ids.y, doc/if-then-else.y, doc/sequence.y: New. |
| |
| 2020-07-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: make "rerun with '-Wcex'" a note instead of a warning |
| Currently the suggestion to rerun is a -Wother warning: |
| |
| warning: 2 shift/reduce conflicts [-Wconflicts-sr] |
| warning: rerun with option '-Wcounterexamples' to generate conflict counterexamples [-Wother] |
| |
| Instead, let's attach it as a subnote of the diagnostic (in the |
| current case, -Wconflicts-sr): |
| |
| warning: 2 shift/reduce conflicts [-Wconflicts-sr] |
| note: rerun with option '-Wcounterexamples' to generate conflict counterexamples |
| |
| * src/conflicts.c (conflicts_print): Do that. |
| Adjust the test suite. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.93 |
| * NEWS: Record release date. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: label all the derivations by their initial action |
| From |
| |
| input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples] |
| Example: A b . |
| First derivation |
| a |
| `-> A b . |
| Second derivation |
| a |
| `-> A b |
| `-> b . |
| |
| to |
| |
| input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples] |
| Example: A b . |
| First reduce derivation |
| a |
| `-> A b . |
| Second reduce derivation |
| a |
| `-> A b |
| `-> b . |
| |
| * src/counterexample.c (print_counterexample): here. |
| Compute the width of the labels to properly align the values. |
| * tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at, |
| * tests/report.at: Adjust. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: improve readability of the subsections |
| Now that the derivation is no longer printed on one line, aligning the |
| example and the derivation is no longer useful. It can actually be |
| harmful, as it makes the overall structure less clear. |
| |
| * src/derivation.h, src/derivation.c (derivation_print_leaves): Remove |
| the `prefix` argument. |
| * src/counterexample.c (print_counterexample): Put the example next to |
| its label. |
| * tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at, |
| * tests/report.at: Adjust. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: don't issue an empty line between counterexamples |
| Now that we use complain, the "sections" are clearer. |
| |
| * src/counterexample.c (print_counterexample): Use the empty line only |
| in reports. |
| * tests/counterexample.at, tests/diagnostics.at, tests/report.at: Adjust. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: use usual routines for diagnostics about S/R conflicts |
| See previous commit. We go from |
| |
| input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr] |
| Shift/reduce conflict on token "⊕": |
| Example exp "+" exp • "⊕" exp |
| Shift derivation |
| exp |
| ↳ exp "+" exp |
| ↳ exp • "⊕" exp |
| |
| to |
| |
| input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr] |
| input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples] |
| Example exp "+" exp • "⊕" exp |
| Shift derivation |
| exp |
| ↳ exp "+" exp |
| ↳ exp • "⊕" exp |
| |
| with an hyperlink on -Wcounterexamples. |
| |
| * src/counterexample.c (counterexample_report_shift_reduce): |
| Use complain. |
| * tests/counterexample.at, tests/diagnostics.at, tests/report.at: |
| Adjust. |
| |
| 2020-07-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: use usual routines for diagnostics about R/R conflicts |
| This is more consistent, and brings benefits: users know that these |
| diagnostics are attached to -Wcounterexamples, and they can also click |
| on the hyperlink if permitted by their terminal. |
| |
| We go from |
| |
| warning: 1 reduce/reduce conflict [-Wconflicts-rr] |
| Reduce/reduce conflict on token $end: |
| Example A b . |
| First derivation a -> [ A b . ] |
| Second derivation a -> [ A b -> [ b . ] ] |
| |
| to |
| |
| warning: 1 reduce/reduce conflict [-Wconflicts-rr] |
| input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples] |
| Example A b . |
| First derivation a -> [ A b . ] |
| Second derivation a -> [ A b -> [ b . ] ] |
| |
| with an hyperlink on -Wcounterexamples. |
| |
| * src/counterexample.c (counterexample_report_reduce_reduce): |
| Use complain. |
| * tests/counterexample.at, tests/diagnostics.at, tests/report.at: |
| Adjust. |
| |
| 2020-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: use hyperlinks to point to the only documentation |
| * src/complain.c (begin_hyperlink, end_hyperlink): New. |
| (warnings_print_categories): Use them. |
| * tests/local.at (AT_SET_ENV): Disable hyperlinks in the tests, they |
| contain random id's, and brackets (which is not so nice for M4). |
| |
| 2020-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: add anchors for warnings |
| Unfortunately Texinfo somewhat mangles anchors such as `-Werror` into |
| `g_t_002dWerror`, so let's not include the dash. |
| |
| * doc/bison.texi (Diagnostics): here. |
| |
| 2020-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glyphs: fix types |
| The code was written on top of buffers of `char[26]`, and then was |
| changed to use `char *`, yet was still using `sizeof buf`, which |
| became `sizeof (char *)` instead of `sizeof (char[26])`. |
| |
| Reported by Dagobert Michelsen. |
| https://lists.gnu.org/r/bug-bison/2020-07/msg00023.html |
| |
| * src/glyphs.h, src/glyphs.c: Get rid of uses of `char *`, use only |
| glyph_buffer_t. |
| |
| 2020-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.92 |
| * NEWS: Record release date. |
| |
| 2020-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid strncpy |
| syntax-check seems to dislike strncpy. The GNU Coreutils replaced |
| their uses of strncpy with stpncpy. |
| |
| strlcpy is not an option. |
| http://sources.redhat.com/ml/libc-alpha/2002-01/msg00159.html |
| http://sources.redhat.com/ml/libc-alpha/2002-01/msg00011.html |
| http://lists.gnu.org/archive/html/bug-gnulib/2004-09/msg00181.html |
| |
| * src/glyphs.c: Use stpncpy. |
| |
| 2020-07-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: display derivations as trees |
| Sometimes, understanding the derivations is difficult, because they |
| are serialized to fit in one line. For instance, the example taken |
| from the NEWS file: |
| |
| %token ID |
| %% |
| s: a ID |
| a: expr |
| expr: expr ID ',' | "expr" |
| |
| gave |
| |
| First example expr • ID ',' ID $end |
| Shift derivation $accept → [ s → [ a → [ expr → [ expr • ID ',' ] ] ID ] $end ] |
| Second example expr • ID $end |
| Reduce derivation $accept → [ s → [ a → [ expr • ] ID ] $end ] |
| |
| Printing as trees, it gives: |
| |
| First example expr • ID ',' ID $end |
| Shift derivation |
| $accept |
| ↳ s $end |
| ↳ a ID |
| ↳ expr |
| ↳ expr • ID ',' |
| Second example expr • ID $end |
| Reduce derivation |
| $accept |
| ↳ s $end |
| ↳ a ID |
| ↳ expr • |
| |
| * src/glyphs.h, src/glyphs.c (down_arrow, empty, derivation_separator): |
| New. |
| * src/derivation.c (derivation_print, derivation_print_impl): Rename |
| as... |
| (derivation_print_flat, derivation_print_flat_impl): These. |
| (fputs_if, derivation_depth, derivation_width, derivation_print_tree) |
| (derivation_print_tree_impl, derivation_print): New. |
| * src/counterexample.c (print_counterexample): Adjust. |
| * tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at, |
| * tests/report.at: Adjust. |
| |
| 2020-07-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: use the glyphs |
| * src/derivation.c: here. |
| * src/gram.h, src/gram.c (print_arrow, print_dot, print_fallback): |
| Remove. |
| |
| 2020-07-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: factor the handling of graphical symbols |
| * src/glyphs.h, src/glyphs.c: New. |
| |
| 2020-07-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style changes |
| * src/counterexample.c: here. |
| |
| 2020-07-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: simplify tests |
| * tests/counterexample.at (AT_BISON_CHECK_CEX): Handle the keyword. |
| Simplify the signature. |
| |
| 2020-07-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: more colors |
| Provided by Daniela Becker. |
| |
| * data/bison-default.css: More colors. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comments changes |
| * src/print.c: here. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update GLR sections |
| Reported by Christian Schoenebeck. |
| |
| * doc/bison.texi (GLR Parsers): Minor fixes. |
| (Compiler Requirements for GLR): Remove, quite useless today. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: display shifts before reductions |
| When reporting counterexamples for s/r conflicts, put the shift first. |
| This is more natural, and displays the default resolution first, which |
| is also what happens for r/r conflicts where the smallest rule number |
| is displayed first, and "wins". |
| |
| * src/counterexample.c (counterexample): Add a shift_reduce member. |
| (new_counterexample): Adjust. |
| Swap the derivations when this is a s/r conflict. |
| (print_counterexample): For s/r conflicts, prefer "Shift derivation" |
| and "Reduce derivation" rather than "First/Second derivation". |
| |
| * tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust. |
| * NEWS, doc/bison.texi: Ditto. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: s/lookahead_tokens/lookaheads/g |
| Currently we use both names. Let's stick to the short one. |
| |
| * src/AnnotationList.c, src/conflicts.c, src/counterexample.c, |
| * src/getargs.c, src/getargs.h, src/graphviz.c, src/ielr.c, |
| * src/lalr.c, src/print-graph.c, src/print-xml.c, src/print.c, |
| * src/state-item.c, src/state.c, src/state.h, src/tables.c: |
| s/lookahead_token/lookahead/gi. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: factor memory allocation |
| * src/counterexample.c (counterexample_report_state): Allocate once |
| per conflicted state, instead of once per r/r conflict. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: use state_item_number consistently |
| * src/counterexample.c, src/state-item.c: here. |
| (counterexample_report_state): While at it, prefer c2 to j/k, to match |
| c1. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: more consistent memory allocation/copy |
| * src/counterexample.c, src/parse-simulation.c: It is more usual in |
| Bison to use sizeof on expressions than on types, especially for |
| allocation. |
| Let the compiler do it's job instead of calling memcpy ourselves. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: minor renaming |
| * src/counterexample.c (has_common_prefix): Rename as... |
| (have_common_prefix): this. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: use better type names |
| There are too many gl_list_t in there, it's hard to understand what is |
| going on. Introduce and use more precise types. I sure can be wrong |
| in some places, it's hard to tell without proper tool support. |
| |
| * src/counterexample.c, src/lssi.c, src/lssi.h, src/parse-simulation.c, |
| * src/parse-simulation.h, src/state-item.c, src/state-item.h |
| (si_bfs_node_list, search_state_list, ssb_list, lssi_list) |
| (state_item_list): New. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: minor style changes |
| * src/counterexample.h, src/derivation.h, src/derivation.c: |
| More comments. |
| Use `out` for FILE*, as elsewhere. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of version numbers from git describe |
| * tests/report.at: Be robust to version numbers such as |
| 3.6.4.133-fbac-dirty. |
| |
| 2020-07-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix expectations |
| Broken in ee86ea88399ed02243fbceb2704c9ea322a12bf9. |
| |
| * tests/diagnostics.at: here. |
| |
| 2020-07-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: makeinfo wants @arrow{}, not @arrow |
| * doc/bison.texi: here. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: prefer → to ::= |
| It does not make a lot of sense to use ::= in our counterexamples, |
| that's not something that belongs to the Bison "vocabulary". Using |
| the colon makes sense, but it's too discreet. Let's use the arrow, |
| which we already use in some reports (HTML and Dot). |
| |
| * src/gram.h (print_dot_fallback): Generalize into... |
| (print_fallback): this. |
| (print_arrow): New. |
| * src/derivation.c: Use it. |
| |
| * NEWS, tests/conflicts.at, tests/counterexample.at, |
| * tests/diagnostics.at, tests/report.at: Adjust. |
| * doc/bison.texi: Ditto. |
| Unfortunately the literal `→` is output as `↦`. So we need to use |
| @arrow. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: cex: prefer the array notation |
| Prefer `&foos[i]` to `foos + i` when `foos` is an array. IMHO, it |
| makes the semantics clearer. |
| |
| * src/counterexample.c, src/lssi.c, src/parse-simulation.c, |
| * src/state-item.c: With arrays, prefer the array notation rather than |
| the pointer one. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: cex: remove variables that don't make it simpler to read |
| * src/counterexample.c: With arrays, prefer the array notation rather |
| than the pointer one. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: demonstrate caret-diagnostics |
| * examples/c/bistromathic/parse.y (user_context): We need the current |
| line. |
| (yyreport_syntax_error): Quote the guilty line, with squiggles. |
| * examples/c/bistromathic/bistromathic.test: Adjust. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: do not display parse errors on completion |
| Currently autocompletion on a line with errors leaks the error |
| messages. It can be useful to let the user know, but GNU Readline |
| does not provide us with an nice way to display the error. So we |
| actually break into the current line of the user. |
| |
| So instead, do not show these errors. |
| |
| * examples/c/bistromathic/parse.y (user_context): New. |
| Use %param to pass it to the parser and scanner. |
| Keep quiet when in computing autocompletion. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: don't stupidly reset the location for each token |
| That quite defeats the whole point of locations... But anyway, we |
| should not see these messages at all. |
| |
| * examples/c/bistromathic/parse.y (expected_tokens): Fix (useless) |
| location tracking. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: promote yytoken_kind_t |
| * examples/c/bistromathic/parse.y: Use yytoken_kind_t rather than int. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| html: capitalize titles |
| * data/xslt/xml2xhtml.xsl: Use "State 0", not "state 0". |
| As we do in text reports. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| html: don't define several times the same anchors |
| Currently when we output useless rules, they appear before the |
| grammar, but using the same invocation. As a result, the anchor is |
| defined twice, and the wrong one, being first, is honored. |
| |
| * data/xslt/xml2xhtml.xsl (rule): Take a new 'anchor' parameter to |
| decide whether being an anchor, or a target. |
| Let it be true when output the grammar. |
| * tests/report.at: Adjust. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| html: simplify |
| * data/xslt/xml2xhtml.xsl: Merge two identical when-clauses. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| reports: let html reports catch up with --report and --graph |
| * data/xslt/xml2xhtml.xsl: Show the symbol types. |
| * tests/report.at: Adjust. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| reports: let xml reports catch up with --report and --graph |
| The text and Dot reports are expected to be identical when generated |
| directly (--report, --graph) or indirectly (via XML). The xml |
| testsuite had not be run for ages, let it catch up a bit. |
| |
| * src/print-xml.c: Pass the type of the symbols. |
| * data/xslt/xml2text.xsl |
| Catch up with the new layout. |
| Display the symbol types. |
| Use '•', not '.' |
| * tests/local.at: Smash '•' to '.' when matching against the direct |
| text report. |
| * tests/report.at: Adjust XML expectations. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| reports: update html ouput |
| * data/xslt/xml2xhtml.xsl: Improve indentation. |
| Use ul/li rather that pre. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check html |
| * tests/report.at: here. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: factor complex expressions |
| * src/print-xml.c, src/print.c: Introduce a variable pointing to the |
| current symbol. |
| |
| 2020-07-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: make it easier to update expectations |
| * tests/local.mk (update-tests): New. |
| |
| 2020-07-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-07-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.91 |
| * NEWS: Record release date. |
| |
| 2020-07-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2020-07-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-07-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add license headers |
| Prompted by Rici Lake. |
| https://stackoverflow.com/questions/62658368/#comment110853985_62661621 |
| Discussed with Paul Eggert. |
| |
| * doc/bison.texi, examples/c/bistromathic/parse.y, |
| * examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l, |
| * examples/c/pushcalc/calc.y, examples/c/reccalc/parse.y, |
| * examples/c/reccalc/scan.l, examples/d/calc.y, |
| * examples/java/calc/Calc.y, examples/java/simple/Calc.y: |
| Install the GPL3+ header. |
| |
| 2020-07-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: update comments |
| * src/reader.c: action_obstack was removed in 2002... |
| * src/parse-gram.y: Better names. |
| * src/scan-code.h: More comments. |
| |
| 2020-07-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: update comments in the skeletons |
| * data/skeletons/c++.m4, data/skeletons/glr.c, data/skeletons/lalr1.d, |
| * data/skeletons/lalr1.java, data/skeletons/yacc.c: |
| Be more accurate about yychar and yytoken. |
| Don't name local variables as if they were members. |
| |
| 2020-07-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: more details about symbols in m4 |
| * data/README.md: here. |
| * README-hacking.md (Vocabulary): More. |
| |
| 2020-07-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-07-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: include the generated header |
| * examples/c/bistromathic/parse.y, examples/c/lexcalc/parse.y, |
| * examples/c/reccalc/parse.y: here. |
| Add some comments. |
| |
| * src/parse-gram.y (api_version): Pull out of handle_require. |
| Bump to 3.7. |
| |
| 2020-07-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-07-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.90 |
| * NEWS: Record release date. |
| |
| 2020-07-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2020-07-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: fix syntax-check errors |
| * examples/c/bistromathic/bistromathic.test, po/POTFILES.in: here. |
| |
| 2020-07-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-07-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: give more details about -Wcex and -rcex |
| * data/bison-default.css: Cobalt does not seem to be supported. |
| * doc/bison.texi (Counterexamples): A new section. |
| (Understanding): Show the counterexamples as it shows in the report: |
| with its items. |
| (Bison Options): Document -Wcex and -rcex. |
| |
| 2020-07-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2020-07-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| dot: also use a dot in the output |
| * src/print-graph.c (print_core): Use a dot instead of a point. |
| * doc/figs/example-reduce.gv, doc/figs/example-reduce.txt, |
| * doc/figs/example-shift.gv, doc/figs/example-shift.txt, |
| * doc/figs/example.gv: Update. |
| * tests/output.at, tests/report.at: Adjust. |
| |
| 2020-07-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: improve a sentence |
| * doc/bison.texi: here. |
| |
| 2020-07-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: formatting changes |
| |
| 2020-07-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| news, todo: update |
| |
| 2020-06-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify that the pcontext interface is *.c only |
| Reported by Rici Lake. |
| https://lists.gnu.org/r/bug-bison/2020-06/msg00054.html |
| |
| * doc/bison.texi (Syntax Error Reporting Function): Make it clear that |
| this is not exported. |
| Remove C++ details that landed in the C doc. |
| |
| 2020-06-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use color in the cex examples |
| * doc/bison.texi: here. |
| And use smallexample when it no longer fits in PDF. |
| |
| 2020-06-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: repair the references to the Bibliography |
| In commit c80cdf2db2b302db4137fabd4ae11e578fa51fca ("doc: simplify |
| uses of @ref", Jan 27 2020, released in Bison 3.6), I broke the |
| references to the Bibliography. For instance: |
| |
| For a more detailed exposition of the mysterious behavior in LALR parsers |
| -and the benefits of IELR, @pxref{Bibliography,,Denny 2008 March}, and |
| -@ref{Bibliography,,Denny 2010 November}. |
| +and the benefits of IELR, @pxref{Bibliography}, and |
| +@ref{Bibliography}. |
| |
| which results in "see Bibliography" twice, instead of the more precise |
| reference. |
| |
| * doc/bison.texi (@pcite, @tcite): New. |
| Use them instead of @ref to Bibliography. |
| Cite only the first author (that's what we did for the other entries). |
| |
| 2020-06-30 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| doc: cex documentation |
| * NEWS, doc/bison.texi: Add documentation for conflict counterexample |
| generation. |
| |
| 2020-06-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update Doxygen template file |
| * doc/Doxyfile.in: here. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: push: don't clear the parser state when accepting/rejecting |
| Currently when a push parser finishes its parsing (i.e., it did not |
| return YYPUSH_MORE), it also clears its state. It is therefore |
| impossible to see if it had parse errors. |
| |
| In the context of autocompletion, because error recovery might have |
| fired, the parser is actually already in a different state. For |
| instance on `(1 + + <TAB>` in the bistromathic, because there's a |
| `exp: "(" error ")"` recovery rule, `1 + +` tokens have already been |
| popped, replaced by `error`, and autocompletions think we are ready |
| for the closing ")". So here, we would like to see if there was a |
| syntax error, yet `yynerrs` was cleared. |
| |
| In the case of a successful parse, we still have a problem: if error |
| recovery succeeded, we won't know it, since, again, `yynerrs` is |
| clearer. |
| |
| It seems much more natural to leave the parser state available for |
| analysis when there is a failure. |
| |
| To reuse the parser, we should either: |
| |
| 1. provide an explicit means to reinitialize a parser state for future |
| parses. |
| |
| 2. automatically reset the parser state when it is used in a new |
| parse. |
| |
| Option 2 requires to check whether we need to reinitialize the parser |
| each time we call `yypush_parse`, i.e., each time we give a new token. |
| This seems expensive compared to Option 1, but benchmarks revealed no |
| difference. Option 1 is incompatible with the documentation |
| ("After `yypush_parse` returns a status other than `YYPUSH_MORE`, the |
| parser instance `yyps` may be reused for a new parse."). |
| |
| So Option 2 wins, reusing the private `yynew` member to record that a |
| parse was finished, and therefore that the state must reset in the |
| next call to `yypull_parse`. |
| |
| While at it, this implementation now reuses the previously enlarged |
| stacks from one parse to another. |
| |
| * data/skeletons/yacc.c (yypstate_new): Set up the stacks in their |
| initial configurations (setting their bottom to the stack array), and |
| use yypstate_clear to reset them (moving their top to their bottom). |
| (yypstate_delete): Adjust. |
| (yypush_parse): At the beginning, clear yypstate if needed, and at the |
| end, record when yypstate needs to be clearer. |
| |
| * examples/c/bistromathic/parse.y (expected_tokens): Do not propose |
| autocompletion when there are parse errors. |
| * examples/c/bistromathic/bistromathic.test: Check that case. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: don't display undefined locations |
| Currently, completion when there is a syntax error shows broken |
| locations. |
| |
| * examples/c/bistromathic/parse.y (expected_tokens): Initialize the |
| location. |
| * examples/c/bistromathic/bistromathic.test: Check that. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: simplify initialization of push parsers |
| The previous commit ("yacc.c: declare and initialize and the same |
| time") made b4_initialize_parser_state_variables useless. |
| |
| * data/skeletons/yacc.c (b4_initialize_parser_state_variables): Inline |
| into... |
| (yypstate_clear): here. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: declare and initialize and the same time |
| In order to factor the code of push and pull parsers, the declaration |
| of the parser's state variable was common (being local variable in |
| pull parsers, and struct members in push parsers). This result in |
| rather poor style in pull parser, with first variable declarations, |
| and then their initializations. |
| |
| The initialization is about to differ between push and pull parsers, |
| so it is no longer worth keeping both cases together. |
| |
| * data/skeletons/yacc.c (b4_declare_parser_state_variables): Accept an |
| argument, and when it is set, initialize the variables. |
| Adjust dependencies. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: style changes in push mode |
| * data/skeletons/yacc.c: here. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: simplify yypull_parse |
| Currently yypull_parse takes a yypstate* as argument, and accepts it |
| to be NULL. This does not seem to make a lot of sense: rather it is |
| its callers that should do that. |
| |
| I believe this is historical: yypull_parse was introduced |
| first (c3d503425f8014b432601a33b3398446d63b5963), with yyparse being a |
| macro. So yyparse could hardly deal with memory allocation properly. |
| In 7172e23e8ffb95b8cafee24c4f36c46ca709507f that yyparse was turned |
| into a genuine function. At that point, it should have allocated its |
| own yypstate*, which would have left yypull_parse deal with only one |
| single non-null ypstate* argument. |
| |
| Fortunately, it is nowhere documented that it is valid to pass NULL to |
| yypull_parse. It is now forbidden. |
| |
| * data/skeletons/yacc.c (yypull_parse): Don't allocate a yypstate. |
| Needs a location to issue the error message. |
| (yyparse): Allocate the yypstate. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: tidy the text files |
| * etc/README: Rename/reformat as... |
| * etc/README.md: this. |
| And ship it. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: simplify the `rand` target |
| * etc/bench.pl.in: There is no need to recompile the bench cases |
| themselves. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: make it easy to edit the generated files |
| * etc/bench.pl.in (&compile): Generate rules that compile the |
| generated files independently of the source files. |
| |
| 2020-06-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't use $VERBOSE |
| It is used by the test suite itself, which results in this test |
| failing. |
| |
| * tests/c++.at: Use $DEBUG, not $VERBOSE. |
| |
| 2020-06-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: overhaul of the readmes |
| * README-hacking.md (Working from the Repository): Make it first to |
| make it easier to find the instructions to build from the repo. |
| (Implementation Notes): New. |
| * README: Provide more links. |
| |
| 2020-06-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: rename package as api.package |
| * data/skeletons/lalr1.java: here. |
| * doc/bison.texi: Update. |
| * src/muscle-tab.c: Ensure backward compat. |
| * tests/java.at: Check it. |
| |
| 2020-06-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: shift/reduce, not shift-reduce |
| * src/reader.c: here. |
| |
| 2020-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename endtoken as eoftoken |
| * src/symtab.h, src/symtab.c (endtoken): Rename as... |
| (eoftoken): this. |
| Adjust dependencies. |
| |
| 2020-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: fixes |
| Reported by Jacob L. Mandelson. |
| |
| * NEWS: here. |
| |
| 2020-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use 'nonterminal' consistently |
| * doc/bison.texi: Formatting changes. |
| * src/gram.h, src/gram.c (nvars): Rename as... |
| (nnterms): this. |
| Adjust dependencies. |
| (section): New. Use it. |
| Replace "non terminal" and "non-terminal" by "nonterminal". |
| |
| 2020-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: parse.assert in C++ requires RTTI |
| * doc/bison.texi (%define Summary): Say it. |
| |
| 2020-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: by default, use const std::string for file names |
| Reported by Martin Blais and Yuriy Solodkyy. |
| https://lists.gnu.org/r/help-bison/2020-05/msg00011.html |
| https://lists.gnu.org/r/bug-bison/2020-06/msg00038.html |
| |
| While at it, modernize filename_type as api.filename.type and document |
| it properly. |
| |
| * data/skeletons/c++.m4 (filename_type): Rename as... |
| (api.filename.type): this. |
| Default to const std::string. |
| * data/skeletons/location.cc (position, location): Expose the |
| filename_type type. |
| Use api.filename.type. |
| * doc/bison.texi (%define Summary): Document api.filename.type. |
| (C++ Location Values): Document position::filename_type. |
| * src/muscle-tab.c (muscle_percent_variable_update): Ensure backward |
| compatibility. |
| * tests/c++.at: Check that using const file names is ok. |
| tests/input.at: Check backward compat. |
| |
| 2020-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| ielr: fix crash on memory management |
| Reported by Dwight Guth. |
| https://lists.gnu.org/r/bug-bison/2020-06/msg00037.html |
| |
| * src/AnnotationList.c (AnnotationList__computePredecessorAnnotations): |
| Beware that SBITSET__FOR_EACH nests _two_ for-loops, so "break" does |
| not actually break out of it. |
| That was the only occurrence in the code. |
| * src/Sbitset.h (SBITSET__FOR_EACH): Warn passersby. |
| |
| 2020-06-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: factor the access to a rule from its items |
| * src/counterexample.c (item_rule): Move to... |
| * src/counterexample.h: here. |
| * src/AnnotationList.c, src/counterexample.c, src/ielr.c: Use it. |
| |
| 2020-06-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean up nullable |
| * src/nullable.c: Reduce scopes. |
| Prefer `r` to `rules_ruleno`, which is truly an ugly name. |
| |
| 2020-06-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean up ielr |
| * src/AnnotationList.c, src/ielr.c: Fix include order. |
| Prefer `res` to `result`. |
| Reduce scopes. |
| Be free of the oldish 76 cols limitation when it clutters too much the |
| code. |
| Denest when possible (we're starving for horizontal width). |
| |
| 2020-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| don't use strlen to compute visual width |
| * src/output.c (prepare_symbol_names): Use mbswidth. |
| |
| 2020-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use dot/'•' rather than point/'.' |
| AFAICT, "dotted rule" is a more frequent synonym of "item" than |
| "pointed rule". So let's migrate to using "dot" only. |
| |
| * doc/bison.texi: Use dot/'•' rather than point/'.'. |
| |
| * src/print-xml.c (print_core): Use dot rather than point. This is |
| not backward compatible, but AFAICT, we don't have actual user of the |
| XML output (but ourselves). So... |
| * data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl, |
| * data/xslt/xml2xhtml.xsl, tests/report.at: ... adjust. |
| |
| 2020-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: display all the S/R conflicts, not just one per (state, rule) |
| Before this commit, on |
| |
| %% |
| exp |
| : "if" exp "then" exp |
| | "if" exp "then" exp "else" exp |
| | exp "+" exp |
| | "num" |
| |
| we used to not display the third counterexample below: |
| |
| Shift/reduce conflict on token "+": |
| Example exp "+" exp . "+" exp |
| First derivation exp ::=[ exp ::=[ exp "+" exp . ] "+" exp ] |
| Second derivation exp ::=[ exp "+" exp ::=[ exp . "+" exp ] ] |
| |
| Shift/reduce conflict on token "else": |
| Example "if" exp "then" "if" exp "then" exp . "else" exp |
| First derivation exp ::=[ "if" exp "then" exp ::=[ "if" exp "then" exp . ] "else" exp ] |
| Second derivation exp ::=[ "if" exp "then" exp ::=[ "if" exp "then" exp . "else" exp ] ] |
| |
| Shift/reduce conflict on token "+": |
| Example "if" exp "then" exp . "+" exp |
| First derivation exp ::=[ exp ::=[ "if" exp "then" exp . ] "+" exp ] |
| Second derivation exp ::=[ "if" exp "then" exp ::=[ exp . "+" exp ] ] |
| |
| Shift/reduce conflict on token "+": |
| Example "if" exp "then" exp "else" exp . "+" exp |
| First derivation exp ::=[ exp ::=[ "if" exp "then" exp "else" exp . ] "+" exp ] |
| Second derivation exp ::=[ "if" exp "then" exp "else" exp ::=[ exp . "+" exp ] ] |
| |
| * src/counterexample.c (counterexample_report_state): Don't stop of |
| the first conflicts. |
| * tests/conflicts.at, tests/counterexample.at, tests/diagnostics.at, |
| * tests/report.at: Adjust. |
| |
| 2020-06-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: don't display twice unifying examples if there is no color |
| It makes no sense, and is actually confusing, to display twice the |
| same example with no visible difference. |
| |
| * src/complain.h, src/complain.c (is_styled): New. |
| * src/counterexample.c (print_counterexample): Display the unified |
| example a second time only if it makes a difference. |
| * tests/conflicts.at, tests/counterexample.at, tests/report.at: Adjust. |
| * tests/diagnostics.at: Make sure we do display the unifying examples |
| twice when colors are enabled. And check those colors. |
| |
| 2020-06-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix reporting of null nonterminals |
| I implemented this to print A ::= [ ], but A ::= [ %empty ] might be |
| clearer. |
| |
| * src/parse-simulation.c (nullable_closure): Don't generate null |
| nonterminal derivations as leaves. |
| * src/derivation.c (derivation_print_impl): Don't print seperator |
| spaces for null nonterminal. |
| * tests/counterexample.at: Update test results. |
| |
| 2020-06-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: use the bullet in HTML |
| * data/xslt/xml2xhtml.xsl: here. |
| |
| 2020-06-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style changes |
| * src/counterexample.c: Simplify a bit. |
| * src/parse-simulation.c, src/parse-simulation.h: Enforce coding style. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: get rid of global_tokens_and_yystype |
| This was a hack to make it easier for people to migrate from yacc.c to |
| lalr1.cc and from glr.c to glr.cc: when set, YYSTYPE and YYLTYPE were |
| `#defined`. It was never documented (just mentioned in NEWS for Bison |
| 2.2, 2006-05-19), but was used to simplify the test suite. Stop that: |
| adjust the test suite to the skeletons, not the converse. |
| |
| In C++ use yy::parser::semantic_type, yy::parser::location_type, and |
| yy::parser::token::MY_TOKEN, instead of YYSTYPE, YYLTYPE and MY_TOKEN. |
| |
| * data/skeletons/glr.cc, data/skeletons/lalr1.cc: Remove its support. |
| * tests/actions.at, tests/c++.at, tests/calc.at: Adjust. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: don't assume the terminal supports "•" |
| Use of print_unicode_char suggested by Bruno Haible. |
| https://lists.gnu.org/r/bug-gettext/2020-06/msg00012.html |
| |
| * src/gram.h (print_dot_fallback, print_dot): New. |
| * src/gram.c, src/derivation.c: Use it. |
| * tests/counterexample.at, tests/report.at: Adjust the test suite. |
| * .travis.yml, README-hacking.md: Adjust. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: also include in the report on --report=counterexamples |
| And let --report=all include the counterexamples. |
| |
| * src/getargs.h, src/getargs.c (report_cex): New. |
| * src/main.c: Compute counterexamples when -rcex is specified. |
| * src/print.c: Include the counterexamples when -rcex is specified. |
| |
| * tests/conflicts.at, tests/existing.at, tests/local.at: Adjust. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: also include the counterexamples in the report |
| The report is the best place to show the details about |
| counterexamples, since we have the state right under the nose. |
| |
| For instance: |
| |
| State 7 |
| |
| 1 exp: exp . "⊕" exp |
| 2 | exp . "+" exp |
| 2 | exp "+" exp . [$end, "+", "⊕"] |
| 3 | exp . "+" exp |
| 3 | exp "+" exp . [$end, "+", "⊕"] |
| |
| "⊕" shift, and go to state 6 |
| |
| $end reduce using rule 2 (exp) |
| $end [reduce using rule 3 (exp)] |
| "+" reduce using rule 2 (exp) |
| "+" [reduce using rule 3 (exp)] |
| "⊕" [reduce using rule 2 (exp)] |
| "⊕" [reduce using rule 3 (exp)] |
| $default reduce using rule 2 (exp) |
| |
| Conflict between rule 2 and token "+" resolved as reduce (%left "+"). |
| |
| Shift/reduce conflict on token "⊕": |
| 2 exp: exp "+" exp . |
| 1 exp: exp . "⊕" exp |
| Example exp "+" exp • "⊕" exp |
| First derivation exp ::=[ exp ::=[ exp "+" exp • ] "⊕" exp ] |
| Example exp "+" exp • "⊕" exp |
| Second derivation exp ::=[ exp "+" exp ::=[ exp • "⊕" exp ] ] |
| |
| Reduce/reduce conflict on tokens $end, "+", "⊕": |
| 2 exp: exp "+" exp . |
| 3 exp: exp "+" exp . |
| Example exp "+" exp • |
| First derivation exp ::=[ exp "+" exp • ] |
| Example exp "+" exp • |
| Second derivation exp ::=[ exp "+" exp • ] |
| |
| Shift/reduce conflict on token "⊕": |
| 3 exp: exp "+" exp . |
| 1 exp: exp . "⊕" exp |
| Example exp "+" exp • "⊕" exp |
| First derivation exp ::=[ exp ::=[ exp "+" exp • ] "⊕" exp ] |
| Example exp "+" exp • "⊕" exp |
| Second derivation exp ::=[ exp "+" exp ::=[ exp • "⊕" exp ] ] |
| |
| * src/conflicts.h, src/conflicts.c (has_conflicts): New. |
| * src/counterexample.h, src/counterexample.c (print_counterexample): |
| Add a `prefix` argument. |
| (counterexample_report_shift_reduce) |
| (counterexample_report_reduce_reduce): Show the items when there's a |
| prefix. |
| * src/state-item.h, src/state-item.c (print_state_item): |
| Add a `prefix` argument. |
| * src/derivation.h, src/derivation.c (derivation_print) |
| (derivation_print_leaves): Add a prefix argument. |
| * src/print.c (print_state): When -Wcex is enabled, show the |
| conflicts. |
| * tests/report.at: Adjust. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: indent the diagnostics to highlight the structure |
| Instead of |
| |
| Shift/reduce conflict on token D: |
| Example A a • D |
| First derivation s ::=[ A a a ::=[ b ::=[ c ::=[ • ] ] ] d ::=[ D ] ] |
| Example A a • D |
| Second derivation s ::=[ A a d ::=[ • D ] ] |
| |
| display |
| |
| Shift/reduce conflict on token D: |
| Example A a • D |
| First derivation s ::=[ A a a ::=[ b ::=[ c ::=[ • ] ] ] d ::=[ D ] ] |
| Example A a • D |
| Second derivation s ::=[ A a d ::=[ • D ] ] |
| |
| * src/counterexample.c (print_counterexample): Indent. |
| * tests/counterexample.at: Adjust. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: don't report the items |
| Showing the items (with the state numbers) is really something we |
| should restrict to the report. |
| |
| * src/counterexample.c (counterexample_report_shift_reduce) |
| (counterexample_report_reduce_reduce): Don't show the pointed rules, |
| we will do that in the report. |
| * tests/counterexample.at: Adjust. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: make sure traces go to stderr |
| * src/parse-simulation.h, src/parse-simulation.c (print_parse_state): |
| here. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: add an argument to the reporting functions to specify the stream |
| * src/conflicts.c (find_state_item_number, report_state_counterexamples): |
| Move to... |
| * src/counterexample.h, src/counterexample.c (find_state_item_number) |
| (counterexample_report_state): this. |
| Add support for `out` as an argument. |
| (counterexample_report_reduce_reduce, counterexample_report_shift_reduce): |
| Accept an `out` argument, and be static. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: more uses of const |
| * src/print.c, src/state.h, src/state.c: here. |
| |
| 2020-06-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge 'maint' |
| * upstream/maint: |
| maint: post-release administrivia |
| version 3.6.4 |
| glr.cc: don't leak glr.c/glr.cc scaffolding to the user |
| |
| Some fixes were needed to adjust to recent changes in glr.cc and |
| glr.c. |
| |
| * data/skeletons/glr.cc: Stop messing with the user's epilogue to |
| insert glr.cc code. We need that code to be inserted _before_ the |
| user's epilogue, not after. So define b4_glr_cc_pre_epilogue. |
| * data/skeletons/glr.c: Use it. |
| |
| 2020-06-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-06-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.4 |
| * NEWS: Record release date. |
| |
| 2020-06-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: don't leak glr.c/glr.cc scaffolding to the user |
| Until we have a decent reimplementation of glr.cc, we have to use |
| tricks to shoehorn C++ symbols to the C engine of glr.c. Some of them |
| are done via #define. Unfortunately in Bison 3.6 some of these we |
| done in the header file, which broke valid user code. |
| |
| Reported by Egor Pugin. |
| https://lists.gnu.org/r/bug-bison/2020-06/msg00003.html |
| |
| * data/skeletons/glr.cc: Stop playing tricks with b4_pre_epilogue. |
| (b4_glr_cc_setup, b4_glr_cc_cleanup): New. |
| Much cleaner way to instal glr.cc's scaffolding around glr.c. |
| * data/skeletons/glr.c: Adjust to use them. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| reports: the column width differs from the byte count |
| From |
| |
| "number" shift, and go to state 1 |
| "Ñùṃéℝô" shift, and go to state 2 |
| |
| to |
| |
| "number" shift, and go to state 1 |
| "Ñùṃéℝô" shift, and go to state 2 |
| |
| * src/print.c: Use mbswidth, not strlen, to compute visual columns. |
| * tests/report.at: Adjust. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| reports: don't escape the labels |
| Currently we use "quotearg" to escape the strings output in Dot. As a |
| result, if the user's locale is C for instance, all the non-ASCII are |
| escaped. Unfortunately graphviz does not interpret this style of |
| escaping. |
| |
| For instance: |
| |
| 5 -> 2 [style=solid label="\"\303\221\303\271\341\271\203\303\251\342\204\235\303\264\""] |
| |
| was displayed as a sequence of numbers. We now output: |
| |
| 5 -> 2 [style=solid label="\"Ñùṃéℝô\""] |
| |
| independently of the user's locale. |
| |
| * src/system.h (obstack_backslash): New. |
| * src/graphviz.h, src/graphviz.c (escape): Remove, use |
| obstack_backslash instead. |
| * src/print-graph.c: Likewise. |
| * tests/report.at: Adjust. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: keep string aliases as the user wrote it |
| Currently our scanner decodes all the escapes in the strings, and we |
| later reescape the strings when we emit them. |
| |
| This is troublesome, as we do not respect the user input. For |
| instance, when the user writes in UTF-8, we destroy her string when we |
| write it back. And this shows everywhere: in the reports we show the |
| escaped string instead of the actual alias: |
| |
| 0 $accept: . exp $end |
| 1 exp: . exp "\342\212\225" exp |
| 2 | . exp "+" exp |
| 3 | . exp "+" exp |
| 4 | . "number" |
| 5 | . "\303\221\303\271\341\271\203\303\251\342\204\235\303\264" |
| |
| "number" shift, and go to state 1 |
| "\303\221\303\271\341\271\203\303\251\342\204\235\303\264" shift, and go to state 2 |
| |
| This commit preserves the user's exact spelling of the string aliases, |
| instead of interpreting the escapes and then reescaping. The report |
| now shows: |
| |
| 0 $accept: . exp $end |
| 1 exp: . exp "⊕" exp |
| 2 | . exp "+" exp |
| 3 | . exp "+" exp |
| 4 | . "number" |
| 5 | . "Ñùṃéℝô" |
| |
| "number" shift, and go to state 1 |
| "Ñùṃéℝô" shift, and go to state 2 |
| |
| Likewise, the XML (and therefore HTML) outputs are fixed. |
| |
| * src/scan-gram.l (STRING, TSTRING): Do not interpret the escapes in |
| the resulting string. |
| * src/parse-gram.y (unquote, parser_init, parser_free, unquote_free) |
| (handle_defines, handle_language, obstack_for_unquote): New. |
| Use them to unquote where needed. |
| * tests/regression.at, tests/report.at: Update. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check reports with conflicts and UTF-8 |
| This is to record the current state of the report, which escapes the |
| UTF-8 characters (as parse.error="verbose" does), but shouldn't (as |
| parse.error="detailed" does). |
| |
| * tests/report.at: here. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: factor common bits about string scanning |
| * src/scan-gram.l: here. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: introduce & use STRING_1GROW |
| * src/flex-scanner.h (STRING_1GROW): New. |
| * src/scan-gram.l, src/scan-skel.l: Use it. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/scan-gram.l (STRING_GROW_ESCAPE): Move the static_assert about |
| type sizes here. |
| |
| 2020-06-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer 'FOO ()' to 'FOO' for function-like macros |
| * src/flex-scanner.h (STRING_GROW, STRING_FINISH, STRING_FREE): |
| Make them function-like macros. |
| Adjust dependencies. |
| |
| 2020-06-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-06-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: suggest -Wcounterexamples when there are unexpected conflicts |
| Suggesting -Wcounterexamples when there are conflicts is probably not |
| what the user wants. If she knows her conflicts and has set |
| %expect/%expect-rr appropriately, we shouldn't warn. |
| |
| The commit also swaps the counterexamples and the report of conflicts, |
| into, IMHO, a more natural order: from |
| |
| Shift/reduce conflict on token B: |
| 1: 3 a: A . |
| 1: 8 y: A . B |
| Example A • B C |
| First derivation s ::=[ a ::=[ A • ] x ::=[ B C ] ] |
| Example A • B C |
| Second derivation s ::=[ y ::=[ A • B ] c ::=[ C ] ] |
| |
| input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr] |
| input.y:4.4: warning: rule useless in parser due to conflicts [-Wother] |
| |
| to |
| |
| input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr] |
| Shift/reduce conflict on token B: |
| 1: 3 a: A . |
| 1: 8 y: A . B |
| Example A • B C |
| First derivation s ::=[ a ::=[ A • ] x ::=[ B C ] ] |
| Example A • B C |
| Second derivation s ::=[ y ::=[ A • B ] c ::=[ C ] ] |
| |
| input.y:4.4: warning: rule useless in parser due to conflicts [-Wother] |
| |
| * src/conflicts.c (rule_conflicts_print): Rename as... |
| (report_rule_expectation_mismatches): this. |
| Move the handling of report_counterexamples to... |
| (conflicts_print): Here. |
| Display this warning when applicable. |
| |
| 2020-06-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: rename -Wcounterexample as -Wcounterexamples, and support -Wcex |
| Plural vs. singular is always a problem... |
| |
| But we already have conflicts-sr and conflicts-rr, so counterexamples |
| makes more sense than counterexample. Besides, -Wcounterexample will |
| still be accepted as an unambiguous prefix of -Wcounterexamples. |
| |
| Add -Wcex as a convenient alias. |
| |
| While at it, use only "counterexample", never "counter example". |
| |
| * src/complain.h, src/complain.c |
| (Wcounterexample, warning_counterexample): Rename as... |
| (Wcounterexamples, warning_counterexamples): these. |
| (argmatch_warning_docs): Rename -Wcounterexample as -Wcounterexamples. |
| (argmatch_warning_args): Likewise. |
| Add support for -Wcex. |
| Adjust dependencies. |
| |
| 2020-06-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.header.include: document it, and fix its default value |
| While defining api.header.include worked as expected, its default |
| value was incorrectly defined. As a result, by default, the generated |
| parsers still duplicated the content of the generated header instead |
| of including it. |
| |
| * data/skeletons/yacc.c (api.header.include): Fix its default value. |
| * tests/output.at: Check it. |
| * doc/bison.texi (%define Summary): Document api.header.include. |
| While at it, move the definition of api.namespace at the proper |
| place. |
| |
| 2020-06-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: color the counterexamples |
| Use colors to show the counterexamples and the derivations in color, |
| to highlight their structure. Align the outputs, and add i18n |
| support. Reduce width by using a one-space separator instead of |
| two-space. |
| |
| From |
| |
| Example A • B C |
| First derivation s ::=[ a ::=[ A • ] x ::=[ B C ] ] |
| Second derivation s ::=[ y ::=[ A • B ] c ::=[ C ] ] |
| |
| to |
| |
| Example A • B C |
| First derivation s ::=[ a ::=[ A • ] x ::=[ B C ] ] |
| Example A • B C |
| Second derivation s ::=[ y ::=[ A • B ] c ::=[ C ] ] |
| |
| with colors. |
| |
| * data/bison-default.css (cex-dot, cex-0, cex-1, cex-2, cex-3, cex-4) |
| (cex-5, cex-6, cex-7, cex-step, cex-leaf): New. |
| * src/derivation.c (derivation_print_styled_impl): New. |
| (derivation_print, derivation_print_leaves): Use it. |
| * src/counterexample.c: Reformat the output. |
| * tests/counterexample.at: Adjust. |
| |
| 2020-06-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: enforce case for tokens/nonterminals |
| It's unfortunate that the traditions between formal language theory |
| and Yacc differs, but here, tokens should be upper case, and |
| nonterminals should be lower case. |
| |
| * tests/counterexample.at: Comply with this. |
| |
| 2020-06-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: reformat the s/r and r/r reports |
| In Bison we refer to "shift/reduce" conflicts, not "shift-reduce" (in |
| Bison 3.6.3 186 occurrences vs 15). Enforce consistency on this. |
| |
| Instead of "spending" a second line for each conflict to report the |
| lookaheads, put that on the same line as the type of conflict. Also, |
| prefer "token" to "symbol". Maybe we should even prefer "lookahead". |
| While at it, enable internationalization, with plurals where |
| appropriate. |
| |
| As a consequence, instead of |
| |
| Shift-Reduce Conflict: |
| 6: 3 b: . %empty |
| 6: 6 d: c . A |
| On Symbol: A |
| |
| display |
| |
| Shift/reduce conflict on token A: |
| 6: 3 b: . %empty |
| 6: 6 d: c . A |
| |
| * NEWS, doc/bison.texi, src/conflicts.c: Spell it "shift/reduce", not |
| "shift-reduce". |
| * src/counterexample.c (counterexample_report_shift_reduce) |
| (counterexample_report_reduce_reduce): Reformat and internationalize |
| output. |
| * tests/counterexample.at: Adjust expectations. |
| |
| 2020-06-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix syntax-check issues |
| * src/counterexample.c, src/files.c, src/files.h, src/lssi.c, |
| * src/state-item.c: here. |
| |
| 2020-06-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| all: show the rules in comments before the user actions |
| For instance, in the case of Bison's own parser: |
| |
| - case 40: |
| + case 40: /* grammar_declaration: "%code" "identifier" "{...}" */ |
| { |
| muscle_percent_code_grow ((yyvsp[-1].ID), (yylsp[-1]), |
| translate_code_braceless ((yyvsp[0].BRACED_CODE), (yylsp[0])), |
| (yylsp[0])); |
| code_scanner_last_string_free (); |
| } |
| break; |
| |
| * data/skeletons/c.m4: Modified. |
| * data/skeletons/d.m4: Modified. |
| * data/skeletons/java.m4: Modified. |
| * src/output.c (output_escaped): New. |
| (quoted_output): Use it, and rename as... |
| (output_quoted): this. |
| Adjust dependencies. |
| (rule_output): New. |
| (user_actions_output): Use it. |
| * data/skeletons/c.m4, data/skeletons/d.m4, data/skeletons/java.m4 |
| (b4_case): Add support for $3, an optional comment. |
| |
| 2020-06-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: use GCC10 on ppc too |
| We were still using GCC9, because GCC10 was failing. |
| |
| * .travis.yml (PPC64le): Use GCC10. |
| While at it, use -O2 instead of -O3: it's certainly nicer for the |
| CPUs, and allows to test different sets of compiler flags (we use -O3 |
| in several other configurations). |
| |
| 2020-06-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix missing includes |
| * examples/c/bistromathic/parse.y: Use abort rather than assert so |
| that the "unused result" warning is silenced even with -DNDEBUG. |
| |
| 2020-06-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| warnings: fix -Wmissing-prototypes issues |
| * src/counterexample.c, src/lssi.c, src/parse-simulation.c, |
| * src/state-item.c: |
| Here. |
| |
| 2020-06-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge maint into HEAD |
| * upstream/maint: |
| maint: post-release administrivia |
| version 3.6.3 |
| build: check -Wmissing-prototypes |
| tests: show logs |
| c++: fix printing of state number on streams |
| |
| 2020-06-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-06-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.3 |
| * NEWS: Record release date. |
| |
| 2020-06-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: check -Wstrict-aliasing |
| * configure.ac (warn_common): Add -Wstrict-aliasing. |
| |
| 2020-06-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: using asan |
| * README-hacking.md: here. |
| |
| 2020-06-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix includes |
| * src/fixits.c: Follow our usual pattern. |
| * src/scan-code.l, src/scan-gram.l, src/scan-skel.l: Prefer "" to |
| include src/ headers. |
| * README-hacking.md: Document the pattern. |
| |
| 2020-06-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| lists: fix various issues with the use of gnulib's list |
| First, we should avoid code such as |
| |
| gl_list_iterator_t it = gl_list_iterator (deriv->children); |
| derivation *child = NULL; |
| while (gl_list_iterator_next (&it, (const void **) &child, NULL)) |
| { |
| derivation_print (child, f); |
| |
| because of -Wstrict-aliasing (whose job is to catch type-punning |
| issues). See https://lists.gnu.org/r/bug-bison/2020-05/msg00039.html. |
| |
| Rather we need |
| |
| gl_list_iterator_t it = gl_list_iterator (deriv->children); |
| const void **p = NULL; |
| while (gl_list_iterator_next (&it, &p, NULL)) |
| { |
| derivation *child = (derivation *) p; |
| derivation_print (child, f); |
| |
| Second, list iterators actually have destructors. Even though they |
| are noop in the case of linked-lists, we should use them. |
| |
| Let's address both issues with typed wrappers (such as |
| derivation_list_next) that take care of both issues, and besides allow |
| to scope the iterators within the loop: |
| |
| derivation *child; |
| for (gl_list_iterator_t it = gl_list_iterator (deriv->children); |
| derivation_list_next (&it, &child); |
| ) |
| { |
| derivation_print (child, f); |
| |
| * src/derivation.h, src/derivation.c (derivation_list_next): New. |
| Use it where appropriate. |
| * src/counterexample.c (search_state_list_next): New. |
| Use it where appropriate. |
| * src/parse-simulation.h, src/parse-simulation.c |
| * src/state-item.h (state_item_list_next): New. |
| Use it where appropriate. |
| |
| 2020-06-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: check -Wmissing-prototypes |
| pstate_clear is lacking a prototype. |
| Reported by Ryan |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00101.html |
| |
| Besides, none of the C examples were compiled with the warning flags. |
| |
| * configure.ac (warn_c): Add -Wmissing-prototypes. |
| * data/skeletons/yacc.c (pstate_clear): Make it static. |
| * examples/local.mk (TEST_CFLAGS): New. |
| * examples/c/bistromathic/local.mk, examples/c/calc/local.mk, |
| * examples/c/lexcalc/local.mk, examples/c/mfcalc/local.mk, |
| * examples/c/pushcalc/local.mk, examples/c/reccalc/local.mk, |
| * examples/c/rpcalc/local.mk: |
| Use it. |
| |
| GCC's warn_unused_result is not silenced by a cast to void, so we have |
| to "use" scanf's result. |
| https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509 |
| https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425 |
| |
| Flex generated code produces too many warnings, including things such |
| as, with ICC: |
| |
| examples/c/lexcalc/scan.c(1088): error #1682: implicit conversion |
| of a 64-bit integral type to a smaller integral type (potential portability problem) |
| 2259 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), |
| 2260 ^ |
| 2261 |
| 2262 |
| |
| I am tired of trying to fix Flex's output. The project does not seem |
| maintained. We ought to avoid it. So, for the time being, don't try |
| to enable warnings with Flex. |
| |
| * examples/c/bistromathic/parse.y, examples/c/reccalc/scan.l: Fix |
| warnings. |
| * doc/bison.texi: Discard scanf's return value to defeat |
| -Werror=unused-result. |
| |
| 2020-05-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-05-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: make item_index a truly different type from item_number |
| See previous commit. |
| |
| * src/gram.h (item_index): Make it unsigned. |
| Fix remaiming issues. |
| |
| 2020-05-25 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| style: decouple different uses of item_number |
| item_number is used for elements of ritem as well as indices into |
| ritem which is fairly confusing. Introduce item_index to represent |
| indices into ritem. |
| |
| * src/gram.h (item_index): Introduce it for ritem indices. |
| * src/closure.h, src/closure.c, src/ielr.c, src/lr0.c, |
| * src/print-graph.c, src/state.h, src/state.h: |
| Replace uses of item_number with item_index where appropriate. |
| |
| 2020-05-24 Joshua Watt <jpewhacker@gmail.com> |
| |
| bison: add command line option to map file prefixes |
| Teaches bison about a new command line option, --file-prefix-map OLD=NEW |
| (based on the -ffile-prefix-map option from GCC) which causes it to |
| replace and file path of OLD in the text of the output file with NEW, |
| mainly for header guards and comments. The primary use of this is to |
| make builds reproducible with different input paths, and in particular |
| the debugging information produced when the source code is compiled. For |
| example, a distro may know that the bison source code will be located at |
| "/usr/src/bison" and thus can generate bison files that are reproducible |
| with the following command: |
| |
| bison --output=/build/bison/parse.c -d --file-prefix-map=/build/bison/=/usr/src/bison/ parse.y |
| |
| Importantly, this will change the header guards and #line directives |
| from: |
| |
| #ifndef YY_BUILD_BISON_PARSE_H |
| #line 100 "/build/bison/parse.h" |
| |
| to |
| |
| #ifndef YY_USR_SRC_BISON_PARSE_H |
| #line 100 "/usr/src/bison/parse.h" |
| |
| which is reproducible. |
| |
| See https://lists.gnu.org/r/bison-patches/2020-05/msg00016.html |
| |
| * src/files.h, src/files.c (spec_mapped_header_file) |
| (mapped_dir_prefix, map_file_name, add_prefix_map): New. |
| * src/getargs.c (-M, --file-prefix-map): New option. |
| * src/output.c (prepare): Define b4_mapped_dir_prefix and |
| b4_spec_header_file. |
| * src/scan-skel.l (@ofile@): Output the mapped file name. |
| * data/skeletons/glr.c, data/skeletons/glr.cc, |
| * data/skeletons/lalr1.cc, data/skeletons/location.cc, |
| * data/skeletons/yacc.c: |
| Adjust. |
| * doc/bison.texi: Document. |
| * tests/input.at, tests/output.at: Check. |
| |
| 2020-05-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix expectations |
| Should have been part of 1ec93ca2a2b4718b5d94871475520a2688b4c5c8. |
| |
| * tests/counterexample.at: here. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: clean the display of conflicted symbols |
| Instead of `On Symbols: {b,c,}`, display `On Symbols: b, c`. |
| |
| * src/counterexample.c (counterexample_report_reduce_reduce): We don't |
| need braces. |
| Use commas as a separator, not a terminator. |
| * tests/counterexample.at: Adjust. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: show logs |
| * examples/c/bistromathic/bistromathic.test, examples/test: here. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix printing of state number on streams |
| Avoid this kind of display: |
| |
| LAC: checking lookahead identifier: R4 R3 G^B S5 |
| |
| * data/skeletons/lalr1.cc: Convert state_t to int before printing it. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix printing of state number on streams |
| Avoid this kind of display: |
| |
| LAC: checking lookahead identifier: R4 R3 G^B S5 |
| |
| * data/skeletons/lalr1.cc: Convert state_t to int before printing it. |
| |
| 2020-05-23 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix pruning crash |
| Fixes a crash on Cim's grammar. |
| https://lists.gnu.org/r/bison-patches/2020-05/msg00107.html |
| |
| * src/state-item.c (prune_disabled_paths): Prune forward and backwards |
| paths in seperate passes. |
| (prune_forward, prune_backward): New. |
| (disable_state_item): Change function argument from state_item_number |
| to state_item. |
| (state_items_report): Add disabling to graph print-out. |
| * src/conflicts.c (find_state_item_number, |
| report_state_counterexamples): Add SI_DISABLED checks. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| kinds: use the symbol kinds where applicable |
| Instead of generating switch statements with numbers, let's use the |
| symbol kinds. Not only is this more readable, it also makes reading |
| diff easier, as a change in symbol numbers won't have such a large |
| effect on the implementation of symbol actions. |
| |
| * data/skeletons/bison.m4 (_b4_symbol_case): Use the symbol kind |
| rather than its number. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| kinds: also define the possibly qualified symbol kinds |
| * data/skeletons/bison.m4 (b4_symbol_kind): Rename as... |
| (b4_symbol_kind_base): this. |
| (b4_symbol_kind): New, for fully qualified kind name. |
| * data/skeletons/lalr1.cc (b4_symbol_kind): New. |
| Adjust to use b4_symbol_kind where appropriate. |
| * src/parse-gram.h, src/parse-gram.c: regen. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: simplify useless quotation |
| * data/skeletons/bison.m4: The result of b4_symbol is "quoted" |
| already, no need for m4_expand. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: use m4_shift2 etc. |
| * data/skeletons/bison.m4 (m4_shift4): New. |
| Use them where applicable. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: show logs |
| * examples/c/bistromathic/bistromathic.test, examples/test: here. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: spell fixes |
| * Makefile.am (codespell): New. |
| * doc/bison.texi: Fixes. |
| Use @option for options. |
| * src/lssi.c, src/lssi.h, src/parse-simulation.h, src/state-item.c: |
| Fix spellos. |
| |
| 2020-05-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename user_token_number as code |
| This should have been done in 3.6, but I wanted to avoid introducing |
| conflicts into Vincent's work on counterexamples. It turns out it's |
| completely orthogonal. |
| |
| * data/README.md, data/skeletons/bison.m4, data/skeletons/c++.m4, |
| * data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/java.m4, |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java, |
| * data/skeletons/variant.hh, data/skeletons/yacc.c, src/conflicts.c, |
| * src/derives.c, src/gram.c, src/gram.h, src/output.c, |
| * src/parse-gram.c, src/parse-gram.y, src/print-xml.c, src/print.c, |
| * src/reader.c, src/symtab.c, src/symtab.h, tests/input.at, |
| * tests/types.at: |
| s/user_token_number/code/g. |
| Plus minor changes. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge maint into master |
| * upstream/maint: |
| fix generated comments |
| traces: provide a means to get short m4 traces |
| traces: show the full m4 invocation |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: replace state-item data structures |
| * src/state-item.h: Add trans, prods, and revs edges to state-item |
| struct. |
| (si_trans, si_revs, si_prods_lookup): Remove. |
| * src/state-item.c, src/lssi.c, src/parse-simulation.c, |
| * src/counterexample.c: Update state-item API usage accordingly. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix bad reference counting |
| * src/counterexample.c (si_bfs_free): Fix reference_count |
| decrementing. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix miscellaneous leaks |
| * src/counterexample.c (unifying_counterexample): Always free |
| stage3result when it exists. |
| * src/conflicts.c (report_state_counterexamples): free leaked bitset. |
| * src/state-item.c (prune_disabled_paths): free leaked queue. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix counterexample leak |
| * src/counterexample.c (free_counterexample): New. |
| Free counterexamples after printing. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix lssi leaks |
| * src/lssi.c (shortest_path_from_start): Free the root of |
| shortest_path_from_start search. |
| Free eligible bitset. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix parse state leaks |
| * src/parse_simulation.c: Fix bug in parse_state_free. |
| Free new_root when simulate_reduction generates zero states. |
| |
| * src/parse-simulation.c, src/parse-simulation.h |
| (parse_state_list, parse_state_list_append): New. |
| * src/parse-simulation.c, src/parse-simulation.h, |
| * src/counterexample.c: Replace all uses of lists of parse states and |
| appends to parse_state_lists with the new API. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: derivation reference counting |
| * src/derivation.h, src/derivation.c: Make derivation struct opaque. |
| Add derivation_list type for clarity. |
| (derivation_list_new): New. |
| (derivation_list_append): New. |
| (derivation_list_prepend): New. |
| (derivation_new_leaf): New constructor for derivations with no |
| children. |
| * src/counterexample.c, src/parse-simulation.c, |
| * src/parse-simulation.h: Replace uses of gl_list_t containing |
| derivations with derivation_list and its API. |
| Replace calls of dervation_new using null children with |
| derivation_new_leaf. |
| * src/parse-simulation.c: replace ps_chunk and its API with typed |
| versions si_chunk and deriv_chunk. |
| * src/parse-simlation.h, src/parse-simulation.c: Remove |
| parse_state_retain_deriv in favor of derivation reference counting. |
| * src/counterexample.c: Remove search_state_retain_deriv. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style changes in parse-simulation |
| * src/parse-simulation.c: Formatting changes. |
| (parse_state_list_new): New. |
| Use it. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style: prefer res for returned value |
| * src/lssi.c, src/parse-simulation.c: here. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fix memory leaks when there are conflicts |
| * src/counterexample.c (production_step, reduction_step): Release |
| memory of temporary objects. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: be sure to always reclaim memory put in hashes |
| One call to hash_initialize did not provide a function to free memory. |
| |
| * src/state-item.c (hash_pair_table_create): New. |
| Use it. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: properly reclaim hash's allocated memory |
| * src/state-item.c: Use hash_free where appropriate. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: avoid gratuitous heap allocations |
| There's no need to go for the heap when using gnulib's hash module. |
| |
| * src/state-item.c (hash_pair_lookup, hash_pair_remove, |
| state_sym_lookup): Use the heap Luke. |
| That removes a leak from hash_pair_lookup. |
| (init_prods): Use hash_pair_insert instead of duplicating it. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix leaks |
| * src/state-item.c: Various functions were using heap allocated locals |
| and not freeing them. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use hash_xinsert |
| * gnulib: Update to get hash_xinsert. |
| Use it where appropriate. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: style changes in state-item |
| * src/state-item.h, src/state-item.c (state_item): Make the state |
| const. |
| (state_item_set): Make it clearer that it works in the state_items |
| global array. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: stylistic changes |
| * src/counterexample.c: Use 'res' as a variable name for returned |
| value, as elsewhere. |
| Avoid uninitialized variables, especially pointers. |
| Avoid assignment where possible. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: avoid uninitialized variables |
| * src/counterexample.c (item_rule_bounds): Split into... |
| (item_rule_start, item_rule_end): these. |
| Adjust dependencies. |
| * src/conflicts.c (find_state_item_number): New. |
| Use it to avoid uninitialized variables. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: isolate missing API from gl_list |
| * src/counterexample.c (list_get_end): New. |
| Use it. |
| Reduce scopes. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: tests: be robust to variations in time limit reports |
| The CI has "failures" such as (253, "Null nonterminals"): |
| |
| @@ -21,7 +21,7 @@ |
| 3: 3 b: . %empty |
| 3: 4 c: . %empty |
| On Symbols: {A,} |
| -time limit exceeded: 6.000000 |
| +time limit exceeded: 11.000000 |
| First Example c • c A A $end |
| First derivation $accept ::=[ a ::=[ c d ::=[ a ::=[ b ::=[ • ] d ::=[ c A A ] ] ] ] $end ] |
| Second Example c • A $end |
| |
| * tests/counterexample.at (AT_BISON_CHECK_CEX): New. |
| Use it to neutralize differences in timeout values. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix stack overflow |
| * src/parse-simulation.c: Replace reference counting with |
| parse_state_retain everywhere. |
| (free_parse_state): Make this function iterative instead of |
| recursive. Long parse_state chains were causing stack exhaustion. |
| |
| * tests/counterexample.at: Fix expectations. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: fix crash from zombie result |
| Fixes the SEGV in test 247 (counterexample.at:195): "S/R after first |
| token". |
| |
| * src/counterexample.c: here. |
| * tests/counterexample.at: Fix expectations. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fixes, and enable tests |
| * src/counterexample.c, src/derivation.c: |
| Do not output diagnostics on stdout, that's the job of stderr, and the |
| testsuite heavily depend on this. |
| Do not leave trailing spaces in the output. |
| * tests/counterexample.at: Use AT_KEYWORDS. |
| Specify the expected outputs. |
| * tests/local.mk: Add counterexample.at. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: fix a crash |
| * src/state-item.c (init_state_items): If the rule has no reductions |
| at all, don't read at all in its list of reduced rules. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: add tests |
| * tests/counterexample.at: New. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: bind counterexample generation |
| * src/complain.h, src/complain.c: Add support for -Wcounterexample. |
| * src/conflicts.c (report_counterexamples): New. |
| (rule_conflicts_print): Use it when -Wcounterexample is given. |
| * src/getargs.h, src/getargs.c: Add support for --trace=cex. |
| * src/main.c (main): Init and deinit counterexample generation. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: introduce counterexample search |
| * src/counterexample.h, src/counterexample.c: New. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: introduce the parse simulator |
| * src/derivation.h, src/derivation.c, |
| * src/parse-simulation.h, src/parse-simulation.c: New. |
| |
| 2020-05-22 Vincent Imbimbo <vmi6@cornell.edu> |
| |
| cex: add support for state-item pair graph generation |
| * src/lssi.h, src/lssi.c, src/state-item.h, src/state-item.c: New. |
| |
| 2020-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| cex: add gnulib dependencies |
| * bootstrap.conf (gnulib_modules): Add linked-list. |
| |
| 2020-05-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix generated comments |
| In Bison 3.6.2, the comments with brackets lose their brackets, for |
| improper m4 quotation. |
| |
| * data/skeletons/bison.m4 (b4_gsub): New. |
| * data/skeletons/c-like.m4 (_b4_comment): Use it. |
| * tests/m4.at: Check b4_gsub. |
| |
| 2020-05-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: provide a means to get short m4 traces |
| Let --trace=m4-early dump all the logs from the start (as --trace=m4 |
| used to do), and have --trace=m4 now start traces only when actually |
| working of the user's grammar. |
| |
| Can make a big difference in the case of small inputs. E.g. |
| |
| $ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4 |& wc |
| 3952 19446 251068 |
| $ bison -S tests/testsuite.dir/001/input.m4 tests/testsuite.dir/001/input.y --trace=m4-early |& wc |
| 19491 131904 1830495 |
| |
| * data/skeletons/traceon.m4: New. |
| * src/getargs.h, src/getargs.c: Introduce --trace=m4-early. |
| * src/output.c (output_skeleton): Adjust for --trace=m4 and --trace=m4-early. |
| |
| 2020-05-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: show the full m4 invocation |
| Unfortunately the effect of -dV is still position independent. |
| |
| * src/output.c (output_skeleton): here. |
| |
| 2020-05-20 Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| |
| src: make path to m4 relocatable |
| Commit a4ede8f85b0c9a254fcb01e5888cee1983095669 ("package: make bison |
| a relocatable package") made Bison relocatable, but in fact it still |
| contains one absolute reference: the M4 variable, which points to the |
| M4 program. Let's fix that by using relocate(), see if an M4 binary is |
| available at the relocated location, and otherwise fallback to the |
| original M4 location. |
| |
| See https://lists.gnu.org/r/bison-patches/2020-05/msg00078.html, |
| and https://lists.gnu.org/r/bison-patches/2020-05/msg00087.html. |
| |
| * src/files.h, src/files.c (m4path): New. |
| * src/output.c: Use it. |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: fix PPC recipe |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * upstream/maint: |
| maint: post-release administrivia |
| version 3.6.2 |
| tests: improve update-test |
| CI: add GCC 10 and Clang 10 |
| fix: do not emit nested comments |
| todo: update |
| examples: use markdown hyperlinks |
| tests: don't use == to compare const char *... |
| gnulib: update |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: more fixes for _Noreturn |
| The previous fix was insufficient. |
| |
| tests/types.at:366: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o test test.cc $LIBS |
| ++ ccache clang++-mp-9.0 -Qunused-arguments -ggdb -Wall -Wextra -Wcast-align -Wchar-subscripts -fparse-all-comments -Wdocumentation -Wformat -Wimplicit-fallthrough -Wnull-dereference -Wno-sign-compare -Wno-tautological-constant-out-of-range-compare -Wpointer-arith -Wshadow -Wwrite-strings -Wextra-semi -Wold-style-cast -Wundefined-func-template -Wweak-vtables -Wunreachable-code -Wundef -pedantic -Wconversion -Wdeprecated -Wsign-compare -Wsign-conversion -Wtautological-constant-out-of-range-compare -fno-color-diagnostics -Wno-keyword-macro -Werror -std=c++98 -I/Users/akim/src/gnu/bison/tests -isystem /opt/gostai/include -isystem /opt/local/include -L/opt/gostai/lib -L/opt/local/lib -o test test.cc /Users/akim/src/gnu/bison/_build/c9d/lib/libbison.a -lintl -Wl,-framework -Wl,CoreFoundation |
| stderr: |
| test.cc:955:1: error: _Noreturn functions are a C11-specific feature [-Werror,-Wc11-extensions] |
| _Noreturn static void |
| ^ |
| test.cc:963:1: error: _Noreturn functions are a C11-specific feature [-Werror,-Wc11-extensions] |
| _Noreturn static void |
| ^ |
| 2 errors generated. |
| |
| * data/skeletons/c.m4 (b4_attribute_define): Do not use _Noreturn at |
| all in C++, clang or not. |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.2 |
| * NEWS: Record release date. |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: improve update-test |
| * build-aux/update-test: When given a directory, use the testsuite.log |
| which it contains. |
| Do not accept empty "from"s, as substituting the empty string with |
| something is rarely a good idea. |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: add GCC 10 and Clang 10 |
| * .travis.yml: Here. |
| * tests/input.at, tests/regression.at: Beware of clang's -Wdocumentation. |
| |
| 2020-05-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: do not emit nested comments |
| With input such as |
| |
| %token<fl> yVL_CLOCK "/*verilator sc_clock*/" |
| |
| we generate |
| |
| yVL_CLOCK = 610, /* "/*verilator sc_clock*/" */ |
| |
| which is invalid since the comment will actually be closed on the |
| first "*/". Let's turn "*/" into "*\/" to avoid this. But GCC will |
| also warn about "/*" inside a comment, so let's "escape" it too. |
| |
| Reported by Huang Rui. |
| https://github.com/akimd/bison/issues/38 |
| |
| * data/skeletons/c-like.m4 (_b4_comment): Escape comment delimiters in |
| comments. |
| * tests/input.at (Torturing the Scanner): Check thes cases. |
| * tests/m4.at: New. |
| |
| 2020-05-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: restore definition of _Noreturn as [[noreturn]] in C++ |
| c.m4 contains a definition of _Noreturn which is modeled after |
| gnulib's lib/_Noreturn.h. The latter was recently |
| changed (b61bf2f0e8bdc1e522ae8e97d57d5625163b42ea) to not using |
| [[noreturn]] at all, because the uses of _Noreturn in gnulib are |
| sometimes incompatible with the rules of [[noreturn]]. |
| |
| As a result glr.cc started to use _Noreturn in C++, which clang |
| refuses (all the glr.cc tests currently fail with Clang++). |
| |
| * data/skeletons/c.m4 (b4_attribute_define): Restore the definition of |
| _Noreturn as [[noreturn]] in modern C++. |
| The generated code uses _Noreturn in places where [[noreturn]] is |
| valid. |
| |
| 2020-05-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: don't promote unchecked function calls |
| * etc/bench.pl.in, examples/c/bistromathic/parse.y, |
| * examples/c/calc/calc.y, examples/c/pushcalc/calc.y: Check scanf's |
| return value. |
| * doc/bison.texi: Likewise, but only for the second example, to avoid |
| cluttering the very simple case. |
| |
| 2020-05-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-05-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-05-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: use markdown hyperlinks |
| * examples/c++/README.md, examples/c++/calc++/README.md, |
| * examples/c/README.md: here. |
| |
| 2020-05-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't use == to compare const char *... |
| Reported by Dagobert Michelsen. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00091.html |
| |
| * tests/c++.at: here. |
| |
| 2020-05-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-05-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: improve update-test |
| * build-aux/update-test: When given a directory, use the testsuite.log |
| which it contains. |
| Do not accept empty "from"s, as substituting the empty string with |
| something is rarely a good idea. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch maint |
| * maint: |
| news: update |
| maint: post-release administrivia |
| version 3.6.1 |
| c++: style: reorder generated code |
| c++: provide yy::parser::symbol_type::name |
| c++: make parser::symbol_name public |
| examples: beware of ~/.inputrc |
| build: also provide lzip compressed tarballs |
| style: minor fixes |
| yacc.c: restore ansi-c compatibility |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6.1 |
| * NEWS: Record release date. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: add support to randomize the order of execution |
| It's amazing how much the order matters. To a point that many of |
| these benches are meaningless. For instance (some of the benches |
| where run with `make -C benches/latest rand |
| BENCHFLAGS=--benchmark_min_time=3`): |
| |
| compiler: g++ -std=c++11 -O2 |
| 0. %define nofinal |
| 1. |
| -------------------------------------------------- |
| Benchmark Time CPU Iterations |
| -------------------------------------------------- |
| BM_y0 1543 ns 1541 ns 441660 |
| BM_y1 1521 ns 1520 ns 456535 |
| -------------------------------------------------- |
| BM_y0 1531 ns 1530 ns 440584 |
| BM_y1 1512 ns 1511 ns 457591 |
| -------------------------------------------------- |
| BM_y0 1539 ns 1538 ns 2749330 |
| BM_y1 1516 ns 1515 ns 2771500 |
| -------------------------------------------------- |
| BM_y0 1571 ns 1570 ns 2600782 |
| BM_y1 1542 ns 1541 ns 2708349 |
| -------------------------------------------------- |
| BM_y0 1530 ns 1529 ns 2670363 |
| BM_y1 1519 ns 1518 ns 2764096 |
| |
| -------------------------------------------------- |
| Benchmark Time CPU Iterations |
| -------------------------------------------------- |
| BM_y1 1529 ns 1528 ns 451937 |
| BM_y0 1508 ns 1507 ns 453944 |
| -------------------------------------------------- |
| BM_y1 1525 ns 1524 ns 2750684 |
| BM_y0 1516 ns 1515 ns 2794034 |
| -------------------------------------------------- |
| BM_y1 1526 ns 1525 ns 2749620 |
| BM_y0 1515 ns 1514 ns 2808112 |
| -------------------------------------------------- |
| BM_y1 1524 ns 1523 ns 4475844 |
| BM_y0 1502 ns 1501 ns 4611665 |
| |
| * etc/bench.pl.in: here. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: use a Makefile |
| This makes it much easier to toy with the benchs. |
| |
| * etc/bench.pl.in: Generate a Makefile instead of directly compiling |
| the files. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: use markdown hyperlinks |
| * examples/c++/README.md, examples/c++/calc++/README.md, |
| * examples/c/README.md: here. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| don't use stdnoreturn |
| Reported by Paul Eggert. |
| |
| * src/getargs.c: We don't need it anyway, since we use _Noreturn. |
| * data/skeletons/c.m4: While at it, update the definition of _Noreturn |
| stolen from gnulib. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style: reorder generated code |
| The implementation of yy::parser::symbol_name is emitted even before |
| the implementation of yy::parser::parser. This makes little sense. |
| |
| * data/skeletons/lalr1.cc (symbol_name): Move its implementation in |
| the same place as in the class definition: after "error" and before |
| "context". |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: provide yy::parser::symbol_type::name |
| * data/skeletons/c++.m4 (yy::parser::basic_symbol::name): New. |
| * data/skeletons/lalr1.cc (yy_print_): Use it. |
| * doc/bison.texi: Document. |
| * tests/c++.at: Check. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: make parser::symbol_name public |
| Reported by Martin Blais <blais@furius.ca>. |
| https://lists.gnu.org/r/help-bison/2020-05/msg00005.html |
| |
| * data/skeletons/lalr1.cc (symbol_name): Make it public. |
| Add a private hidden hook to enable testing of private parts. |
| * tests/local.at (AT_DATA_GRAMMAR_PROLOGUE): Help Emacs find the right |
| language mode. |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): Check that we |
| can read symbol_name. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of ~/.inputrc |
| * examples/c/bistromathic/bistromathic.test: here. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: also provide lzip compressed tarballs |
| Suggested by Matias Fonzo <selk@dragora.org>. |
| |
| * cfg.mk: Post announcements to bison-announce. |
| * configure.ac: Build lzip packages. |
| * .travis.yml: Build only xz, we don't care about the other formats |
| here. |
| |
| 2020-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor fixes |
| * examples/c/README.md: here. |
| |
| 2020-05-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: restore ansi-c compatibility |
| Reported by neok-m4700. |
| https://github.com/akimd/bison/issues/37 |
| |
| * data/skeletons/yacc.c: Don't use // comments. |
| |
| 2020-05-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: use *.cc for C++ |
| Using *.c is simpler, but triggers annoying warnings with Clang++. |
| |
| * etc/bench.pl.in: Please the dictator. |
| |
| 2020-05-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor fixes |
| * examples/c/README.md: here. |
| |
| 2020-05-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update, and use the attribute module |
| * gnulib: Update. |
| * bootstrap.conf: Use attribute. |
| * src/system.h: Remove macros for attributes. |
| Adjust dependencies. |
| * src/scan-gram.l (DEPRECATED): Rename as... |
| (DEPRECATED_DIRECTIVE): this, to avoid the clash with the DEPRECATED macro. |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: also provide lzip compressed tarballs |
| Suggested by Matias Fonzo <selk@dragora.org>. |
| |
| * cfg.mk: Post announcements to bison-announce. |
| * configure.ac: Build lzip packages. |
| * .travis.yml: Build only xz, we don't care about the other formats |
| here. |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.6 |
| * NEWS: Record release date. |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of portability issue on Windows |
| Reported by Jannick. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00040.html |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00066.html |
| |
| * examples/test (diff_opts): Use --strip-trailing-cr if supported, to |
| avoid \n vs. \r\n issues. |
| * examples/c/bistromathic/bistromathic.test: When on MSYS, don't try |
| to check autocompletion. |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix the generation of the man page |
| When there is no bison.1 at all, the procedure fails. |
| |
| * doc/local.mk (bison.1): Be robust to cold starts. |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: prepare for 3.6 |
| |
| 2020-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: complete the table of symbols |
| * doc/bison.texi: Add YYEMPTY, YYEOF and YYUNDEF. |
| |
| 2020-05-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify the glossary item about kinds |
| * doc/bison.texi (Glossary): here. |
| |
| 2020-05-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-05-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.94 |
| * NEWS: Record release date. |
| |
| 2020-05-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document yypstate_expected_tokens |
| * doc/bison.texi (Push Parser Interface): Here. |
| |
| 2020-05-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: restructure the push parser documentation |
| I don't think it's fair to have yypstate_new, yypstate_delete, |
| yypush_parse and yypull_parse to have their own section, on par with |
| yyparse and yylex. Let them be in a single section about push |
| parsers. And show new/delete first. |
| |
| * doc/bison.texi (Push Parser Interface): New. |
| Fuse the aforementioned sections into it. |
| |
| 2020-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| all: fix the interface of yyexpected_tokens |
| The user gives yyexpected_tokens a limit: the max number of tokens she |
| wants to hear about. That's because an error message that reports a |
| bazillion of possible tokens is useless. |
| |
| In that case yyexpected_tokens returned 0, so the user would not know |
| if there are too many expected tokens or none (yes, that's possible). |
| |
| There are several ways to tell the user in which situation she's in: |
| |
| - return some E2MANY, a negative value. Then it makes the pattern |
| |
| int argsize = yypcontext_expected_tokens (ctx, arg, ARGS_MAX); |
| if (argsize < 0) |
| return argsize; |
| |
| no longer valid, as for E2MANY (i) the user must generate the error |
| message anyway, and (ii) she should not return E2MANY |
| |
| - return ARGS_MAX + 1. Then it makes it dangerous for the user, as |
| she has to iterate update `min (ARGS_MAX, argsize)`. |
| |
| Returning 0 is definitely simpler and safer for the user, as it tells |
| her "this is not an error, just generate your message without a list |
| of expecting tokens". So let's still return 0, but set arg[0] to the |
| empty token when the list is really empty. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.java |
| * data/skeletons/yacc.c (yyexpected_tokens): Put the empty symbol |
| first if there are no possible tokens at all. |
| * examples/c/bistromathic/parse.y: Demonstrate how to use that. |
| |
| 2020-05-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix handling of syntax errors |
| The shell grammar does not allow empty statements in then/else part of |
| an if, but examples/test failed to catch the syntax errors from the |
| script it ran. So exited with success anyway. |
| |
| You would expect 'set -e' to suffice, but with bash 3.2 actually it |
| does not. As a matter of fact, I could find a way to have this behave |
| properly: |
| |
| $ cat test.sh |
| set -e |
| cleanup () |
| { |
| status=$? |
| echo "cleanup: $status" |
| exit $status |
| } |
| trap cleanup 0 1 2 13 15 |
| . $1 |
| s=$? |
| echo "test.sh: $s" |
| exit $s |
| |
| $ cat bistro.test |
| if true; then |
| fi |
| |
| $ /bin/sh ./test.sh ./bistro.test |
| ./bistro.test: line 2: syntax error near unexpected token `fi' |
| cleanup: 0 |
| $ echo $? |
| 0 |
| |
| Remove the set -e (or the trap), and tada, it works... So we have to |
| deal with the error by hand. |
| |
| * examples/test ($exit): Replace with... |
| ($status): this. |
| Preserve the exit status of the test case. |
| * examples/c/bistromathic/bistromathic.test: Fix syntax error. |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: beware of timestamp issues on Haiku |
| On Haiku, help2man is fired on a freshly extracted tarball. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00055.html |
| |
| * doc/local.mk (bison.1): Be robust to a missing help2man. |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of wchar_t portability issues on AIX |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00050.html |
| Reported by Bruno Haible. |
| |
| * tests/diagnostics.at: here. |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: beware of portability issues with PTRDIFF_MAX |
| For instance test 386, "glr.cc api.value.type={double}": |
| |
| types.at:366: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o test test.cc $LIBS |
| stderr: |
| test.cc: In function 'ptrdiff_t yysplitStack(yyGLRStack*, ptrdiff_t)': |
| test.cc:490:4: error: 'PTRDIFF_MAX' was not declared in this scope |
| (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : YY_CAST (ptrdiff_t, SIZE_MAX)) |
| ^ |
| test.cc:1805:37: note: in expansion of macro 'YYSIZEMAX' |
| ptrdiff_t half_max_capacity = YYSIZEMAX / 2 / state_size; |
| ^~~~~~~~~ |
| test.cc:490:4: note: suggested alternative: '__PTRDIFF_MAX__' |
| (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : YY_CAST (ptrdiff_t, SIZE_MAX)) |
| ^ |
| test.cc:1805:37: note: in expansion of macro 'YYSIZEMAX' |
| ptrdiff_t half_max_capacity = YYSIZEMAX / 2 / state_size; |
| ^~~~~~~~~ |
| |
| The failing tests are using glr.cc only, which I don't understand, the |
| problem is rather in glr.c, so I would expect glr.c tests to also fail. |
| |
| Reported by Bruno Haible. |
| https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00053.html |
| |
| * data/skeletons/yacc.c: Move the block that defines |
| YYPTRDIFF_T/YYPTRDIFF_MAXIMUM, YYSIZE_T/YYSIZE_MAXIMUM, and |
| YYSIZEOF to... |
| * data/skeletons/c.m4 (b4_sizes_types_define): Here. |
| (b4_c99_int_type): Also take care of the #undefinition of short. |
| * data/skeletons/yacc.c, data/skeletons/glr.c: Use |
| b4_sizes_types_define. |
| * data/skeletons/glr.c: Adjust to use YYPTRDIFF_T/YYPTRDIFF_MAXIMUM, |
| YYSIZE_T/YYSIZE_MAXIMUM. |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of strnlen portability issues |
| One function missing on Solaris 10 Sparc: |
| |
| CCLD examples/c/bistromathic/bistromathic |
| Undefined first referenced |
| symbol in file |
| strnlen examples/c/bistromathic/bistromathic-parse.o |
| ld: fatal: symbol referencing errors. No output written to examples/c/bistromathic/bistromathic |
| |
| Reported by Dagobert Michelsen. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00048.html |
| |
| * examples/c/bistromathic/parse.y (xstrndup): Don't use strnlen. |
| xstrndup is assembled from gnulib's xstrndup, strndup and strnlen... |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of portability issues with sh's trap |
| On AIX 7.2, when invoking "exit 77", we actually exit with 127. The |
| "cleanup" function, called via trap, received an incorrect exit |
| status, something described in Autoconf's doc. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00029.html |
| https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00047.html |
| |
| * examples/test (skip): New. |
| * examples/c/bistromathic/bistromathic.test, |
| * examples/c/reccalc/reccalc.test: Use it, to ensure $? is set to 77 |
| when the trap is called. |
| |
| 2020-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of portability issues with diff -u |
| AIX 7.1 supports diff -u, but its output does not match the expected |
| one. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00049.html |
| |
| * tests/atlocal.in (DIFF_U_WORKS): New. |
| * tests/local.at (AT_DIFF_U_CHECK): New. |
| * tests/existing.at (_AT_TEST_EXISTING_GRAMMAR): Use AT_DIFF_U_CHECK. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.93 |
| * NEWS: Record release date. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update for 3.5.93 |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: really skip tricky multichar test on Cygwin |
| In Autotest, anything outside AT_SETUP/AT_CLEANUP is discarded. |
| |
| * tests/diagnostics.at (AT_TEST): Accept a skip-if test. |
| Use it to skip on cygwin. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: beware of portability issues of readline on AIX |
| Readline may emit escape sequences before the prompt. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/platform-testers/2020-05/msg00001.html. |
| |
| * examples/c/bistromathic/bistromathic.test: Trust readline _only_ if |
| we get what we expect on some reference computation. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of portability issues with cmp |
| As someone wrote nearly 20 years ago in Autoconf's documentation, |
| don't use cmp to compare text files, but diff. |
| https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=abad4f0576a7dc361e5385e19c7681449103cdb1 |
| Reported by Jannick. |
| |
| * examples/test: Use diff, not cmp. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix warnings (shown on IRIX) |
| Appearing on IRIX with gcc -mabi=n32. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00039.html |
| |
| * examples/c++/variant-11.yy, examples/c/bistromathic/parse.y: Don't |
| give chars to isdigit, cast them to unsigned char before. |
| * src/complain.c: Use c_isdigit. |
| * src/fixits.c (fixits_run): Avoid casts. |
| * src/lalr.c (goto_print): Use %zu for a size_t. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: be compatible with the pre-3.6 way to get a symbol's kind |
| Reported by Pramod Kumbhar. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00025.html |
| |
| * data/skeletons/c++.m4: here. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: beware of portability issues with strndup |
| Reported by Dagobert Michelsen. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00026.html |
| |
| * examples/c/bistromathic/parse.y (xstrndup): New. |
| Use it. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| flex: fix incorrect use of Automake conditional |
| AM_CONDITIONAL does _not_ define a shell variable... |
| Reported privately by Denis Excoffier. |
| |
| * configure.ac (LEX_CXX_WORKS): Fix its definition. |
| |
| 2020-05-03 Bruno Haible <bruno@clisp.org> |
| |
| package: fix a link error on IRIX |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00035.html |
| |
| * src/local.mk (src_bison_LDADD): Mention libbison.a before, not after, the |
| system libraries. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: beware of portability of readline |
| Don't try to build bistromathic if we don't have readline. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00028.html |
| |
| * configure.ac (ENABLE_BISTROMATHIC): New. |
| * examples/c/bistromathic/local.mk: Use it. |
| * examples/c/bistromathic/bistromathic.test: Exit 77 for skip. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of portability issues of sh |
| "foo || bar" does not invoke bar on AIX 7.2 when foo does not exist. |
| It just dies. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00029.html |
| |
| * examples/c/reccalc/reccalc.test: Check for seq in a subshell. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.92 |
| * NEWS: Record release date. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update for 3.5.92 |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: demonstrate push parsers |
| * data/skeletons/lalr1.java (Location): Make it a static class. |
| (Lexer.yylex, Lexer.getLVal, Lexer.getStartPos, Lexer.getEndPos): |
| These are not needed in push parsers. |
| * examples/java/calc/Calc.y: Demonstrate push parsers in the Java. |
| * doc/bison.texi: Push parsers have been supported for a long time, |
| remove incorrect statements stating the opposite. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify what a location is |
| Reported by Arthur Schwarz <aschwarz1309@att.net> |
| https://lists.gnu.org/r/help-bison/2013-12/msg00009.html |
| |
| * doc/bison.texi (Location Type): here. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of mbswidth portability issues |
| Shy away from these issues on Cygwin. |
| Reported Denis Excoffier. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00003.html |
| |
| * tests/diagnostics.at (Tabulations and multibyte characters): Split |
| in two. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of intl portability issues |
| Reported by Horst von Brand. |
| https://lists.gnu.org/r/bug-bison/2020-04/msg00033.html |
| |
| * examples/c/bistromathic/Makefile: libintl might not be needed, but |
| libm probably is. |
| * examples/c/bistromathic/parse.y: Include locale.h. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of portability issues with readline |
| On OpenBSD 6.5, the prompt is repeated, but not the actual command |
| line... Don't try to cope with that. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00015.html |
| |
| * examples/c/bistromathic/bistromathic.test: Skip when readline behave |
| this way. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of the portability of flex --header-file |
| The option --header was introduced in version 2.5.6. |
| The option --header-file was introduced in version 2.6.4. |
| Reported by Bruno Haible. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00013.html |
| |
| So use --header, and do bother with versions that don't support it. |
| |
| * m4/flex.m4: Check whether flex supports --header. |
| * configure.ac (FLEX_WORKS, FLEX_CXX_WORKS): Set to false if it doesn't. |
| * * examples/c/reccalc/local.mk, examples/c/reccalc/Makefile: |
| Use --header rather than --header-file. |
| |
| 2020-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: provide backward compatibility on by_type |
| To write unit tests for their scanners, some users depended on |
| symbol_type::token(): |
| |
| Lexer lex("12345"); |
| symbol_type t = lex.nextToken(); |
| assert(t.token() == token::INTLIT); |
| assert(t.value.as<int>() == 12345); |
| |
| But symbol_type::token() was removed in Bison 3.5 because it relied on |
| a conversion table. So users had to find other patterns, such as |
| |
| assert(t.type_get() == by_type(token::INTLIT).type_get()); |
| |
| which relies on several private implementation details. |
| |
| As part of transitioning from "token type" to "token kind", and making |
| this a public and documented interface, "by_type" was renamed |
| "by_kind" and "type_get()" was renamed as "kind()". The latter had |
| backward compatibility mechanisms, not the former. |
| |
| In Bison 3.6 none of this should be used, but rather |
| |
| assert(t.kind() == symbol_kind::S_INTLIT); |
| |
| Reported by Pramod Kumbhar. |
| https://lists.gnu.org/r/bug-bison/2020-05/msg00012.html |
| |
| * data/skeletons/c++.m4 (by_type): Make it an alias to by_kind. |
| |
| 2020-05-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: improve formatting of the generated code |
| * data/skeletons/yacc.c (yy_reduce_print): here. |
| |
| 2020-05-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: java supports push parsers since 3.0 (2013-07-25) |
| * doc/bison.texi: Clarify this. |
| |
| 2020-05-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: fix coding style |
| I don't plan to fix everything in one go. But this was in the way of |
| the next commit. |
| |
| * data/skeletons/lalr1.java: Avoid space before parens. |
| * tests/java.at: Adjust. |
| |
| 2020-05-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * tests/java.at: here. |
| |
| 2020-05-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: more |
| |
| 2020-05-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: more documentation about errs |
| Suggested by Angelo Borsotti. |
| https://lists.gnu.org/r/bug-bison/2014-02/msg00003.html |
| |
| * src/state.h: here. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document the exit status |
| Suggested by Alexandre Duret-Lutz. |
| https://lists.gnu.org/r/bug-bison/2013-09/msg00015.html |
| |
| * doc/bison.texi (Invocation): Here. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: add missing i18n requests |
| * data/skeletons/lalr1.java (reportSyntaxError): Here. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: style: fix coding style of yyerror/reportSyntaxError |
| * data/skeletons/lalr1.java: here. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: avoid useless work |
| * data/skeletons/lalr1.java (yySymbolPrint): Avoid the computation of |
| the argument if useless. |
| While at it, fix Java coding style. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: comment changes |
| * data/skeletons/lalr1.java, examples/java/calc/Calc.y: here. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: make it more consistent |
| * NEWS: Use the same pattern for titles. |
| |
| 2020-05-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: use modern idioms to make classes non-copyable |
| Reported by Don Macpherson. |
| https://lists.gnu.org/r/bug-bison/2019-05/msg00015.html |
| https://github.com/akimd/bison/issues/36 |
| |
| * data/skeletons/lalr1.cc, data/skeletons/stack.hh, |
| * data/skeletons/variant.hh: Delete the copy-ctor and the copy operator. |
| |
| 2020-04-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: avoid the use of a temporary |
| * data/skeletons/yacc.c: Use YYLLOC_DEFAULT directly with the final |
| destination. |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.91 |
| * NEWS: Record release date. |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix syntax-check issues |
| * cfg.mk: We do want to gettextize the examples. |
| * po/POTFILES.in: Adjust. |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document YYEOF, YYUNDEF and YYerror |
| * doc/bison.texi (Special Tokens): New. |
| * examples/c/bistromathic/parse.y: Formatting changes. |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: fix distcheck |
| Bison emits strings to translate in the generated code, for builtin |
| tokens. So they appear only in generated parsers, which are not |
| shipped, so they are not in the src tree, so we cannot use them in our |
| POTFILE. |
| |
| Except src/parse-gram.c, which is in the source tree. And even in the |
| git repo. But to avoid useless diffs in the repo, we do not keep the |
| src/parse-gram.c _with_ the #lines. This is done in a dist-hook which |
| regenerates src/parse-gram.c when we run "make dist". |
| |
| Unfortunately, then, update-po traverses the whole tree and sees that |
| the location of the strings to translate in src/parse-gram.c have |
| changed, so the bison.pot is to be updated. And that is not possible |
| in the "make dist" which is run within "make distcheck" |
| (not the one preparing the dist for distcheck, the one run by |
| distcheck to check that a distributed tarball can build a tarball) |
| because then the src tree is read-only. |
| |
| So let's not put src/parse-gram.c in the POTFILE, and expose these |
| strings to gettextize by hand. |
| |
| * src/i18n-strings.c: New. |
| * po/POTFILES.in: Add it, and remove src/parse-gram.c. |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid gettextize warnings |
| * src/scan-gram.l, src/scan-skel.l: Help it see the start and end of |
| "character literals". |
| |
| 2020-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of portability of readline |
| * examples/test: here. |
| |
| 2020-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: install backward compatibility for YYERRCODE |
| Some people have been using that symbol. Some even have #defined it |
| themselves. |
| https://lists.gnu.org/r/bison-patches/2020-04/msg00138.html |
| |
| Let's provide backward compatibility, having it point to YYUNDEF, so |
| that an error message is generated. |
| |
| * data/skeletons/yacc.c (YYERRCODE): New, at the exact same location |
| it was defined before. |
| |
| 2020-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: c++: s/type/kind/ where appropriate |
| These are internal details. `type_get ()` is still there to ensure |
| backward compatibility, `kind ()` being the modern way. |
| |
| * data/skeletons/c++.m4 (by_type, by_type::type): Rename as... |
| (by_kind, by_kind::kind_): this. |
| Adjust dependencies. |
| |
| 2020-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: clean up the definition of token kinds |
| From |
| |
| public interface Lexer { |
| /* Token kinds. */ |
| /** Token number, to be returned by the scanner. */ |
| static final int YYEOF = 0; |
| /** Token number, to be returned by the scanner. */ |
| static final int YYERRCODE = 256; |
| /** Token number, to be returned by the scanner. */ |
| static final int YYUNDEF = 257; |
| /** Token number, to be returned by the scanner. */ |
| static final int BANG = 258; |
| ... |
| /** Deprecated, use b4_symbol(0, id) instead. */ |
| public static final int EOF = YYEOF; |
| |
| to |
| |
| public interface Lexer { |
| /* Token kinds. */ |
| /** Token "end of file", to be returned by the scanner. */ |
| static final int YYEOF = 0; |
| /** Token error, to be returned by the scanner. */ |
| static final int YYerror = 256; |
| /** Token "invalid token", to be returned by the scanner. */ |
| static final int YYUNDEF = 257; |
| /** Token "!", to be returned by the scanner. */ |
| static final int BANG = 258; |
| ... |
| /** Deprecated, use YYEOF instead. */ |
| public static final int EOF = YYEOF; |
| |
| * data/skeletons/java.m4 (b4_token_enum): Display the symbol's tag in |
| comment. |
| * data/skeletons/lalr1.java: Address overquotation issue. |
| * examples/java/calc/Calc.y, examples/java/simple/Calc.y: Use YYEOF, |
| not EOF. |
| |
| 2020-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| error: rename the error token from YYERRCODE to YYerror |
| See https://lists.gnu.org/r/bison-patches/2020-04/msg00162.html. |
| |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc, |
| * data/skeletons/lalr1.java, doc/bison.texi, |
| * examples/c/bistromathic/parse.y, src/scan-gram.l, src/symtab.c |
| (YYERRCODE): Rename as... |
| (YYerror): this. |
| Adjust dependencies. |
| |
| 2020-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| dogfooding: use YYERRCODE in our scanner |
| * src/scan-gram.l: Use it. |
| * tests/input.at: Adjust. |
| |
| 2020-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| scanner: avoid spurious errors about empty character literals |
| On an invalid character literal such as "'\777'" we used to produce |
| two errors: |
| |
| input.y:2.9-12: error: invalid number after \-escape: 777 |
| input.y:2.8-13: error: empty character literal |
| |
| Get rid of the second one. |
| |
| * src/scan-gram.l (STRING_GROW_ESCAPE): New. |
| * tests/input.at: Adjust. |
| |
| 2020-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| scanner: bad character literals are errors |
| * src/scan-gram.l: These are errors, not warnings. |
| * tests/input.at: Adjust. |
| |
| 2020-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| all: don't emit an error message when the scanner returns YYERRCODE |
| I'm quite pleased to see that the tricky case of glr.c was already |
| prepared by the changes to support syntax_error exceptions. Better |
| yet, it is actually syntax_error that becomes a special case of the |
| general pattern: make yytoken be YYERRCODE. |
| |
| * data/skeletons/glr.c (YYFAULTYTOK): Remove the now useless (Basil) |
| Faulty token. |
| Instead, use the error token. |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java: When computing |
| the action, first check the case of the error token. |
| |
| * tests/calc.at: Check cases for the error token symbols before and |
| after it. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: don't emit an error message when the scanner returns YYERRCODE |
| * data/skeletons/yacc.c (yyparse): When the scanner returns YYERRCODE, |
| go directly to error recovery (yyerrlab1). |
| However, don't keep the error token as lookahead, that token is too |
| special. |
| * data/skeletons/lalr1.cc: Likewise. |
| |
| * examples/c/bistromathic/parse.y (yylex): Use that feature to report |
| nicely invalid characters. |
| * examples/c/bistromathic/bistromathic.test: Check that. |
| * examples/test: Neutralize gratuitous differences such as rule |
| position. |
| |
| * tests/calc.at: Check that case in C only. |
| The other case seem to be working, but that's an illusion that the |
| next commit will address (in fact, they can enter endless loops, and |
| report the error several times anyway). |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: demonstrate error recovery |
| * examples/c/bistromathic/parse.y: here. |
| * examples/c/bistromathic/bistromathic.test: Check it. |
| Included a stupid case where the error is actually ignored. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: when quitting, close the current line |
| When the user ctrl-d the line, we left the cursor not at col 0. |
| Let's fix that. |
| This revealed a few short-comings in the testing framework. |
| |
| * examples/test (run): Also display the diffs. |
| And support -n. |
| * examples/c/bistromathic/bistromathic.test |
| * examples/c/bistromathic/parse.y |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: comment changes |
| * examples/c/bistromathic/parse.y: here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: hacking tricks |
| * README-hacking.md: Here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: make valid to print the empty symbol |
| * data/skeletons/lalr1.cc (yy_print_): here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: always define symbol_name |
| * data/skeletons/lalr1.cc (symbol_name): Always define it, even when |
| it's actually yytname which is used. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix a few style issues |
| * data/skeletons/lalr1.cc (yystack_print_, yy_reduce_print_): Add |
| missing const. |
| (yystack_print_): Rename as... |
| (yy_stack_print_): this. |
| * data/skeletons/glr.cc (yy_symbol_value_print_, yy_symbol_print_): |
| Add missing const. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| all: prefer YYERRCODE to YYERROR |
| We will not keep YYERRCODE anyway, it causes backward compatibility |
| issues. So as a first step, let all the skeletons use that name, |
| until we have a better one. |
| |
| * data/skeletons/bison.m4, data/skeletons/glr.c, |
| * data/skeletons/glr.cc, data/skeletons/lalr1.cc, |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java, |
| * data/skeletons/yacc.c, doc/bison.texi, tests/headers.at, |
| * tests/input.at: |
| here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: glr.c: clarify |
| * data/skeletons/glr.c: Make the code a bit clearer. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer b4_has_translations_if |
| * data/skeletons/glr.c, data/skeletons/yacc.c: here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: glr.c: fix indentation issue |
| * data/skeletons/glr.c (yyparse): here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix a few remaining 'type' instead of 'kind' |
| * data/skeletons/glr.c, data/skeletons/yacc.c (YY_SYMBOL_PRINT): |
| Here. |
| |
| 2020-04-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: make the warning about implementation details clearer |
| * data/skeletons/bison.m4 (b4_disclaimer): Here. |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java: Use it. |
| |
| 2020-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: c: fix a few minor issues about indentation of cpp directives |
| * README-hacking.md: More about cpp. |
| * data/skeletons/c.m4, data/skeletons/yacc.c: Style changes. |
| |
| 2020-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: store in benches/012 rather than in benches/12 |
| * etc/bench.pl.in ($basedir): New. |
| Format $count with a least three digits. |
| |
| 2020-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: minor improvements |
| * etc/bench.pl.in: Don't force parse.error=detailed |
| Use a simpler way to display the pseudo %bison directive. |
| (&bench_with_gbenchmark): Give details about the compiler. |
| |
| 2020-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clarify #endif |
| We could try to avoid the weird "#if 1", but then the indentation of |
| the inner #if would be wrong. Let' keep it this way. |
| |
| * data/skeletons/yacc.c: here. |
| Also, avoid sticking the comment to the directive. |
| |
| 2020-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor fixes |
| * data/skeletons/bison.m4, doc/bison.texi: Spell check. |
| * examples/c/bistromathic/parse.y (N_): Remove, now useless. |
| |
| 2020-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: shorten token description |
| * examples/c/bistromathic/parse.y: "number" is enough. |
| * doc/bison.texi: Likewise. |
| |
| 2020-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: demonstrate internationalization |
| Currently it was only using stubs. Let's actually translate the |
| strings using gettext. |
| |
| * examples/c/bistromathic/local.mk: Define LOCALEDIR, BISON_LOCALEDIR |
| and link with libintl. |
| * examples/c/bistromathic/parse.y: Use them. |
| Remove useless includes. |
| Take ENABLE_NLS into account. |
| (error_format_string): New. |
| (yyreport_syntax_error): Rewrite to rely on a format string, which is |
| more appropriate for internationalization. |
| * examples/c/bistromathic/Makefile: We no longer use Flex. |
| We need readline and intl. |
| |
| * doc/bison.texi: Point to bistromathic for a better option for |
| internationalization. |
| * po/POTFILES.in: Add bistromathic. |
| |
| 2020-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update for YYERRCODE |
| |
| 2020-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix a typo |
| * src/complain.c: here. |
| |
| 2020-04-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c, c++: provide a default definition for N_ |
| In C/C++, N_ is a no-op. Define it if the user didn't. |
| Suggested by Frank Heckenbach. |
| https://lists.gnu.org/r/bug-bison/2020-04/msg00010.html |
| |
| * src/output.c (prepare_symbol_names): Rename has_translations as |
| has_translations_flag. |
| * data/skeletons/bison.m4 (b4_has_translations_if): New. |
| * data/skeletons/java.m4 (b4_trans): Use it. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/yacc.c |
| (N_): Provide a default definition. |
| |
| 2020-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| i18n: also look in src/parse-gram.c |
| Some strings appears in the generated file only, e.g., translation of |
| "end of file". So don't forget to go and see there. |
| |
| 2020-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix comments |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, |
| * data/skeletons/yacc.c: here. |
| |
| 2020-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| tokens: clean up the translation of special symbols |
| * src/output.c (prepare_symbol_names): Don't play tricks with the |
| symbols, it's quite too late. |
| (has_translations): Move to... |
| * src/symtab.c: here. |
| (symbols_pack): Use it to enable translation for special symbols. |
| |
| 2020-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: fix typo |
| Reported by Frank Heckenbach. |
| |
| 2020-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of portability issues with wc |
| On macOS, wc -l always prepends the result with a tab, even when fed |
| by stdin. But anyway, we should have used `grep -c -v`, which appears |
| to be portable according to Autoconf's "Limitations of Usual Tools" |
| section. |
| Reported by Denis Excoffier. |
| https://lists.gnu.org/r/bug-bison/2020-04/msg00009.html |
| |
| * tests/calc.at (_AT_CHECK_CALC): Use grep's -c instead. |
| |
| 2020-04-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-04-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.90 |
| * NEWS: Record release date. |
| |
| 2020-04-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of readline on macOS |
| macOS' version of readline does not repeat stdin on stdout in |
| non-interactive mode, contrary to the current version of GNU readline. |
| |
| * examples/test: Add support for strip_prompt. |
| * examples/c/bistromathic/bistromathic.test (strip_prompt): Set it |
| when needed. |
| Early exit when needed. |
| |
| 2020-04-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: give public access to the symbol kind |
| symbol_type::token () was removed: it returned the token kind of a |
| symbol. To do that, one needs to convert from the symbol kind to the |
| token kind, which requires a table. |
| |
| This broke some users' unit tests for scanners, see |
| https://lists.gnu.org/r/bug-bison/2020-01/msg00001.html |
| https://lists.gnu.org/r/bug-bison/2020-03/msg00020.html |
| https://lists.gnu.org/r/help-bison/2020-04/msg00005.html |
| |
| Instead of making this possible again, let's check the symbol's kind |
| instead. So give proper access to a symbol's kind. |
| |
| That feature existed, undocumented, as 'type_get()'. Let's rename |
| this as 'kind()'. |
| |
| * data/skeletons/c++.m4, data/skeletons/glr.cc, |
| * data/skeletons/lalr1.cc (type_get): Rename as... |
| (kind): This. |
| (type_get): Install a backward compatibility alias. |
| * doc/bison.texi (Complete Symbols): Document symbol_type and |
| symbol_type::kind. |
| |
| 2020-04-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: token_kind_type in C++ |
| * data/skeletons/c++.m4: Define the old names in terms on the new |
| ones, instead of the converse. |
| * doc/bison.texi (C++ Parser Interface): Be more extensive about |
| token_kind_type. |
| |
| 2020-04-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: updates for 3.6 |
| * doc/bison.texi: More s/token type/token kind/. |
| * NEWS: Update. |
| |
| 2020-04-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: use symbol(-2, kind) |
| Not all the symbols have a fixed symbol code. UNDEF's one is fixed: |
| -2. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d, |
| * data/skeletons/yacc.c: here. |
| |
| 2020-04-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comments changes about error handling |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d, |
| * data/skeletons/lalr1.java, data/skeletons/yacc.c: here. |
| * data/skeletons/lalr1.cc: Reduce scope. |
| |
| 2020-04-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistro: don't be lazy with switch |
| * examples/c/bistromathic/parse.y (yylex): Use the switch to |
| discriminate all the cases. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| * doc/bison.texi, NEWS, README-hacking.md: here. |
| And elsewhere. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: more about the coding style |
| * README-hacking.md: here. |
| (Troubleshooting): New. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: promote YYEOF rather that Lexer.EOF |
| * doc/bison.texi: here. |
| * data/skeletons/lalr1.java: Use YYEOF. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: fix names |
| * data/skeletons/lalr1.java (yySymbolPrint): There are no pointers |
| here, remove the `p` suffix. |
| Use the appropriate type for locations. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: java: SymbolKind, etc. |
| Why didn't I think about this before??? symbolName should be a method |
| of SymbolKind. |
| |
| * data/skeletons/lalr1.java (YYParser::yysymbolName): Move as... |
| * data/skeletons/java.m4 (SymbolKind::getName): this. |
| Make the table a static final table, not a local variable. |
| Adjust dependencies. |
| * doc/bison.texi (Java Parser Interface): Document i18n. |
| (Java Parser Context Interface): Document SymbolKind. |
| * examples/java/calc/Calc.y, tests/local.at: Adjust. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: java: get closer to the Java style |
| * examples/java/calc/Calc.y, examples/java/simple/Calc.y: here. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: c++: document parser::context |
| * doc/bison.texi (C++ Parser Context): New. |
| |
| * data/skeletons/lalr1.cc (parser::yysymbol_name): Rename as... |
| (parser::symbol_name): this. |
| (A Complete C++ Example): Promote LAC, now that we have it. |
| Promote parse.error detailed over verbose. |
| * examples/c++/calc++/calc++.test, tests/local.at: Adjust. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: promote YYEOF |
| * NEWS (Deep overhaul of the symbol and token kinds): New. |
| * doc/bison.texi: Promote YYEOF over "0" in scanners. |
| (Token Decl): No longer show YYEOF here, it now works by default. |
| (Token I18n): More details about YYEOF here. |
| (Calc++): Just use YYEOF. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: put YYEMPTY in the TokenKind |
| * data/skeletons/d.m4, data/skeletons/lalr1.d (b4_token_enums): Rename |
| YYTokenType as TokenKind. |
| Define YYEMPTY. |
| * examples/d/calc.y, tests/calc.at, tests/scanner.at: Adjust. |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c, c++: also define YYEMPTY in yytoken_kind_t |
| I have been hesitating a lot before doing it ---after all the user |
| must not use this kind, so what's the point of showing it in |
| yytoken_kind_t. And eventually I chose to play it safe with the |
| typing system and make it possible to use yytoken_kind_t for all the |
| tokens, even the "empty token". |
| |
| * data/skeletons/c.m4: Give an id and a tag to YYEMPTY. |
| (b4_token_enums): Define YYEMPTY. |
| * data/skeletons/c++.m4 (b4_token_enums): Define YYEMPTY. |
| * data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/yacc.c: |
| (YYEMPTY): Remove. |
| Use b4_symbol(-2, id) instead. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use "code", not "number", for token (and symbol) kinds |
| "Number" is too much about arithmethics. "Code" conveys better the |
| "enum" nature of token kinds. And of symbol kinds. |
| |
| * doc/bison.texi: Here. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: promote yytoken_kind_t, not yytokentype |
| * data/skeletons/c.m4 (yytoken_kind_t): New. |
| * data/skeletons/c++.m4, data/skeletons/lalr1.cc (yysymbol_kind_type): |
| New. |
| * examples/c/lexcalc/parse.y, examples/c/reccalc/parse.y, |
| * tests/regression.at: |
| Use them. |
| * doc/bison.texi: Replace "enum yytokentype" by "yytoken_kind_t". |
| (api.token.raw): Explain that it forces "yytoken_kind_t" to coincide |
| with "yysymbol_kind_t". |
| (Calling Convention): Mention YYEOF. |
| (Table of Symbols): Add entries for "yytoken_kind_t" and |
| "yysymbol_kind_t". |
| (Glossary): Add entries for "Kind", "Token kind" and "Symbol kind". |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document yypcontext_t, and api.symbol.prefix |
| * doc/bison.texi (%define Summary): Document api.symbol.prefix. |
| (Syntax Error Reporting Function): Document yypcontext_t, |
| yypcontext_location, yypcontext_token, yypcontext_expected_tokens, and |
| yysymbol_kind_t. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: rename yyexpected_tokens as yypcontext_expected_tokens |
| The user should think of yypcontext fields as accessible only via |
| yypcontext_* functions. So let's rename yyexpected_tokens to reflect |
| that. |
| |
| Let's _not_ rename yyreport_syntax_error, as the user may define this |
| function, and is not allowed to access directly the fields of |
| yypcontext_t: she *must* use the "accessors". This is comparable to |
| the case of C++/Java where the user defines |
| parser::report_syntax_error, not parser::context::report_syntax_error. |
| |
| * data/skeletons/glr.c, data/skeletons/yacc.c (yyexpected_tokens): |
| Rename as... |
| (yypcontext_expected_tokens): this. |
| Adjust dependencies. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: clarify the tag of special tokens |
| From |
| |
| GRAM_EOF = 0, /* $end */ |
| GRAM_ERRCODE = 1, /* error */ |
| GRAM_UNDEF = 2, /* $undefined */ |
| |
| to |
| |
| GRAM_EOF = 0, /* "end of file" */ |
| GRAM_ERRCODE = 1, /* error */ |
| GRAM_UNDEF = 2, /* "invalid token" */ |
| |
| * src/output.c (symbol_tag): New. |
| Use it to pass the token names and the symbol tags to the skeletons. |
| |
| * tests/input.at: Adjust. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: use "invalid token" instead of "$undefined" |
| * src/output.c (prepare_symbol_names): Also handle undeftoken. |
| * tests/actions.at, tests/calc.at, tests/regression.at: Adjust. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: make the eof token translatable if i18n is enabled |
| * src/output.c (has_translations): New. |
| (prepare_symbol_names): Translate endtoken if the user already |
| translated tokens. |
| |
| * examples/c/bistromathic/parse.y, src/parse-gram.y: Simplify. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: use "end of file" instead of "$end" |
| The name "$end" is nice in the report, in particular it avoids that |
| pointed-rules (aka items) be too long. It also helps keeping them |
| "standard". |
| |
| But it is bad in error messages, we should report "end of file" (or |
| maybe "end of input", this is debatable). So, unless the user already |
| defined the alias for the error token herself, make it "end of file". |
| It should even be translated if the user already translated some |
| tokens, so that there is now no strong reason to redefine the $end |
| token. |
| |
| * src/output.c (prepare_symbol_names): Issue "end of file" instead of |
| "$end". |
| |
| * data/skeletons/lalr1.java (yytnamerr_): Remove the renaming hack. |
| |
| * build-aux/update-test: Accept files with names containing a "+", |
| such as c++.at. |
| * tests/actions.at, tests/c++.at, tests/conflicts.at, |
| * tests/glr-regression.at, tests/regression.at, tests/skeletons.at: |
| Adjust. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: replace "user token number" by "token code" |
| Yet, don't change the structure identifier to avoid introducing |
| conflicts in Vincent Imbimbo's PR (which, amusingly enough, is about |
| conflicts). |
| |
| * src/symtab.c: here. |
| * tests/diagnostics.at, tests/input.at: Adjust. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: remove the yy prefix from some functions |
| yy::parser features a parse() function, not a yyparse() one. |
| |
| * data/skeletons/lalr1.cc (yyreport_syntax_error) |
| (context::yyexpected_tokens): Rename as... |
| (report_syntax_error, context::expected_tokens): these. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tokens: properly define the YYEOF token kind |
| Currently EOF is handled in an adhoc way, with a #define YYEOF 0 in |
| the implementation file. As a result, the user has to define her own |
| EOF token if she wants to use it, which is a pity. |
| |
| Give the $end token a visible kind name, YYEOF. Except that in C, |
| where enums are not scoped, we would have collisions between all the |
| definitions of YYEOFs in the header files, so in C, make it |
| <api.PREFIX>EOF. |
| |
| * data/skeletons/c.m4 (YYEOF): Override its name to avoid collisions. |
| Unless the user already gave it a different name. |
| * data/skeletons/glr.c (YYEOF): Remove. |
| Use ]b4_symbol(0, [id])[ instead. |
| Add support for "pre_epilogue", for glr.cc. |
| * data/skeletons/glr.cc: Remove dead code (never emitted #undefs). |
| * data/skeletons/yacc.c |
| * src/parse-gram.c |
| * src/reader.c |
| * src/symtab.c |
| * tests/actions.at |
| * tests/input.at |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tokens: define the "$undefined" token kind |
| * data/skeletons/bison.m4 (b4_symbol_token_kind): Give a definition to |
| $undefined. |
| (b4_token_visible_if): $undefined has an id. |
| * src/output.c (prepare_symbol_definitions): Stop lying: $undefined |
| _is_ a token. |
| * tests/input.at: Adjust. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tokens: properly define the "error" token kind |
| There are people out there that do use YYERRCODE (the token kind of |
| the error token). See for instance |
| https://github.com/borbolla-automation/SPC_Machines/blob/3812012bb782bfdfe7b325950a35cd337925fcad/unixODBC-2.3.2/Drivers/nn/yylex.c. |
| |
| Currently, YYERRCODE is defined by yacc.c in an adhoc way as a #define |
| in the *.c file only. It belongs with the other token kinds. |
| |
| YYERRCODE is not a nice name, it does not fit in our naming scheme. |
| YYERROR would be more logical, but it collides with the YYERROR macro. |
| Shall we keep the same name in all the skeletons? Besides, to avoid |
| collisions in C, we need to apply the api prefix: YYERRCODE is |
| actually <PREFIX>ERRCODE. This is not needed in the other languages. |
| |
| * data/skeletons/bison.m4 (b4_symbol_token_kind): New. |
| Map the error token to "YYERRCODE". |
| * data/skeletons/yacc.c (YYERRCODE): Don't define it, it's handled by... |
| * src/output.c (prepare_symbol_definitions): this. |
| * tests/input.at (Redefining the error token): Check it. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tokens: style: minor fixes |
| * data/skeletons/bison.m4 (b4_symbol_kind): Dispatch on the UNDEF |
| token number rather than its name. |
| * data/skeletons/c++.m4, data/skeletons/c.m4, data/skeletons/java.m4: |
| Comment changes. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: remove dead code |
| * data/skeletons/glr.cc: here. |
| |
| 2020-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix generated headers |
| A forthcoming commit (tokens: properly define the "error" token kind) |
| revealed a problem in the C++ generated headers: they are not |
| self-contained. With this file: |
| |
| %language "c++" |
| %define api.value.type variant |
| |
| %code { |
| static int yylex (yy::parser::semantic_type *lvalp); |
| } |
| |
| %token <int> X |
| |
| %% |
| |
| exp: |
| X { printf ("x\n"); } |
| ; |
| |
| %% |
| |
| void |
| yy::parser::error (const std::string& m) |
| { |
| std::cerr << m << '\n'; |
| } |
| |
| static |
| int yylex (yy::parser::semantic_type *lvalp) |
| { |
| static int const input[] = {yy::parser::token::X, 0}; |
| static int toknum = 0; |
| return input[toknum++]; |
| } |
| |
| int |
| main (int argc, char const* argv[]) |
| { |
| yy::parser p; |
| return p.parse (); |
| } |
| |
| the generated header fails to compile cleanly (foo.cc just #includes |
| the generated header): |
| |
| $ clang++-mp-9.0 -c -Wundefined-func-template foo.cc |
| In file included from foo.cc:1: |
| bar.tab.hh:550:12: warning: instantiation of function 'yy::parser::basic_symbol<yy::parser::by_type>::basic_symbol' required here, but no definition is available |
| [-Wundefined-func-template] |
| struct symbol_type : basic_symbol<by_type> |
| ^ |
| bar.tab.hh:436:7: note: forward declaration of template entity is here |
| basic_symbol (basic_symbol&& that); |
| ^ |
| bar.tab.hh:550:12: note: add an explicit instantiation declaration to suppress this warning if 'yy::parser::basic_symbol<yy::parser::by_type>::basic_symbol' is explicitly instantiated |
| in another translation unit |
| struct symbol_type : basic_symbol<by_type> |
| ^ |
| 1 warning generated. |
| |
| * data/skeletons/c++.m4 (b4_public_types_define): Move the |
| implementation of the basic_symbol move-ctor to... |
| (b4_public_types_define): here, its declaration. |
| * tests/headers.at (Sane headers): Use a declared token so that the |
| corresponding token constructor is declared. Which triggers the |
| aforementioned issue. |
| |
| 2020-04-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename YYNOMEM as YYENOMEM |
| This is clearer. |
| |
| * data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): Rename as... |
| (YYENOMEM): here. |
| |
| 2020-04-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-04-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: improvements on symbol kinds |
| Instead of |
| |
| /// (Internal) symbol kind. |
| enum symbol_kind_type |
| { |
| YYNTOKENS = 5, ///< Number of tokens. |
| YYSYMBOL_YYEMPTY = -2, |
| YYSYMBOL_YYEOF = 0, // END_OF_FILE |
| YYSYMBOL_YYERROR = 1, // error |
| YYSYMBOL_YYUNDEF = 2, // $undefined |
| YYSYMBOL_TEXT = 3, // TEXT |
| YYSYMBOL_NUMBER = 4, // NUMBER |
| YYSYMBOL_YYACCEPT = 5, // $accept |
| YYSYMBOL_result = 6, // result |
| YYSYMBOL_list = 7, // list |
| YYSYMBOL_item = 8 // item |
| }; |
| |
| generate |
| |
| /// Symbol kinds. |
| struct symbol_kind |
| { |
| enum symbol_kind_type |
| { |
| YYNTOKENS = 5, ///< Number of tokens. |
| S_YYEMPTY = -2, |
| S_YYEOF = 0, // END_OF_FILE |
| S_YYERROR = 1, // error |
| S_YYUNDEF = 2, // $undefined |
| S_TEXT = 3, // TEXT |
| S_NUMBER = 4, // NUMBER |
| S_YYACCEPT = 5, // $accept |
| S_result = 6, // result |
| S_list = 7, // list |
| S_item = 8 // item |
| }; |
| }; |
| |
| * data/skeletons/c++.m4 (api.symbol.prefix): Define to S_. |
| Adjust all the uses. |
| (b4_public_types_declare): Nest the enum inside 'struct symbol_kind'. |
| * data/skeletons/glr.cc, data/skeletons/lalr1.cc, |
| * tests/headers.at, tests/local.at: Adjust. |
| |
| 2020-04-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: improvements on symbol kinds |
| public enum SymbolKind |
| { |
| S_YYEMPTY = -2, /* No symbol. */ |
| S_YYEOF = 0, /* $end */ |
| S_YYERROR = 1, /* error */ |
| S_YYUNDEF = 2, /* $undefined */ |
| S_EQ = 3, /* "=" */ |
| |
| * data/skeletons/d.m4 (api.symbol.prefix): Default to S_. |
| Output the symbol kind definitions with a comment. |
| |
| 2020-04-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: minor fixes |
| * data/skeletons/bison.m4 (b4_symbol_kind): Series of _ are useless, |
| one is enough. |
| * data/skeletons/c.m4 (b4_token_enum): Fix overquoting. |
| |
| 2020-04-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: introduce api.symbol.prefix |
| * data/skeletons/bison.m4 (b4_symbol_prefix): New. |
| (b4_symbol_kind): Use it. |
| * data/skeletons/c++.m4, data/skeletons/c.m4, data/skeletons/d.m4 |
| * data/skeletons/java.m4 (api.symbol.prefix): Provide a default value. |
| |
| * data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/lalr1.cc, |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java, data/skeletons/yacc.c: |
| Adjust: use b4_symbol_prefix instead of YYSYMBOL_. |
| |
| 2020-04-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: also emit documenting comments for symbol kinds |
| * data/skeletons/java.m4 (b4_symbol_enum): here. |
| And stop defined YYSYMBOL_YYEMPTY, we no longer use it. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| * TODO (YYERRCODE): Remove, handled by YYSYMBOL_ERROR. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: beware not to use yyarg when it's null |
| Reported by Adrian Vogelsgesang. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, |
| * data/skeletons/lalr1.java, data/skeletons/yacc.c: Here. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: document new features |
| * data/skeletons/lalr1.java: More comments. |
| (Context.EMPTY): Remove. |
| * doc/bison.texi (Java Parser Context Interface): New. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: prefer null to YYSYMBOL_YYEMPTY |
| That's one nice benefit from using enums. |
| |
| * data/skeletons/lalr1.java (YYSYMBOL_YYEMPTY): No longer define it. |
| Use 'null' instead. |
| * examples/java/calc/Calc.y, tests/local.at: Adjust. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: rename Lexer.yyreportSyntaxError as reportSyntaxError |
| * data/skeletons/lalr1.java: here. |
| * examples/java/calc/Calc.y, tests/local.at: Adjust. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: use getExpectedTokens, not yyexpectedTokens |
| * data/skeletons/lalr1.java, examples/java/calc/Calc.y, tests/local.at: |
| here. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: style: fix coding style |
| * data/skeletons/java.m4: Indent by two. |
| * data/skeletons/lalr1.java (yynnts_): Remove. |
| (yyfinal_, yyntokens_, yylast_, yyempty_): Rename as... |
| (YYFINAL_, YYNTOKENS_, YYLAST_, YYEMPTY_): these, they are constants. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: make the symbol kind definition nicer to read |
| From |
| |
| enum yysymbol_kind_t |
| { |
| YYSYMBOL_YYEMPTY = -2, |
| YYSYMBOL_YYEOF = 0, |
| YYSYMBOL_YYERROR = 1, |
| YYSYMBOL_YYUNDEF = 2, |
| |
| to |
| |
| enum yysymbol_kind_t |
| { |
| YYSYMBOL_YYEMPTY = -2, |
| YYSYMBOL_YYEOF = 0, /* "end of file" */ |
| YYSYMBOL_YYERROR = 1, /* error */ |
| YYSYMBOL_YYUNDEF = 2, /* $undefined */ |
| |
| * data/skeletons/bison.m4 (b4_last_symbol): New. |
| (b4_symbol_enum, b4_symbol_enums): Reformat the output. |
| * data/skeletons/c.m4 |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: make the token kind definition nicer to read |
| From |
| |
| enum gram_tokentype |
| { |
| GRAM_EOF = 0, |
| STRING = 3, |
| TSTRING = 4, |
| PERCENT_TOKEN = 5, |
| |
| To |
| |
| enum gram_tokentype |
| { |
| GRAM_EOF = 0, /* "end of file" */ |
| STRING = 3, /* "string" */ |
| TSTRING = 4, /* "translatable string" */ |
| PERCENT_TOKEN = 5, /* "%token" */ |
| |
| * data/skeletons/bison.m4 (b4_last_enum_token): New. |
| * data/skeletons/c.m4 (b4_token_enum, b4_token_enums): Show the |
| corresponding symbol. |
| |
| 2020-04-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: make the generated YYSTYPE nicer to read |
| From |
| |
| union GRAM_STYPE |
| { |
| /* precedence_declarator */ |
| assoc precedence_declarator; |
| /* "string" */ |
| char* STRING; |
| /* "translatable string" */ |
| char* TSTRING; |
| /* "{...}" */ |
| char* BRACED_CODE; |
| /* "%?{...}" */ |
| |
| to |
| |
| union GRAM_STYPE |
| { |
| assoc precedence_declarator; /* precedence_declarator */ |
| char* STRING; /* "string" */ |
| char* TSTRING; /* "translatable string" */ |
| char* BRACED_CODE; /* "{...}" */ |
| |
| * data/skeletons/c.m4 (b4_symbol_type_register): Use m4_format to |
| align the comments. |
| * src/parse-gram.h: Regen. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: use consistently "token kind", not "token type" |
| * src/output.c, src/reader.c, src/scan-gram.l, src/tables.c: here. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: use consistently "kind" instead of "type" in the code |
| * data/skeletons/bison.m4, data/skeletons/c++.m4, data/skeletons/c.m4, |
| * data/skeletons/glr.cc, data/skeletons/lalr1.cc, |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java: |
| Refer to the "kind" of a symbol, not its "type", where appropriate. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: refer to the token kind rather than the token type |
| * doc/bison.texi: Replace occurrences of "token type" with "token |
| kind". |
| Stop referring to the "macro definitions" of the token kinds, just |
| name them "definitions". |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: we don't need undef_token_number |
| It's replaced by YYSYMBOL_YYUNDEF. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: rename b4_symbol_sid as b4_symbol_kind |
| * data/skeletons/bison.m4, data/skeletons/c++.m4, data/skeletons/c.m4, |
| * data/skeletons/d.m4, data/skeletons/java.m4 |
| (b4_symbol_sid): Rename as... |
| (b4_symbol_kind): this. |
| Adjust dependencies. |
| * data/README.md: Document the kind. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| d, java: rename SymbolType as SymbolKind |
| See https://lists.gnu.org/r/bison-patches/2020-04/msg00031.html. |
| |
| * data/skeletons/d.m4, data/skeletons/lalr1.d, |
| * data/skeletons/java.m4, data/skeletons/lalr1.java |
| (SymbolType): Rename as... |
| (SymbolKind): this. |
| Adjust dependencies. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| c, c++: rename yysymbol_type_t as yysymbol_kind_t |
| See https://lists.gnu.org/r/bison-patches/2020-04/msg00031.html |
| |
| * data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/yacc.c |
| (yysymbol_type_t): Rename as... |
| (yysymbol_kind_t): this. |
| Adjust dependencies. |
| * data/skeletons/c++.m4, data/skeletons/glr.cc, data/skeletons/lalr1.cc |
| (symbol_type_type): Rename as... |
| (symbol_kind_type): this. |
| Adjust dependencies. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: remove obsolete release instructions |
| * README-hacking.md: here. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * maint: |
| maint: post-release administrivia |
| version 3.5.4 |
| examples: reccalc: really compile cleanly in C99 |
| news: announce that Bison 3.6 drops YYERROR_VERBOSE |
| news: update for 3.5.4 |
| style: fix spellos |
| typo: succesful -> successful |
| package: improve the readme |
| java: check and fix support for api.token.raw |
| java: style: prefer 'int[] foo' to 'int foo[]' |
| build: fix syntax-check issues |
| tests: recheck: work properly when the test suite was interrupted |
| doc: c++: promote api.token.raw |
| build: fix compatibility with old compilers |
| examples: reccalc: compile cleanly in C99 |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.4 |
| * NEWS: Record release date. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update the yyreport_syntax_error example |
| * examples/c/bistromathic/parse.y, tests/local.at |
| (yyreport_syntax_error): Fix use of YYSYMBOL_YYEMPTY. |
| * NEWS: Update. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename yysyntax_error_arguments as yy_syntax_error_arguments |
| It's a private implementation detail. |
| |
| * NEWS, data/skeletons/glr.c, data/skeletons/lalr1.cc, |
| * data/skeletons/yacc.c, doc/bison.texi: here. |
| |
| 2020-04-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: reccalc: really compile cleanly in C99 |
| The previous fix does not suffice, and actually managed to make things |
| worse by defining yyscan_t twice in parse.y... |
| |
| Reported by kencu. |
| https://trac.macports.org/ticket/59927#comment:29 |
| |
| * examples/c/reccalc/parse.y (yyscan_t): Define it with the same |
| guards as used by Flex. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: rename yyparse_context_t as yypcontext_t |
| The first name is too long. We already have `yypstate`, so |
| `yypcontext` is ok. We are also migrating to using `*_t` for our |
| types. |
| |
| * NEWS, data/skeletons/glr.c, data/skeletons/yacc.c, doc/bison.texi, |
| * examples/c/bistromathic/parse.y, src/parse-gram.y, tests/local.at: |
| (yyparse_context_t, yyparse_context_location, yyparse_context_token): |
| Rename as... |
| (yypcontext_t, yypcontext_location, yypcontext_token): these. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| readme: more about the coding style |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: fixes in SymbolType |
| Reported by Paolo Bonzini. |
| https://github.com/akimd/bison/pull/34#issuecomment-609029634 |
| |
| * data/skeletons/java.m4 (SymbolType): Use 'final' where possible. |
| (get): Rewrite on top of an array instead of a switch. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: use SymbolType |
| The Java enums are very different from the C model. As a consequence, |
| one cannot "build" an enum directly from an integer, we must retrieve |
| it. That's the purpose of the SymbolType.get class method. |
| |
| * data/skeletons/java.m4 (b4_symbol_enum, b4_case_code_symbol) |
| (b4_declare_symbol_enum): New. |
| * data/skeletons/lalr1.java: Use SymbolType, |
| SymbolType.YYSYMBOL_YYEMPTY, etc. |
| * examples/java/calc/Calc.y, tests/local.at: Adjust. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: java: use explicit token identifiers |
| * examples/java/calc/Calc.y: Declare all the tokens, so that we are |
| compatibile with api.token.raw. |
| * examples/java/calc/Calc.test: Adjust. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: announce that Bison 3.6 drops YYERROR_VERBOSE |
| * NEWS: here. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update for 3.5.4 |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix spellos |
| * src/complain.c, src/print.c, src/print-xml.c, src/symtab.h: here. |
| |
| 2020-04-04 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| typo: succesful -> successful |
| * tests/calc.at: Here. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: improve the readme |
| * README: Describe what Bison is. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: check and fix support for api.token.raw |
| * tests/local.at (AT_LANG_MATCH, AT_YYERROR_DECLARE(java)) |
| (AT_YYERROR_DECLARE_EXTERN(java), AT_PARSER_CLASS): New. |
| (AT_MAIN_DEFINE(java)): Use AT_PARSER_CLASS. |
| * tests/scanner.at: Add a test for Java. |
| * data/skeletons/lalr1.java (yytranslate_): Cast the result. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: use the SymbolType enum for symbol kinds |
| * data/skeletons/d.m4 (b4_symbol_enum, b4_declare_symbol_enum): New. |
| * data/skeletons/lalr1.d: Use them. |
| Use SymbolType, SymbolType.YYSYMBOL_YYEMPTY etc. where appropriate. |
| (undef_token_, token_number_type, yy_error_token_): Remove. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: style: prefer 'int[] foo' to 'int foo[]' |
| * data/skeletons/java.m4 (b4_typed_parser_table_define): Here. |
| |
| 2020-04-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix syntax-check issues |
| * src/system.h, tests/local.mk: Fix indentation. |
| |
| 2020-04-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: recheck: work properly when the test suite was interrupted |
| * tests/local.mk (recheck): Look at the per-test logs, not the overall |
| log, which, when interrupted, contains only information about... the |
| tests that passed. |
| |
| 2020-04-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: c++: promote api.token.raw |
| * doc/bison.texi (Calc++ Parser): Here. |
| |
| 2020-04-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix compatibility with old compilers |
| GCC 4.2 dies with |
| |
| src/InadequacyList.c: In function 'InadequacyList__new_conflict': |
| src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions |
| src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions |
| src/InadequacyList.c:40: error: #pragma GCC diagnostic not allowed inside functions |
| |
| Reported by Evan Lavelle. |
| See https://lists.gnu.org/r/bug-bison/2020-03/msg00021.html |
| and https://trac.macports.org/ticket/59927. |
| |
| * src/system.h (GCC_VERSION): New. |
| Use it to control IGNORE_TYPE_LIMITS_BEGIN and |
| IGNORE_TYPE_LIMITS_END. |
| |
| 2020-04-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: reccalc: compile cleanly in C99 |
| See https://trac.macports.org/ticket/59927. |
| |
| * examples/c/reccalc/parse.y: C99 does not allow multiple typedefs. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: replace symbol_number_type with symbol_type_type |
| * data/skeletons/c++.m4, data/skeletons/glr.cc, |
| * data/skeletons/lalr1.cc: here. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: also use symbol_type_type |
| Because of the insane current implementation of glr.cc, things are a |
| bit nasty. We will rename symbol_number_type as symbol_type_type |
| later, to keep this commit small. |
| |
| * data/skeletons/c++.m4 (b4_declare_symbol_enum): New. |
| Also define YYNTOKENS to avoid type clashes when yyntokens_ was |
| actually defined in another enum. |
| Use it. |
| (symbol_number_type): Be an alias of symbol_type_type. |
| Use YYSYMBOL_YYEMPTY and the like. |
| Use symbol_number_type where appropriate. |
| (empty_symbol): Remove. |
| (yytranslate_): Use symbol_number_type, not token_number_type. |
| * data/skeletons/lalr1.cc: Use symbol_number_type where appropriate. |
| Adjust to the replacement of empty_symbol by YYSYMBOL_YYEMPTY. |
| (yy_error_token_, yy_undef_token_, yyeof_, yyntokens_): Remove. |
| Adjust dependencies. |
| |
| * data/skeletons/glr.cc: Use symbol_number_type where appropriate. |
| Forward definitions of YYSYMBOL_YYEMPTY, etc. to glr.c. |
| |
| * tests/headers.at: Accept YYNTOKENS and other YYSYMBOL_*. |
| * tests/local.at (AT_YYERROR_DEFINE(c++)): Use symbol_number_type. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: remove the yySymbol alias |
| * data/skeletons/glr.c: Use yysymbol_type_t only. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c, yacc.c: propagate yysymbol_type_t |
| Now that yacc.c and glr.c both know yysymbol_type_t, convert the |
| common routines. |
| |
| * data/skeletons/c.m4 (yydestruct, yy_symbol_value_print) |
| (yy_symbol_print): Use yysymbol_type_t instead of int. |
| * data/skeletons/glr.c: Use yySymbol where appropriate. |
| * data/skeletons/yacc.c (YY_ACCESSING_SYMBOL): New wrapper around |
| yystos. |
| Use it. |
| * tests/local.at (yyreport_syntax_error): Use yysymbol_type_t where |
| appropriate. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: use yysymbol_type_t, YYSYMBOL_YYEOF etc. |
| Apply the same changes as in yacc.c. Now yySymbol and yysymbol_type_t |
| are aliases. We will remove the former later, to avoid cluttering |
| this commit. |
| |
| * data/skeletons/glr.c: Use b4_declare_symbol_enum. |
| Use YYSYMBOL_YYEOF etc. where appropriate. |
| (YYUNDEFTOK, YYTERROR): Remove. |
| (YYTRANSLATE, yySymbol, yyexpected_tokens, yysyntax_error_arguments): |
| Adjust. |
| (yy_accessing_symbol): New. |
| Use it where appropriate. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: fix more errors from make maintainer-check-g++ |
| * data/skeletons/yacc.c (yyexpected_tokens): Use casts where needed. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: revert to not using yysymbol_type_t in the yytranslate table |
| This triggers warnings with several compilers. For instance ICC fills |
| the logs with pages and pages of |
| |
| input.c(477): error: a value of type "int" cannot be used to initialize an entity of type "const yysymbol_type_t={yysymbol_type_t}" |
| 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| ^ |
| |
| input.c(477): error: a value of type "int" cannot be used to initialize an entity of type "const yysymbol_type_t={yysymbol_type_t}" |
| 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| ^ |
| |
| And so does G++9 when compiling yacc.c's (C) output |
| |
| input.c:545:8: error: invalid conversion from 'int' to 'yysymbol_type_t' [-fpermissive] |
| 545 | 0, 5, 9, 2, 2, 2, 2, 2, 2, 2, |
| | ^ |
| | | |
| | int |
| input.c:545:15: error: invalid conversion from 'int' to 'yysymbol_type_t' [-fpermissive] |
| 545 | 0, 5, 9, 2, 2, 2, 2, 2, 2, 2, |
| | ^ |
| | | |
| | int |
| |
| Clang++ is no exception |
| |
| input.c:545:8: error: cannot initialize an array element of type 'const yysymbol_type_t' with an rvalue of type 'int' |
| 0, 5, 9, 2, 2, 2, 2, 2, 2, 2, |
| ^ |
| input.c:545:15: error: cannot initialize an array element of type 'const yysymbol_type_t' with an rvalue of type 'int' |
| 0, 5, 9, 2, 2, 2, 2, 2, 2, 2, |
| ^ |
| |
| At some point we could use yysymbol_type_t's enumerators to define |
| yytranslate. Meanwhile... |
| |
| * data/skeletons/yacc.c (yytranslate): Use the original integral type |
| to define it. |
| (YYTRANSLATE): Cast the result into yysymbol_type_t. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yysymbol_type_t: always assign an enumerator |
| Currently we define enumerators only for symbols that have an |
| identifier. That rules out tokens such as '+', and nonterminals such |
| as foo-bar and foo.bar. As a consequence we are taking chances: the |
| compiler might compile yysymbol_type_t as too small an integral type |
| for some symbol codes. |
| |
| * data/skeletons/bison.m4 (b4_symbol_sid): Forge a unique symbol |
| identifier for symbols that don't have an ID. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: use symbol numbers instead of YYTRANSLATE |
| * examples/c/bistromathic/parse.y: here. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: prefer YYSYMBOL_YYERROR to YYSYMBOL_error |
| * data/skeletons/bison.m4 (b4_symbol_sid): Map "error" to YYSYMBOL_YYERROR. |
| * data/skeletons/yacc.c: Adjust. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: also define a symbol number for the empty token |
| This is not only cleaner, it also protects us from mixing signed |
| values (YYEMPTY is #defined as -2) with unsigned types (the |
| yysymbol_type_t enum is typically compiled as a small unsigned). |
| For instance GCC 9: |
| |
| input.c: In function 'yyparse': |
| input.c:1107:7: error: conversion to 'unsigned int' from 'int' |
| may change the sign of the result |
| [-Werror=sign-conversion] |
| 1107 | yyn += yytoken; |
| | ^~ |
| input.c:1107:10: error: conversion to 'int' from 'unsigned int' |
| may change the sign of the result |
| [-Werror=sign-conversion] |
| 1107 | yyn += yytoken; |
| | ^~~~~~~ |
| input.c:1108:47: error: comparison of integer expressions of |
| different signedness: |
| 'yytype_int8' {aka 'const signed char'} and |
| 'yysymbol_type_t' {aka 'enum yysymbol_type_t'} |
| [-Werror=sign-compare] |
| 1108 | if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) |
| | ^~ |
| input.c:702:25: error: operand of ?: changes signedness from 'int' |
| to 'unsigned int' due to unsignedness of |
| other operand [-Werror=sign-compare] |
| 702 | #define YYEMPTY (-2) |
| | ^~~~ |
| input.c:1220:33: note: in expansion of macro 'YYEMPTY' |
| 1220 | yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); |
| | ^~~~~~~ |
| input.c:1220:41: error: unsigned conversion from 'int' to |
| 'unsigned int' changes value |
| from '-2' to '4294967294' |
| [-Werror=sign-conversion] |
| 1220 | yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); |
| | ^ |
| |
| Eventually, it might be interesting to move away from -2 (which is the |
| only possible negative symbol number) and use the next available |
| number, to save bits. We could actually even simply use "0" and shift |
| the rest, which would allow to write "!yytoken" to mean really |
| "yytoken != YYEMPTY". |
| |
| * data/skeletons/c.m4 (b4_declare_symbol_enum): Define YYSYMBOL_YYEMPTY. |
| * data/skeletons/yacc.c: Use it. |
| |
| * src/parse-gram.y (yyreport_syntax_error): Use YYSYMBOL_YYEMPTY, not |
| YYEMPTY, when dealing with a symbol. |
| |
| * tests/regression.at: Adjust. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: use yysymbol_type_t instead of int for yytoken |
| Now that we have a proper type for internal symbol numbers, let's use |
| it. More code needs conversion, e.g., printers and destructors, but |
| they are shared with glr.c, which is not ready yet for this change. |
| |
| It will also help us deal with warnings such as (GCC9 on GNU/Linux): |
| |
| input.c: In function 'int yyparse()': |
| input.c:475:37: error: enumeral and non-enumeral type in conditional expression [-Werror=extra] |
| 475 | (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYSYMBOL_YYUNDEF) |
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| input.c:1024:17: note: in expansion of macro 'YYTRANSLATE' |
| 1024 | yytoken = YYTRANSLATE (yychar); |
| | ^~~~~~~~~~~ |
| |
| * data/skeletons/yacc.c (yytranslate, yysymbol_name) |
| (yyparse_context_t, yyexpected_tokens, yypstate_expected_tokens) |
| (yysyntax_error_arguments): |
| Use yysymbol_type_t instead of int. |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-04-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: introduce an enum that defines the symbol's number |
| There's a number of advantage in exposing the symbol (internal) |
| numbers: |
| |
| - custom error messages can use them to decide how to represent a |
| given symbol, or a set of symbols. |
| |
| - we need something similar in uses of yyexpected_tokens. For |
| instance, currently, bistromathic's completion() reads: |
| |
| int ntokens = expected_tokens (line, tokens, YYNTOKENS); |
| [...] |
| for (int i = 0; i < ntokens; ++i) |
| if (tokens[i] == YYTRANSLATE (TOK_VAR)) |
| [...] |
| else if (tokens[i] == YYTRANSLATE (TOK_FUN)) |
| [...] |
| else |
| [...] |
| |
| - now that it's a compile-time expression, we can easily build static |
| tables, switch, etc. |
| |
| - some users depended on the ability to get the token number from a |
| symbol to write test cases for their scanners. But Bison 3.5 |
| removed the table this feature depended upon (a reverse |
| yytranslate). Now they can check against the actual symbol number, |
| without having pay (space and time) a conversion. |
| See https://lists.gnu.org/r/bug-bison/2020-01/msg00001.html, and |
| https://lists.gnu.org/archive/html/bug-bison/2020-03/msg00015.html. |
| |
| - it helps us clearly separate the internal symbol numbers from the |
| external token numbers, whose difference is sometimes blurred in the |
| code when values coincide (e.g. "yychar = yytoken = YYEOF"). |
| |
| - it allows us to get rid of ugly macros with inconsistent names such |
| as YYUNDEFTOK and YYTERROR, and to group related definitions |
| together. |
| |
| - similarly it provides a clean access to the $accept symbol (which |
| proves convenient in a current experimentation of mine with several |
| %start symbols). |
| |
| Let's declare this type as a private type (in the *.c file, not |
| the *.h one). So it does not need to be influenced by the api prefix. |
| |
| * data/skeletons/bison.m4 (b4_symbol_sid): New. |
| (b4_symbol): Use it. |
| * data/skeletons/c.m4 (b4_symbol_enum, b4_declare_symbol_enum): New. |
| * data/skeletons/yacc.c: Use b4_declare_symbol_enum. |
| (YYUNDEFTOK, YYTERROR): Remove. |
| Use the corresponding symbol enum instead. |
| |
| 2020-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes about token numbers |
| * data/skeletons/bison.m4, data/skeletons/c.m4: here. |
| |
| 2020-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: recheck: work properly when the test suite was interrupted |
| * tests/local.mk (recheck): Look at the per-test logs, not the overall |
| log, which, when interrupted, contains only information about... the |
| tests that passed. |
| |
| 2020-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: move away from _ for internationalization |
| The "_" is becoming a keyword in Java, which causes tons of warnings |
| currently in our test suite. GNU Gettext is now using "i18n" instead |
| of "_" |
| (https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=e89fea36545f27487d9652a13e6a0adbea1117d0). |
| |
| * data/skeletons/java.m4: Use "i18n", not "_". |
| * examples/java/calc/Calc.y, tests/calc.at: Adjust. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: use YYNOMEM instead of -2 |
| See 84b1972c96060866b4bd94a33b97711f8f7d0b6c. |
| |
| * data/skeletons/glr.c, data/skeletons/yacc.c (YYNOMEM): New. |
| Use it. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| * TODO (Token Number): We have to clean this. |
| (Naming conventions, Symbol numbers): New. |
| (Bad styling): Addressed in e21ff47f5d0b64da693a47b7dd200a1a44a5bbeb. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: make yysyntaxErrorArguments a private detail |
| * data/skeletons/lalr1.java (yysyntaxErrorArguments): Move it from the |
| context, to the parser object. |
| Generate only for detailed and verbose error messages. |
| * tests/local.at (AT_YYERROR_DEFINE(java)): Use yyexpectedTokens |
| instead. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: make yysyntax_error_arguments a private detail |
| We could just "inline yysyntax_error_arguments back" in the routines |
| it was originally extracted from, but I think the code is nicer to |
| read this way. |
| |
| * data/skeletons/glr.c (yysyntax_error_arguments): Generate only for |
| detailed and verbose error messages. |
| * data/skeletons/yacc.c: Likewise. |
| * data/skeletons/lalr1.cc (parser::context::yysyntax_error_arguments): |
| Move as... |
| (parser::yysyntax_error_arguments_): this. |
| And only for detailed and verbose error messages. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: avoid using yysyntax_error_arguments |
| * data/skeletons/lalr1.cc (context::token): New. |
| * tests/local.at (yyreport_syntax_error): Don't use |
| yysyntax_error_arguments. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: avoid using yysyntax_error_arguments |
| * src/parse-gram.y (yyreport_syntax_error): Use yyparse_context_token |
| and yyexpected_tokens. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: yacc.c: avoid yysyntax_error_arguments |
| Because glr.c shares the same testing routines, we also need to |
| convert it. |
| |
| * data/skeletons/glr.c (yyparse_context_token): New. |
| * tests/local.at (yyreport_syntax_error): here. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: don't use yysyntax_error_arguments |
| Suggested by Adrian Vogelsgesang. |
| https://lists.gnu.org/archive/html/bison-patches/2020-02/msg00069.html |
| |
| * data/skeletons/lalr1.java (Context.EMPTY, Context.getToken): New. |
| (Context.yyntokens): Rename as... |
| (Context.NTOKENS): this. |
| Because (i) all the Java coding styles recommend upper case for |
| constants, and (ii) the Java Skeleton exposes Lexer.EOF, not |
| Lexer.YYEOF. |
| * data/skeletons/yacc.c (yyparse_context_token): New. |
| * examples/c/bistromathic/parse.y (yyreport_syntax_error): Don't use |
| yysyntax_error_arguments. |
| * examples/java/calc/Calc.y (yyreportSyntaxError): Likewise. |
| |
| 2020-03-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: fix incorrect type for translatable tokens |
| * data/skeletons/glr.c, data/skeletons/lalr1.c, data/skeletons/yacc.c: |
| Fix confusion between the "translatable" and the "translate" tables. |
| |
| 2020-03-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: use negative numbers for errors in auxiliary functions |
| yyparse returns 0, 1, 2 since ages (accept, reject, memory exhausted). |
| Some of our auxiliary functions such as yy_lac and |
| yyreport_syntax_error also need to return error codes and also use 0, |
| 1, 2. Because it uses yy_lac, yyexpected_tokens also needs to return |
| "problem", "memory exhausted", but in case of success, it needs to |
| return the number of tokens, so it cannot use 1 and 2 as error code. |
| Currently it uses -1 and -2, which is later converted into 1 and 2 as |
| yacc.c expects it. |
| |
| Let's simplify this and use consistently -1 and -2 for auxiliary |
| functions that are not exposed (or not yet exposed) to the user. In |
| particular this will save the user from having to convert |
| yyexpected_tokens's -2 into yyreport_syntax_error's 2: both return -1 |
| or -2. |
| |
| * data/skeletons/yacc.c (yy_lac, yyreport_syntax_error) |
| (yy_lac_stack_realloc): Return -1, -2 for errors instead of 1, 2. |
| Adjust callers. |
| * examples/c/bistromathic/parse.y (yyreport_syntax_error): Do take |
| error codes into account. |
| Issue a syntax error message even if we ran out of memory. |
| * src/parse-gram.y, tests/local.at (yyreport_syntax_error): Adjust. |
| |
| 2020-03-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce length of private constant |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/yacc.c |
| (YYERROR_VERBOSE_ARGS_MAXIMUM): Rename as... |
| (YYARGS_MAX): this. |
| * src/parse-gram.y (YYERROR_VERBOSE_ARGS_MAXIMUM): Rename as... |
| (ARGS_MAX): this. |
| |
| 2020-03-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: c++: promote api.token.raw |
| * doc/bison.texi (Calc++ Parser): Here. |
| |
| 2020-03-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: calc: no need for super long inputs |
| * etc/bench.pl.in ($iterations): Restore initial value, -1, meaning |
| "at least one second". |
| ($calc_input): There is no need to generate 400 lines. |
| |
| 2020-03-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: calc: work on a string instead of a file |
| The cost of the file layer is large and makes benchmarks too coarse, |
| as seen for in following example, first with a file, then with a |
| literal string: |
| |
| 0. %skeleton "yacc.c" %define parse.lac full |
| 1. %skeleton "yacc-v1.c" %define nofinal %define parse.lac full |
| 2. %skeleton "yacc-v2.c" %define nofinal %define parse.lac full |
| 3. %skeleton "yacc-v3.c" %define nofinal %define parse.lac full |
| 4. %skeleton "yacc.c" |
| 5. %skeleton "yacc-v1.c" %define nofinal |
| 6. %skeleton "yacc-v2.c" %define nofinal |
| 7. %skeleton "yacc-v3.c" %define nofinal |
| -------------------------------------------------- |
| Benchmark Time CPU Iterations |
| -------------------------------------------------- |
| BM_y0 32558 ns 32537 ns 21228 |
| BM_y1 32400 ns 32369 ns 21233 |
| BM_y2 33485 ns 33464 ns 20625 |
| BM_y3 32139 ns 32125 ns 21446 |
| BM_y4 31343 ns 31329 ns 21747 |
| BM_y5 31344 ns 31317 ns 22035 |
| BM_y6 31287 ns 31255 ns 22039 |
| BM_y7 31387 ns 31373 ns 22178 |
| -------------------------------------------------- |
| Benchmark Time CPU Iterations |
| -------------------------------------------------- |
| BM_y0 10642 ns 10634 ns 63601 |
| BM_y1 10657 ns 10654 ns 63625 |
| BM_y2 10441 ns 10432 ns 65957 |
| BM_y3 10558 ns 10554 ns 64546 |
| BM_y4 9521 ns 9516 ns 72011 |
| BM_y5 9179 ns 9157 ns 75028 |
| BM_y6 9360 ns 9356 ns 73770 |
| BM_y7 9365 ns 9359 ns 72609 |
| |
| Of course, at the same time it is less realistic: most users read |
| files rather that strings, so it might lead to us to pay attention to |
| costs most people don't see. |
| |
| * etc/bench.pl.in (&calc_input): Output into a file given as argument. |
| Output in C syntax. |
| (&generate_grammar_calc): Use it. |
| Simplify the grammar: remove operators we don't care about. |
| Rewrite the scanner to work on a char* instead of a FILE*. |
| |
| 2020-03-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: add a "latest" symlink |
| * etc/bench.pl.in: here. |
| |
| 2020-03-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: use the same prefix in both bench methods |
| * etc/bench.pl.in (&bench_with_timethese): Also use y$i, as in |
| &bench_with_gbenchmark. |
| (&generate_grammar_calc): Don't add a prefix, let the callers do it. |
| |
| 2020-03-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: use a C++-11 compiler |
| See https://github.com/google/benchmark#a-faster-keeprunning-loop. |
| |
| * etc/bench.pl.in ($cxx): Be C++11. |
| (&bench_with_gbenchmark): Adjust. |
| |
| 2020-03-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: create a README file with benches |
| * etc/bench.pl.in (&bench_with_gbenchmark): Here. |
| |
| 2020-03-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: calc: add support for google benchmark |
| * etc/bench.pl.in (&compiler): New, extracted from... |
| (&compile): here. |
| Don't link when using gbm. |
| (&calc_input): Don't make massive input for micro |
| benchmarks. |
| (&generate_grammar_calc): When using gbm, use api.prefix to avoid name |
| collisions. |
| Be ready to issue BENCHMARKS instead of a main. |
| (&bench): Rename as... |
| (&bench_with_timethese): this. |
| (&bench_with_gbenchmark): New. |
| (&bench): New. |
| Dispatch on these two. |
| |
| 2020-03-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: better error messages on invalid input |
| * etc/bench.pl.in: here. |
| |
| 2020-03-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: simplify the calc grammar |
| * etc/bench.pl.in (generate_grammar_calc): We don't need global_result |
| etc. |
| |
| 2020-03-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench: die clearly on incorrect --grammar arguments |
| * etc/bench.pl.in (getopt): here. |
| |
| 2020-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: style: prefer switch to if |
| * data/skeletons/yacc.c: Prefer switch to decode yy_lac's return value. |
| |
| 2020-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: yypstate_expected_tokens |
| In push parsers, when asking for the list of expected tokens at some |
| point, it makes no sense to build a yyparse_context_t: the yypstate |
| alone suffices (the only difference being the lookahead). Instead of |
| forcing the user to build a useless shell around yypstate, let's offer |
| yypstate_expected_tokens. |
| |
| See https://lists.gnu.org/r/bison-patches/2020-03/msg00025.html. |
| |
| * data/skeletons/yacc.c (yypstate): Declare earlier, so that we can |
| use it for... |
| (yypstate_expected_tokens): this new function, when in push parsers. |
| Adjust dependencies. |
| * examples/c/bistromathic/parse.y: Simplify: use |
| yypstate_expected_tokens. |
| Style fixes. |
| Reduce scopes (reported by Joel E. Denny). |
| |
| 2020-03-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: simplify |
| * examples/c/bistromathic/parse.y (expected_tokens): Remove useless "break". |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| merge branch 'maint' |
| * upstream/maint: |
| maint: post-release administrivia |
| version 3.5.3 |
| news: update for 3.5.3 |
| yacc.c: make sure we properly propagated the user's number for error |
| diagnostics: don't crash because of repeated definitions of error |
| style: initialize some struct members |
| diagnostics: beware of zero-width characters |
| diagnostics: be sure to close the styling when lines are too short |
| muscles: fix incorrect decoding of $ |
| code: be robust to reference with invalid tags |
| build: fix typo |
| doc: update recommandation for libtextstyle |
| style: comment changes |
| examples: use consistently the GFDL header for readmes |
| style: remove useless declarations |
| typo: succesful -> successful |
| README: point to tests/bison, and document --trace |
| gnulib: update |
| maint: post-release administrivia |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.3 |
| * NEWS: Record release date. |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update for 3.5.3 |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: make sure we properly propagated the user's number for error |
| * data/skeletons/yacc.c (YYERRCODE): Be truthful. |
| * tests/input.at (Redefining the error token): Check that. |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: don't crash because of repeated definitions of error |
| According to https://www.unix.com/man-page/POSIX/1posix/yacc/, the |
| user is allowed to specify her user number for the error token: |
| |
| The token error shall be reserved for error handling. The name |
| error can be used in grammar rules. It indicates places where the |
| parser can recover from a syntax error. The default value of error |
| shall be 256. Its value can be changed using a %token |
| declaration. The lexical analyzer should not return the value of |
| error. |
| |
| I think this feature is useless, the user should not have to deal with |
| that. The intend is probably to give the user a means to use 256 if |
| she wants to, but provided "error" cleared the path first by being |
| assigned another number. In the case of Bison, 256 is assigned to |
| "error" at the end if the user did not use it for a token of hers. So |
| this feature is useless. |
| |
| Yet it is valid, and if the user assigns twice a token number to |
| "error", then the second time we want to complain about it and want to |
| show the original definition. At this point, we try to display the |
| built-in definition of "error", whose location is NULL, and we crash. |
| |
| Rather, the location of the first user definition of "error" should |
| become its defining location. |
| |
| Reported byg Ahcheong Lee. |
| https://lists.gnu.org/r/bug-bison/2020-03/msg00007.html |
| |
| * src/symtab.c (symbol_class_set): If this is a declaration and the |
| symbol was not declared yet, keep this as defining location. |
| * tests/input.at (Redefining the error token): New. |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: initialize some struct members |
| * src/symtab.c (sym_content_new): Initialize all the location members. |
| Not needed by the code, but disturbing values when using a debugger. |
| |
| 2020-03-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: beware of zero-width characters |
| Currenly we rely on (visual) width of the characters to decide where |
| to open and close the styling of the quoted lines. This breaks when |
| we deal with zero-width characters: we cannot just rely on (visual) |
| columns, we need to know whether we are before, inside, or after the |
| highlighted portion. |
| |
| * src/location.c (location_caret): col_end: no longer add 1, "regular" |
| characters have a width of 1, only 0-width characters have 0-width. |
| opened: replace with 'state', a three-valued enum. |
| Don't reopen the style if we already did. |
| * tests/diagnostics.at (Zero-width characters): New. |
| |
| 2020-03-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: be sure to close the styling when lines are too short |
| bar.y:4.12-17: <error>error:</error> redefining user token number of foo |
| - 4 | %token foo <error>123 |
| + 4 | %token foo <error>123</error> |
| | <error>^~~~~~</error> |
| |
| * src/location.c (location_caret): Be sure to close. |
| * tests/diagnostics.at (Line is too short, and then you die): New. |
| |
| 2020-03-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| muscles: fix incorrect decoding of $ |
| Bug introduced in 458171e6df5a0110a35ee45ad8b2e9f6fb426f1d. |
| https://lists.gnu.org/archive/html/bison-patches/2013-11/msg00009.html |
| |
| Reported by Ahcheong Lee. |
| https://lists.gnu.org/r/bug-bison/2020-03/msg00010.html |
| |
| * src/muscle-tab.c (COMMON_DECODE): "$" is coded as "$][", not "$[][". |
| * tests/input.at ("%define" enum variables): Check that case. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| code: be robust to reference with invalid tags |
| Because we want to support $<a->b>$, we must accept -> in type tags, |
| and reject $<->$, as it is unfinished. |
| Reported by Ahcheong Lee. |
| |
| * src/scan-code.l (yylex): Make sure "tag" does not end with -, since |
| -> does not close the tag. |
| * tests/input.at (Stray $ or @): Check this. |
| |
| 2020-03-06 Akimn Demaille <akim.demaille@gmail.com> |
| |
| build: fix typo |
| * build-aux/cross-options.pl: here. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update recommandation for libtextstyle |
| * README: here. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * src/symtab.h, src/lr0.c: here. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: use consistently the GFDL header for readmes |
| * examples/c++/README.md, examples/c++/calc++/README.md, |
| * examples/c/calc/README.md, examples/c/lexcalc/README.md, |
| * examples/c/reccalc/README.md: |
| Prefer the GFDL banner to the GPL one. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove useless declarations |
| * src/reader.h: Don't duplicate what parse-gram.h already exposes. |
| * src/lr0.h: Remove useless include. |
| |
| 2020-03-06 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| typo: succesful -> successful |
| * data/skeletons/lalr1.cc: here |
| * etc/bench.pl.in: here |
| * src/location.c: and here. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| README: point to tests/bison, and document --trace |
| Reported by Victor Morales Cayuela. |
| |
| * README, README-hacking.md: here. |
| |
| 2020-03-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-03-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| README: point to tests/bison, and document --trace |
| Reported by Victor Morales Cayuela. |
| |
| * README, README-hacking.md: here. |
| |
| 2020-03-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: simplify yyparse_context_t member names |
| * data/skeletons/yacc.c (yyparse_context_t): Rename yyes_p and |
| yyes_capacity_p as... |
| (yyes, yyes_capacity): These. |
| |
| 2020-03-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: yyerror_range does not need to be preserved accross calls |
| * data/skeletons/yacc.c (b4_parse_state_variable_macros): Don't define |
| yyerror_range. |
| (yyparse): Add yyerror_range as local variable. |
| |
| 2020-03-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: push: undefine the pstate macros for the epilogue |
| * data/skeletons/yacc.c (b4_macro_define, b4_macro_undef) |
| (b4_pstate_macro_define, b4_parse_state_variable_macros): |
| New. |
| Use them. |
| * examples/c/bistromathic/parse.y: Remove now useless undefs. |
| |
| 2020-03-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: push: initialize the pstate variables in pstate_new |
| Currently pstate_new does not set up its variables, this task is left |
| to yypush_parse. This was probably to share more code with usual pull |
| parsers, where these (local) variables are indeed initialized by |
| yyparse. |
| |
| But as a consequence yyexpected_tokens crashes at the very beginning |
| of the parse, since, for instance, the stacks are not even set up. |
| See https://lists.gnu.org/r/bison-patches/2020-03/msg00001.html. |
| |
| The fix could have very simple, but the documentation actually makes |
| it very clear that we can reuse a pstate for several parses: |
| |
| After yypush_parse returns a status other than YYPUSH_MORE, the |
| parser instance yyps may be reused for a new parse. |
| |
| so we need to restore the parser to its pristine state so that (i) it |
| is ready to run the next parse, (ii) it properly supports |
| yyexpected_tokens for the next run. |
| |
| * data/skeletons/yacc.c (b4_initialize_parser_state_variables): New, |
| extracted from the top of yyparse/yypush_parse. |
| (yypstate_clear): New. |
| (yypstate_new): Use it when push parsers are enabled. |
| Define after the yyps macros so that we can use the same code as the |
| regular pull parsers. |
| (yyparse): Use it when push parsers are _not_ enabled. |
| |
| * examples/c/bistromathic/bistromathic.test: Check the completion on |
| the beginning of the line. |
| |
| 2020-03-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * data/skeletons/yacc.c, tests/torture.at: here. |
| |
| 2020-03-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: properly compute the lcp, as expected by readline |
| Currently completion on "at" proposes only "atan", but does not |
| actually complete "at" into "atan". |
| |
| * examples/c/bistromathic/parse.y (completion): Install the lcp in |
| matches[0]. |
| * examples/c/bistromathic/bistromathic.test: Check that case. |
| |
| 2020-03-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: don't require spaces after operators for completion |
| Currently "(1+<TAB>" does not work as expected, because "+" is not a |
| word breaking character. |
| |
| * examples/c/bistromathic/parse.y (init_readline): Specify our word |
| breaking characters. |
| * examples/c/bistromathic/bistromathic.test: Avoid trailing spaces. |
| |
| 2020-03-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| bistromathic: check completion |
| * examples/c/bistromathic/bistromathic.test: here. |
| * examples/c/bistromathic/parse.y (expected_tokens): Fix a memory |
| leak. |
| |
| 2020-03-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: remove b4_function_define and b4_function_declare |
| * data/skeletons/c.m4: here. |
| |
| 2020-03-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: decommission b4_function_declare |
| * data/skeletons/glr.c, data/skeletons/glr.cc, data/skeletons/yacc.c: |
| Stop using b4_function_declare. |
| |
| 2020-03-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: decommission function generating macro |
| These macros have been extremely useful when we had to support K&R C, |
| which we dropped long ago. Now, they merely make the code uselessly |
| hard to read. |
| |
| * data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/glr.cc, |
| * data/skeletons/yacc.c: |
| Stop using b4_function_define. |
| |
| 2020-03-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: demonstrate the use of yyexpected_tokens |
| Let's use GNU readline and its TAB autocompletion to demonstrate the |
| use of yyexpected_tokens. |
| |
| This shows a number of weaknesses in our current approach: |
| |
| - some macros (yyssp, etc.) from push parsers "leak" in user code, we |
| need to undefine them |
| |
| - the context needed by yyexpected_tokens does not need the token, |
| yypstate actually suffices |
| |
| - yypstate is not properly setup when first allocated, which results |
| in a crash of yyexpected_tokens if fired before a first token was |
| read. We should move initialization from yypush_parse into |
| yypstate_new. |
| |
| * examples/c/bistromathic/parse.y (yylex): Take input as a string, not |
| a file. |
| (EXIT): New token. |
| (input): Adjust to work only on a line. |
| (line): Remove. |
| (symbol_count, process_line, expected_tokens, completion) |
| (init_readline): New. |
| * examples/c/bistromathic/bistromathic.test: Adjust expectations. |
| |
| 2020-03-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: use consistently the GFDL header for readmes |
| * examples/c++/README.md, examples/c++/calc++/README.md, |
| * examples/c/calc/README.md, examples/c/lexcalc/README.md, |
| * examples/c/pushcalc/README.md, examples/c/reccalc/README.md: |
| Prefer the GFDL banner to the GPL one. |
| |
| 2020-03-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: use readline |
| |
| 2020-02-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: don't use Flex |
| This example will soon use GNU readline, so its scanner should be easy |
| to use (concurrently) on strings, not streams. This is not a place |
| where Flex shines, and anyway, these are examples of Bison, not Flex. |
| There's already lexcalc and reccalc that demonstrate the use of Flex. |
| |
| * examples/c/bistromathic/scan.l: Remove. |
| * examples/c/bistromathic/parse.y (yylex): New. |
| Adjust dependencies. |
| |
| 2020-02-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: strengthen tests |
| * examples/c/bistromathic/bistromathic.test: here. |
| * examples/test: Be clearer on failing tests. |
| |
| 2020-02-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: lexcalc: demonstrate location tracking |
| The bistromathic example should not use Flex, it makes it too complex. |
| But it was the only example to show location tracking with Flex. |
| |
| * examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/parse.y, |
| * examples/c/lexcalc/scan.l: Demonstrate location tracking as is done |
| in bistromathic. |
| |
| 2020-02-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: don't copy the lookahead |
| The current implementation of parser::context keeps a copy of the |
| lookahead. This is troublesome since we support move-only types. |
| Besides, while GCC is happy with the current implementation, Clang |
| complains that the ctor it needs to build the copy of the lookahead is |
| not yet available. |
| |
| 461. calc.at:1120: testing Calculator C++ %defines %locations parse.error=verbose %name-prefix "calc" %verbose ... |
| calc.at:1120: COLUMNS=1000; export COLUMNS; bison --color=no -fno-caret -Wno-deprecated -o calc.cc calc.y |
| calc.at:1120: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS |
| stderr: |
| In file included from calc-lex.cc:7: |
| calc.hh:351:12: error: instantiation of function 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' required here, but no definition is available [-Werror,-Wundefined-func-template] |
| struct symbol_type : basic_symbol<by_type> |
| ^ |
| calc.hh:273:7: note: forward declaration of template entity is here |
| basic_symbol (const basic_symbol& that); |
| ^ |
| calc.hh:351:12: note: add an explicit instantiation declaration to suppress this warning if 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' is explicitly instantiated in another translation unit |
| struct symbol_type : basic_symbol<by_type> |
| ^ |
| 1 error generated. |
| In file included from calc-main.cc:7: |
| calc.hh:351:12: error: instantiation of function 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' required here, but no definition is available [-Werror,-Wundefined-func-template] |
| struct symbol_type : basic_symbol<by_type> |
| ^ |
| calc.hh:273:7: note: forward declaration of template entity is here |
| basic_symbol (const basic_symbol& that); |
| ^ |
| calc.hh:351:12: note: add an explicit instantiation declaration to suppress this warning if 'calc::parser::basic_symbol<calc::parser::by_type>::basic_symbol' is explicitly instantiated in another translation unit |
| struct symbol_type : basic_symbol<by_type> |
| ^ |
| 1 error generated. |
| stdout: |
| calc.at:1120: exit code was 1, expected 0 |
| 461. calc.at:1120: 461. Calculator C++ %defines %locations parse.error=verbose %name-prefix "calc" %verbose (calc.at:1120): FAILED (calc.at:1120) |
| |
| * data/skeletons/lalr1.cc (context::yyla_): Make it a const-ref. |
| Move the implementation out of the declaration. |
| |
| 2020-02-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: minor fixes |
| Address compiler warnings such as |
| |
| warning: declaration of 'yyla' shadows a member of 'yy::parser::context' [-Wshadow] |
| |
| * data/skeletons/lalr1.cc (context): Don't use the same names for |
| variables and members. |
| Use foo_ for private members, as in parser. |
| Also, use the + trick in array accesses to please ICC and provide it |
| with an int. |
| |
| 2020-02-27 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| c++: add support for parse.error=custom |
| * data/skeletons/lalr1.cc: added support here |
| * tests/calc.at: added test cases |
| * tests/local.at: added yyreport_syntax_error implementation |
| for C++ test cases |
| |
| 2020-02-27 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| c++: add parser::context for syntax error handling |
| * data/skeletons/lalr1.cc: here |
| |
| 2020-02-27 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| c++: add support for parse.error=detailed |
| * data/skeletons/lalr1.cc: added support here |
| * tests/calc.at: added a test case |
| |
| 2020-02-27 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| skeletons: prefer b4_parse_error_{case,bmatch} over manual solution |
| Prefer b4_parse_error_case over the adhoc solution |
| `m4_case + b4_percent_define_get`. Same for b4_parse_error_bmatch. |
| |
| * data/skeletons/glr.c: here |
| * data/skeletons/yacc.c: here |
| |
| 2020-02-27 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| typo: succesful -> successful |
| * data/skeletons/lalr1.cc: here |
| * etc/bench.pl.in: here |
| * src/location.c: here |
| * tests/calc.at: and here |
| |
| 2020-02-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| bench.pl: clean up the dust |
| * etc/bench.pl.in: Adjust to the current use of %define's values. |
| Don't use %error-verbose. |
| Prefer Bison to CPP (e.g., api.value.type). |
| Avoid returning characters directly, so that %define api.token.raw works. |
| |
| 2020-02-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * src/symtab.h, src/lr0.c: here. |
| |
| 2020-02-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid using 'this' as an identifier |
| LLDB insists on parsing 'this' as a C++ keyword, even when debugging a |
| C program. |
| |
| * src/symtab.c: Please the dictator. |
| |
| 2020-02-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove useless declarations |
| * src/reader.h: Don't duplicate what parse-gram.h already exposes. |
| * src/lr0.h: Remove useless include. |
| |
| 2020-02-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix c/calc |
| * examples/c/calc/calc.y: Remove experiment traces. |
| |
| 2020-02-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-02-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update recommandation for libtextstyle |
| * README: here. |
| |
| 2020-02-15 Akimn Demaille <akim.demaille@gmail.com> |
| |
| build: fix typo |
| * build-aux/cross-options.pl: here. |
| |
| 2020-02-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: simplify the cross references |
| * doc/bison.texi: here. |
| |
| 2020-02-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document token internationalization |
| * doc/bison.texi (Parser Internationalization): Move most of its |
| content into... |
| (Enabling I18n): this new node. |
| (Token I18n): New. |
| (Token Decl): Refer to token internationalization. |
| (Error Reporting Function): Promote parse.error detailed. |
| |
| 2020-02-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-02-15 Victor Morales Cayuela <victor.morales_cayuela@nokia-sbell.com> |
| |
| diagnostics: modernize the display of submessages |
| Since Bison 2.7, output was indented four spaces for explanatory |
| statements. For example: |
| |
| input.y:2.7-13: error: %type redeclaration for exp |
| input.y:1.7-11: previous declaration |
| |
| Since the introduction of caret-diagnostics, it became less clear. |
| Remove the indentation and display submessages as in GCC: |
| |
| input.y:2.7-13: error: %type redeclaration for exp |
| 2 | %type <float> exp |
| | ^~~~~~~ |
| input.y:1.7-11: note: previous declaration |
| 1 | %type <int> exp |
| | ^~~~~ |
| |
| * src/complain.h (SUB_INDENT): Remove. |
| (warnings): Add "note" to the enum. |
| * src/complain.h, src/complain.c (complain_indent): Replace by... |
| (subcomplain): this. |
| Adjust all dependencies. |
| * tests/actions.at, tests/diagnostics.at, tests/glr-regression.at, |
| * tests/input.at, tests/named-refs.at, tests/regression.at: |
| Adjust expectations. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: simplify uses of references |
| This reverts "doc: work around problems with PDF generation", commit |
| d810aa3d8f76b1a4d7d402072f45a0662152ffd4. Upstream issue is fixed. |
| https://lists.gnu.org/r/bug-texinfo/2020-02/msg00006.html |
| |
| * gnulib: Update. |
| * doc/bison.texi: Simplify. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: provide a Context ctor |
| This is really a private auxiliary inner class, so it should not |
| matter. But it's better style. |
| |
| * data/skeletons/lalr1.java: here. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge tag 'v3.5.2' |
| bison 3.5.2 |
| |
| * tag 'v3.5.2': |
| version 3.5.2 |
| news: 3.5.2 |
| gnulib: update |
| doc: update Doxygen template |
| java: avoid trailing white spaces |
| m4: fix b4_token_format |
| doc: clearly state that %yacc only makes sense with yacc.c |
| doc: spell check |
| examples: be more robust to spaces in paths |
| larlr1.cc: Reject unsupported values for parse.lac |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.2 |
| * NEWS: Record release date. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: 3.5.2 |
| * NEWS: Update. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update Doxygen template |
| * Doxyfile.in: Run doxygen -u on it. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: avoid trailing white spaces |
| * data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed. |
| * data/skeletons/lalr1.java: Avoid trailing spaces. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: fix b4_token_format |
| We used to emit: |
| |
| /** Token number,to be returned by the scanner. */ |
| static final int NUM = 258; |
| /** Token number,to be returned by the scanner. */ |
| static final int NEG = 259; |
| |
| with no space after the comma. Fix that. |
| |
| * data/skeletons/bison.m4 (b4_token_format): Quote where appropriate. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clearly state that %yacc only makes sense with yacc.c |
| * doc/bison.texi: here. |
| |
| 2020-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| * doc/bison.texi: here. |
| |
| 2020-02-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: demonstrate named references |
| * examples/c/bistromathic/parse.y: here. |
| |
| 2020-02-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: simplify |
| * data/skeletons/stack.hh (ssize): Remove, same as size. |
| |
| 2020-02-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check calls to yyerror from the user actions |
| This revealed a number of things I had not realized: |
| |
| - the Java location tracking was aliasing the same pair of positions |
| for all the symbols (see previous commit). |
| |
| - in impure parsers, it's quite easy to use incorrect locations for |
| diagnostics, since yyerror uses yylloc, which is the location of the |
| lookahead, not that of the current lhs. So we need something like |
| |
| { |
| YYLTYPE old_yylloc = yylloc; |
| yylloc = @$; |
| yyerror (]AT_PARAM_IF([result, count, nerrs, ])[buf); |
| yylloc = old_yylloc; |
| } |
| |
| Maybe we should do that little yylloc dance in the skeleton instead |
| of leaving it to the user? It might be costly... But that's only |
| for users of the impure parsers, which are asking for trouble |
| anyway. |
| |
| - in glr.cc invoking yyerror is somewhat cumbersome: the C++ interface |
| is not available as we are in yyparse (which in C), and yyerror is |
| used by glr.cc itself to bind it to the user's parser::error. If we |
| call yyerror, we need: |
| |
| yyerror (]AT_LOCATION_IF([[&@$, ]])[yyparser, ]AT_PARAM_IF([result, count, nerrs, ])[msg); |
| |
| However calling yy::parser::error is easier, once we know that the |
| current parser object is available as 'yyparser'. Which also saves |
| us from having to pass the parse-params ourselves: |
| |
| yyparser.error (]AT_LOCATION_IF([[@$, ]])[msg); |
| |
| * tests/calc.at: Invoke yyerror by hand, instead of using fprintf etc. |
| Adjust expectations. |
| |
| 2020-02-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: beware not to alias the locations of the various symbols |
| * examples/java/calc/Calc.y, tests/calc.at, tests/local.at |
| (getStartPos, getEndPos): Always return a new object. |
| * doc/bison.texi: Clarify this. |
| |
| 2020-02-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: check that parse.error custom|detailed work with push parsers |
| * tests/calc.at: here. |
| |
| 2020-02-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: don't expose the Context's members |
| * data/skeletons/lalr1.java (Context): Make data members private. |
| (Context.getLocation): New. |
| * examples/java/calc/Calc.y, tests/java.at, tests/local.at: Adjust. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: pacify syntax-check |
| * src/complain.c: Fix indentation. |
| * cfg.mk: Using strcmp is ok in the tests. |
| Test cases and examples don't need Bison's PO support. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: prefer %D% and %C% to hard coded values |
| * doc/local.mk: here. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| parse.error: document and diagnose the incompatibility with %token-table |
| * doc/bison.texi (Tokens from Literals): Move to code using |
| %token-table to... |
| (Decl Summary: %token-table): here. |
| * data/skeletons/bison.m4: Implement mutual exclusion. |
| * tests/input.at: Check it. |
| * doc/local.mk: Be robust to the removal of doc/. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| * doc/bison.texi: here. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: here. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: work around problems with PDF generation |
| With texinfo.tex 2019-09-24.13, node names with + are not properly |
| handled. |
| https://lists.gnu.org/r/bug-texinfo/2020-02/msg00004.html |
| |
| * doc/bison.texi: Always use the three-argument form for references to |
| node with a + in the name. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: revert "style: avoid useless initializers" |
| This reverts commit ebab1ffca8a728158051481795ae798231cfd93d. |
| This commit removed "useless" initializers, going from |
| |
| /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing |
| STATE-NUM. */ |
| private static final byte yypact_[] = yypact_init (); |
| private static final byte[] yypact_init () |
| { |
| return new byte[] |
| { |
| 25, -7, -8, 37, -8, 40, -8, 20, -8, 61, |
| -8, -8, 3, 9, 51, -8, -8, -2, -2, -2, |
| -2, -2, -2, -8, -8, -8, 1, 66, 66, 3, |
| 3, 3 |
| }; |
| } |
| |
| to |
| |
| /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing |
| STATE-NUM. */ |
| private static final byte[] yypact_ = |
| { |
| 25, -7, -8, 37, -8, 40, -8, 20, -8, 61, |
| -8, -8, 3, 9, 51, -8, -8, -2, -2, -2, |
| -2, -2, -2, -8, -8, -8, 1, 66, 66, 3, |
| 3, 3 |
| }; |
| |
| But it turns out that this was on purpose, to work around the 64KB |
| limitation in JVM methods. It was introduced on the 2008-11-10 by |
| Di-an Jan in 09ccae9b18a7c09ebf7bb8df2a18c8c4a6def248: "Work around |
| Java's ``code too large'' problem for parser tables". See |
| https://lists.gnu.org/r/help-bison/2008-11/msg00004.html. A real |
| test, where we would hit the JVM limitation, would be nice. |
| |
| To avoid further regressions, add comments. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: avoid b4_error_verbose_if, which is confusing |
| parse.error has more than two possible values. |
| |
| * data/skeletons/bison.m4 (b4_error_verbose_if, b4_error_verbose_flag): |
| Remove. |
| (b4_parse_error_case, b4_parse_error_bmatch): New. |
| Adjust dependencies. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: decorelate %token-table from verbose error messages |
| Reported by Adrian Vogelsgesang. |
| |
| * data/skeletons/bison.m4: Here. |
| * data/skeletons/lalr1.cc: Adjust. |
| |
| 2020-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: here. |
| |
| 2020-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clearly state that %yacc only makes sense with yacc.c |
| * doc/bison.texi: here. |
| * tests/calc.at: Stop testing %yacc with non yacc.c skeletons. |
| |
| 2020-02-09 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| style: stylistic cleanups in the C skeletons |
| * data/skeletons/glr.c, data/skeletons/yacc.c: |
| Avoid duplicated declaration of yysymbol_name. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: provide Context with a more OO interface |
| * data/skeletons/lalr1.java (yyexpectedTokens) |
| (yysyntaxErrorArguments): Make them methods of Context. |
| (Context.yysymbolName): New. |
| * tests/local.at: Adjust. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: add support for parse.error custom |
| * data/skeletons/lalr1.java: Add support for custom parse errors. |
| (yyntokens_): Make it public. Under... |
| (yyntokens): this name. |
| (Context): Capture the location too. |
| * examples/c/bistromathic/parse.y, |
| * examples/c/bistromathic/bistromathic.test: |
| Improve error message. |
| * examples/java/calc/Calc.test, examples/java/calc/Calc.y: Use custom |
| error messages. |
| * tests/calc.at, tests/local.at: Check custom error messages. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: let the Context give access to yyntokens |
| * data/skeletons/lalr1.java (Context.yytokens): New. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: make the syntax error format string translatable |
| The error format should be translated, but contrary to the case of |
| C/C++, we cannot just depend on macros to adapt on the |
| presence/absence of '_'. Let's consider that the message format is to |
| be translated iff there are some internationalized tokens. |
| |
| * src/output.c (prepare_symbol_names): Define b4_has_translations. |
| * data/skeletons/java.m4 (b4_trans): New. |
| * data/skeletons/lalr1.java: Use it to emit translatable or not the |
| format string. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: introduce yyexpectedTokens |
| And allow syntax error messages for 'detailed' and 'verbose' to be |
| translated. |
| |
| * data/skeletons/lalr1.java (Context, yyexpectedTokens) |
| (yysyntaxErrorArguments): New. |
| (yysyntax_error): Use it. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: add support for parse.error=detailed |
| In Java there is no need for N_ and yytranslate_. So instead of |
| hard-coding the use of N_ in the table of the symbol names, rely on |
| b4_symbol_translate. |
| |
| * src/output.c (prepare_symbol_names): Use b4_symbol_translate instead |
| of N_. |
| * data/skeletons/c.m4 (b4_symbol_translate): New. |
| * data/skeletons/lalr1.java (yysymbolName): New. |
| Use it. |
| * examples/java/calc/Calc.y: Use parse.error=detailed. |
| * tests/calc.at: Check parse.error=detailed. |
| |
| 2020-02-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| m4: fix b4_token_format |
| We used to emit: |
| |
| /** Token number,to be returned by the scanner. */ |
| static final int NUM = 258; |
| /** Token number,to be returned by the scanner. */ |
| static final int NEG = 259; |
| |
| with no space after the comma. Fix that. |
| |
| * data/skeletons/bison.m4 (b4_token_format): Quote where appropriate. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: tests: remove now redundant tests |
| * tests/javapush.at: here. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: tests: check push parsers like the others |
| Currently in javapush.at. |
| |
| * tests/calc.at: Here. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: tests: remove now redundant tests |
| * tests/java.at: Calculator tests are now in calc.at. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: tests: check location tracking in the calculator |
| Unfortunately in the Java skeleton the user cannot override the way |
| locations are displayed, and locations don't know the structure of the |
| positions. So they cannot implement the tricks used in the C/C++ |
| skeletons to display "1.1" instead of "1.1-1.2". |
| |
| * tests/local.at (Java): Add support for column tracking in the |
| locations, as we did in examples/java/calc. |
| * tests/calc.at: Use AT_CALC_YYLEX. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: tests: prepare the replacement of calculator tests |
| Soon calculator tests for Java will move from java.at to calc.at. |
| Which implies improving the Java testing infrastructure in |
| local.at (for instance really tracking columns in positions, not just |
| token number). Detach java.at from local.at. |
| |
| * tests/java.at (AT_JAVA_POSITION_DEFINE_OLD): New. |
| Use it. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: style: avoid useless initializers |
| Instead of |
| |
| /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing |
| STATE-NUM. */ |
| private static final byte yypact_[] = yypact_init (); |
| private static final byte[] yypact_init () |
| { |
| return new byte[] |
| { |
| 25, -7, -8, 37, -8, 40, -8, 20, -8, 61, |
| -8, -8, 3, 9, 51, -8, -8, -2, -2, -2, |
| -2, -2, -2, -8, -8, -8, 1, 66, 66, 3, |
| 3, 3 |
| }; |
| } |
| |
| generate |
| |
| /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing |
| STATE-NUM. */ |
| private static final byte[] yypact_ = |
| { |
| 25, -7, -8, 37, -8, 40, -8, 20, -8, 61, |
| -8, -8, 3, 9, 51, -8, -8, -2, -2, -2, |
| -2, -2, -2, -8, -8, -8, 1, 66, 66, 3, |
| 3, 3 |
| }; |
| |
| I have no idea what motivated the previous approach. |
| |
| * data/skeletons/java.m4 (b4_typed_parser_table_define): Here. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: style: prefer putting the square brackets on the type |
| * examples/java/calc/Calc.y, examples/java/simple/Calc.y, |
| * tests/calc.at, tests/local.at: here. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: examples: fix the tracking of locations |
| * examples/java/calc/Calc.y: The StreamTokenizer cannot "peek" for the |
| next character, it reads it, and keeps it for the next call. So the |
| current location is one passed the end of the current token. To avoid |
| this, keep the previous position, and use it to end the current token. |
| * examples/java/calc/Calc.test: Adjust. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: examples: prefer switch to chains of else-if |
| * examples/java/calc/Calc.y, examples/java/simple/Calc.y: here. |
| * examples/java/simple/Calc.y: Use the tokenizer's handling of blanks. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: examples: split in two |
| * examples/java: Split in... |
| * examples/java/simple, examples/java/calc: these. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: don't print the stack before the gotos |
| The C, C++ and D skeletons used to show the stack right after popping |
| the stack during the reduction. Now that the stack is printed after |
| reaching a new state, that has become useless: |
| |
| Entering state 1 |
| Stack now 0 1 |
| Reducing stack by rule 5 (line 83): |
| $1 = token "number" (1) |
| -> $$ = nterm exp (1) |
| Stack now 0 |
| Entering state 8 |
| Stack now 0 8 |
| |
| Remove the "Stack now 0" line. |
| |
| * data/skeletons/lalr1.cc, data/skeletons/lalr1.d, |
| * data/skeletons/lalr1.java, data/skeletons/yacc.c: |
| Here. |
| |
| 2020-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: show the stack after reading a token |
| Currently, if we have long rules and series of shift, we stack states |
| without showing stack. Let's be more incremental, and do how the Java |
| skeleton does. |
| |
| * data/skeletons/lalr1.cc, data/skeletons/lalr1.d, |
| * data/skeletons/yacc.c: |
| Here. |
| Adjust test cases. |
| * tests/torture.at (AT_DATA_STACK_TORTURE): Disable stack traces: this |
| test produces a very large stack, and showing the stack each time we |
| shift a token goes quadatric. |
| |
| 2020-02-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: write the "Reading a token" alone on its line |
| The Java skeleton displays |
| |
| Reading a token: |
| Next token is token "number" (1) |
| |
| while the other display |
| |
| Reading a token: Next token is token "number" (1) |
| |
| When generating logs in the scanner, the first part is separated from |
| the second, and the end of the scanner logs have the second part |
| pasted in. So let's propagate the Java way, but with the colon. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, data/skeletons/lalr1.d, |
| * data/skeletons/lalr1.java, data/skeletons/yacc.c: Do it. |
| Adjust test cases and doc. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: use the same calc tests as the other skeletons |
| * tests/local.at (AT_LANG_MATCH): New. |
| (AT_YYERROR_DECLARE(java), AT_YYERROR_DECLARE_EXTERN(java)): New. |
| * tests/calc.at: The grammar file for Java is quite different for the |
| others, and continuing to assemble it from pieces makes the grammar |
| file hard to understand. Let's also dispatch on the language to |
| assemble it, and isolate Java from the others. |
| Most of this comes from java.at. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: add access to the number of errors |
| * data/skeletons/lalr1.java (yynewrrs, getNumberOfErrors): New. |
| Formatting changes. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: formatting changes |
| * data/skeletons/java.m4, data/skeletons/lalr1.java: here. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: avoid trailing white spaces |
| * data/skeletons/java.m4 (b4_maybe_throws): Issue a space before when needed. |
| * data/skeletons/lalr1.java: Avoid trailing spaces. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: example: properly track the locations |
| This example, so far, was tracking the current token number, not the |
| current column number. This is not nice for an example... |
| |
| * examples/java/Calc.y (PositionReader): New. |
| Use it. |
| * examples/java/Calc.test: Check the output. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: example: improve |
| * examples/java/Calc.y: Propagate the exit status. |
| Support -p. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: example: rely on autoboxing |
| AFAICT, autoboxing/unboxing was added in Java 5 (September 30, 2004). |
| I think we can afford to use it. It should help us merge some Java |
| tests with the main ones. |
| |
| However, beware that != does not unbox: it compares the object |
| addresses. |
| |
| * examples/java/Calc.y, tests/java.at: Simplify. |
| * examples/java/Calc.test, tests/java.at: Improve tests. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: comment changes |
| * tests/calc.at: Shorten titles and reduce redundancy. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: add support for %code epilogue |
| When building the test cases, emitting code in the epilogue is very |
| constraining. Let's make it simpler thanks to %code epilogue. |
| |
| However, I don't want to document this: it is bad style to use it (we |
| should avoid having too many ways to write the same thing, |
| TI!MTOWTDI), just put your code in the true epilogue section. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.d, data/skeletons/lalr1.java, |
| * data/skeletons/yacc.c: Implement support for %code epilogue. |
| Remove useless comments. |
| * tests/calc.at, tests/java.at: Simplify. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: bistromathic: fix location tracking |
| * examples/c/bistromathic/scan.l (LOCATION_STEP): New. |
| Use to properly ignore blanks. |
| * examples/c/bistromathic/bistromathic.test: Check that case. |
| |
| 2020-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document new features of parse.error |
| * doc/bison.texi (Error Reporting): Rename as... |
| (Error Reporting Function): this. |
| Adjust dependencies. |
| Make it a subsection of this... |
| (Error Reporting): new section. |
| (Syntax Error Reporting Function): New. |
| (parse.error): Update description. |
| |
| 2020-01-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: add support for parse.error=custom |
| * data/skeletons/glr.c (yyreportSyntaxError): Call the user's |
| yyreport_syntax_error in custom mode. |
| * tests/calc.at: Check it. |
| |
| 2020-01-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: add support for parse.error=detailed |
| * data/skeletons/glr.c (yystrlen, yysymbol_name): New. |
| Implement parse.error detailed. |
| * tests/calc.at: Check it. |
| |
| 2020-01-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: introduce yyexpected_tokens and yysyntax_error_arguments |
| Modeled after what was done in yacc.c, yet somewhat different since |
| yyGLRStack play the role of the full yyparse_context_t. It will |
| probably be defined as a alias, to make interfaces compatible. |
| |
| LAC is not supported here. And is somewhat tricky. |
| |
| * data/skeletons/glr.c (yyexpected_tokens, yysyntax_error_arguments): New. |
| |
| 2020-01-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: move code around |
| * data/skeletons/glr.c: Move the handling of error messages after the |
| definition of types. Especially after yyGLRStack, which we will need |
| in forthcoming patches. |
| Simplify: yyGLRStack is defined at this point. |
| |
| 2020-01-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: rename yyStateNum as yy_state_t |
| * data/skeletons/glr.c: here. |
| For consistency with yacc.c. |
| |
| 2020-01-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: fix misleading indentation |
| * data/skeletons/yacc.c: here. |
| |
| 2020-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: simplify uses of @ref |
| The PDF output is more consistent: some nodes were not pointed to with |
| their title. The HTML output becomes "see section Foo" instead of |
| "see Foo", but this should be addressed in the next Texinfo release. |
| Info output is simplified, as it uses only the node name and not its |
| title. But it's considered easier to read this way. |
| See https://lists.gnu.org/r/help-texinfo/2020-01/msg00031.html. |
| |
| * doc/bison.texi: Set @xrefautomaticsectiontitle on. |
| Simplify all uses of ref. |
| |
| 2020-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: be more robust to spaces in paths |
| Reported by Nikki Valen. |
| https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html |
| |
| * examples/test ($prog): Remove, replaced by... |
| (prog): This new function, which pays attention to quoting shell |
| variables. |
| |
| 2020-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: don't pretend trigonometry is part of arithmetics |
| * doc/bison.texi (arith_funs): Rename as... |
| (funs): this. |
| |
| 2020-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update Doxygen template |
| * Doxyfile.in: Run doxygen -u on it. |
| |
| 2020-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add a complete example with all the bells and whistles |
| * examples/c/bistromathic/Makefile, |
| * examples/c/bistromathic/README.md, |
| * examples/c/bistromathic/bistromathic.test, |
| * examples/c/bistromathic/local.mk, |
| * examples/c/bistromathic/parse.y, |
| * examples/c/bistromathic/scan.l: |
| New. |
| |
| * Makefile.am (AM_YFLAGS_WITH_LINES): Add -Wdangling-alias. |
| * examples/test: Make failure errors easier to read. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add an example of a push parser |
| Add an example to demonstrate the use of push parser. I'm pleasantly |
| surprised: parse.error=detailed works like a charm with push parsers. |
| |
| * examples/c/local.mk, examples/c/pushcalc/Makefile |
| * examples/c/pushcalc/README.md, examples/c/pushcalc/calc.test, |
| * examples/c/pushcalc/calc.y, examples/c/pushcalc/local.mk: |
| New. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: more tests |
| * examples/c/mfcalc/mfcalc.test: here. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: clean up |
| * examples/c/calc/calc.y: Restore to its original state, with |
| parse.error=detailed instead of parse.error=custom (this example |
| should be simple). |
| * examples/c/calc/calc.test: Check syntax errors. |
| * examples/c/lexcalc/parse.y: Add comments. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check custom error messages and push parsers |
| * tests/local.at (AT_LAC_IF): New. |
| * tests/calc.at: And also check the suppot for LAC. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * data/skeletons/lalr1.java: here. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: pretend to 3.6 already |
| * src/parse-gram.y: here. |
| |
| 2020-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: update ignores |
| * lib/.gitignore: here. |
| |
| 2020-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: modernize bison's syntax errors |
| We used to display the unexpected token first: |
| |
| $ bison foo.y |
| foo.y:1.8-13: error: syntax error, unexpected %token, expecting character literal or identifier or <tag> |
| 1 | %token %token |
| | ^~~~~~ |
| |
| GCC uses a different format: |
| |
| $ gcc-mp-9 foo.c |
| foo.c:1:5: error: expected identifier or '(' before ')' token |
| 1 | int()()() |
| | ^ |
| |
| and so does Clang: |
| |
| $ clang-mp-9.0 foo.c |
| foo.c:1:5: error: expected identifier or '(' |
| int()()() |
| ^ |
| 1 error generated. |
| |
| They display the unexpected token last (or not at all). Also, they |
| don't waste width with "syntax error". Let's try that. It gives, for |
| the same example as above: |
| |
| $ bison foo.y |
| foo.y:1.8-13: error: expected character literal or identifier or <tag> before %token |
| 1 | %token %token |
| | ^~~~~~ |
| |
| * src/complain.h, src/complain.c (syntax_error): New. |
| * src/parse-gram.y (yyreport_syntax_error): Use it. |
| |
| 2020-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: report syntax errors in color |
| * src/parse-gram.y (parse.error): Set to 'custom'. |
| (yyreport_syntax_error): New. |
| * data/bison-default.css (.expected, .unexpected): New. |
| * tests/diagnostics.at: Adjust. |
| |
| 2020-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: translate bison's own tokens |
| As a test case, support translations in Bison itself. |
| |
| * src/parse-gram.y: Mark the translatable tokens. |
| While at it, use clearer names. |
| * tests/input.at: Adjust expectations. |
| |
| 2020-01-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: handle -fno-caret in the called functions |
| Don't force callers of location_caret to have to deal with flags that |
| disable it. |
| |
| * src/location.h, src/location.c (location_caret) |
| (location_caret_suggestion): Early return if disabled. |
| * src/complain.c: Simplify. |
| |
| 2020-01-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: fixes |
| * data/skeletons/yacc.c: Avoid warnings about unused functions. |
| Fix typo. |
| |
| 2020-01-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: be more robust to spaces in paths |
| Reported by Nikki Valen. |
| https://lists.gnu.org/r/bug-bison/2020-01/msg00032.html |
| |
| * examples/test ($prog): Remove, replaced by... |
| (prog): This new function, which pays attention to quoting shell |
| variables. |
| |
| 2020-01-21 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| larlr1.cc: Reject unsupported values for parse.lac |
| Just as the yacc.c skeleton, the lalr1.cc skeleton should reject |
| invalid values for parse.lac. |
| |
| * data/skeletons/lalr1.cc: check validity of parse.lac |
| * tests/input.at: new test cases |
| |
| 2020-01-21 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| larlr1.cc: Reject unsupported values for parse.lac |
| Just as the yacc.c skeleton, the lalr1.cc skeleton should reject |
| invalid values for parse.lac. |
| |
| * data/skeletons/lalr1.cc: check validity of parse.lac |
| * tests/input.at: new test cases |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| parsers: issue tname with i18n markup |
| Some users would like to avoid having to "parse" the *.y file to find |
| the strings to translate. Let's issue the translatable tokens with N_ |
| to allow "parsing" the generated parsers instead. |
| |
| See |
| https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00015.html |
| |
| * src/output.c (prepare_symbol_names): Issue symbol_names with N_() |
| markup. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check token internationalization |
| * tests/calc.at: Check it. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| parsers: support translatable token aliases |
| In addition to |
| |
| %token NUM "number" |
| |
| accept |
| |
| %token NUM _("number") |
| |
| in which case the token will be translated in error messages. |
| Do not use _() in the output if there are no translatable tokens. |
| |
| * src/symtab.h, src/symtab.c (symbol): Add a 'translatable' member. |
| * src/parse-gram.y (TSTRING): New token. |
| (string_as_id.opt): Replace with... |
| (alias): this. |
| Use it. |
| * src/scan-gram.l (SC_ESCAPED_TSTRING): New start conditions, to match |
| TSTRINGs. |
| * src/output.c (prepare_symbols): Define b4_translatable if there are |
| translatable strings. |
| |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, |
| * data/skeletons/yacc.c (yytnamerr): Receive b4_translatable, and use it. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check that detailed error messages preserve UTF-8 characters |
| * tests/regression.at: here. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: escape trigraphs in detailed parse.error |
| * src/output.c (escape_trigraphs, xescape_trigraphs): New. |
| (prepare_symbol_names): Use it. |
| * tests/regression.at: Check the handling of trigraphs with |
| parse.error = detailed. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: use detailed error messages |
| * #: . |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: tests: check detailed error messages |
| * tests/local.at (AT_ERROR_DETAILED_IF): New. |
| (AT_ERROR_SIMPLE_IF): Adjust. |
| * tests/calc.at: Check parse.error=detailed. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: add support for parse.error detailed |
| "detailed" error messages are almost like "verbose", except that we |
| don't double escape them, they don't get inner quotes, we don't use |
| yytnamerr, and we hide the table. |
| |
| "custom" is exposed with the "detailed" tokens, not the "verbose" |
| ones: they are not double-quoted. |
| |
| Because there's a risk that some people use yytname even without |
| "verbose", let's keep yytname (instead of yys_name) in "simple" |
| parse.error. |
| |
| * src/output.c (prepare_symbol_names): Be ready to output symbol names |
| unquoted. |
| (prepare_symbol_names): Output both the old tname table, and the new |
| symbol_names one. |
| * data/skeletons/bison.m4: Accept 'detailed'. |
| * data/skeletons/yacc.c: When parse.error is 'detailed', don't emit |
| yytname and yytnamerr, just yysymbol_name with the table inside. |
| * tests/calc.at: Adjust. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: use yysymbol_name in traces |
| Only parse.error verbose and simple will get the original yytname: the |
| other options will rely on a different table. So let's move on top of |
| the yysymbol_name function. |
| |
| * data/skeletons/c.m4 (yy_symbol_print): Use yysymbol_name. |
| * data/skeletons/glr.c (yytokenName): Rename as... |
| (yysymbol_name): this. |
| The change of naming scheme is unfortunate, but it's definitely glr.c |
| which is "wrong". |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: move some functions after the definition of types |
| Currently yy_symbol_print is defined before yytokenName, although it |
| should use it instead of read yytname directly. Move blocks around to |
| avoid this. |
| |
| * data/skeletons/glr.c (yy_symbol_print): Move its definition after |
| that of yytokenName. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * maint: |
| maint: post-release administrivia |
| version 3.5.1 |
| news: update |
| CI: use ICC again |
| warnings: pacify ICC in lalr1.cc |
| test: report.at: avoid tiny new failure |
| git: update ignores |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5.1 |
| * NEWS: Record release date. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: use ICC again |
| See https://github.com/nemequ/icc-travis/issues/15. |
| Thanks to Jeff Hammond and Evan Nemerson for their help. |
| |
| * configure.ac (warn_common): Disable dubious warnings. |
| * .travis.yml: Use ICC again. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| warnings: pacify ICC in lalr1.cc |
| See 139d0655947c87f90af08718618feaaca0e558d7. |
| |
| * data/skeletons/yacc.c: If I might be a char, write a[+I] instead of |
| a[I], so that ICC does not complain. |
| |
| 2020-01-19 Jim Meyering <meyering@fb.com> |
| |
| test: report.at: avoid tiny new failure |
| Be robust to newer versions of Autoconf where the package URL defaults |
| to https instead of http. |
| |
| * configure.ac (AC_INIT): Use https. |
| * tests/report.at: Adjust expected output s/http/https/ |
| to match updated URL. |
| |
| 2020-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: update ignores |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: portability to G++ 4.8 |
| Currently we get warnings with GCC 4.8 when running the |
| maintainer-check-g++ tests: |
| |
| 143. skeletons.at:85: testing Installed skeleton file names ... |
| ../../tests/skeletons.at:120: COLUMNS=1000; export COLUMNS; bison --color=no -fno-caret --skeleton=yacc.c -o input-cmd-line.c input-cmd-line.y |
| ../../tests/skeletons.at:121: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input-cmd-line input-cmd-line.c $LIBS |
| stderr: |
| input-cmd-line.c: In function 'int yysyntax_error(long int*, char**, const yyparse_context_t*)': |
| input-cmd-line.c:977:52: error: conversion to 'int' from 'long int' may alter its value [-Werror=conversion] |
| YYSIZEOF (yyarg) / YYSIZEOF (*yyarg)); |
| ^ |
| cc1plus: all warnings being treated as errors |
| stdout: |
| ../../tests/skeletons.at:121: exit code was 1, expected 0 |
| |
| and |
| |
| 429. calc.at:823: testing Calculator parse.error=custom %locations api.prefix={calc} ... |
| ../../tests/calc.at:823: COLUMNS=1000; export COLUMNS; bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y |
| ../../tests/calc.at:823: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS |
| stderr: |
| calc.y: In function 'int yyreport_syntax_error(const yyparse_context_t*)': |
| calc.y:157:58: error: conversion to 'int' from 'long unsigned int' may alter its value [-Werror=conversion] |
| int n = yysyntax_error_arguments (ctx, arg, sizeof arg / sizeof *arg); |
| ^ |
| cc1plus: all warnings being treated as errors |
| stdout: |
| ../../tests/calc.at:823: exit code was 1, expected 0 |
| |
| We could use a cast to avoid the warning, but it becomes too |
| cluttered. We can also use YYPTRDIFF_T, but that forces the user to |
| use YYPTRDIFF_T too, although this is an array of tokens, which is |
| limited by YYNTOKENS, an int. So let's completely avoid this warning. |
| |
| * data/skeletons/yacc.c, tests/local.at (yyreport_syntax_error): Avoid |
| relying on sizeof to compute the array capacity. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: pass the parse-params to yyreport_syntax_error |
| Enhance the calculator tests: show that passing arguments to yyerror |
| works. |
| |
| * tests/calc.at: Add a new parse-param, nerrs, which counts the number |
| of syntax errors in a run. |
| * tests/local.at: Adjust to handle the new 'nerrs' argument, when |
| present. |
| |
| The custom error reporting function show sees the user's additional |
| arguments. Let's experiment with passing them as arguments to |
| yyreport_syntax_error, but maybe storing them in the context would be |
| a bettter alternative. |
| |
| * data/skeletons/yacc.c (yyreport_syntax_error): Handle the |
| parse-params. |
| * tests/calc.at, tests/local.at: Adjust. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: a clearer test for parse-params |
| Currently the parse-params are tested in calc.at by checking that the |
| global variable and the parse-params have the same value. But it does |
| not check that value, that could remain being 0 just as well. |
| |
| * tests/calc.at: Don't define the params when they are not used. |
| Check the final value of result and count. |
| Also, do count the number of line of logs. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: check custom error messages with parse-params |
| * tests/calc.at: Check with prefix and parse-params. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: let custom error messages see the location |
| * data/skeletons/yacc.c (yyparse_context_t): Add yylloc when |
| applicable. |
| (yyparse_context_location): New. |
| * tests/local.at (AT_YYERROR_DEFINE(c)): Handle the location. |
| * tests/calc.at: Check it. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: isolate yyexpected_tokens |
| Provide users with a means to query for the currently allowed tokens. |
| Could be used for autocompletion for instance. |
| |
| * data/skeletons/yacc.c (yyexpected_tokens): New, extracted from |
| yysyntax_error_arguments. |
| * examples/c/calc/calc.y (PRINT_EXPECTED_TOKENS): New. |
| Use it. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: compute verbose error messages from the custom ones |
| We use a different format to check parse.error custom. Compute the |
| "verbose" one from it instead of forcing the test author to provide |
| the various formats of expected error messages. |
| |
| * tests/calc.at (_AT_CHECK_CALC_ERROR): Handle this transformation |
| when needed. |
| Simplify callers. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: check custom error messages |
| * tests/local.at (AT_ERROR_CUSTOM_IF, AT_ERROR_VERBOSE_IF) |
| (AT_ERROR_SIMPLE_IF): New. |
| (AT_YYERROR_DEFINE(c)): Generate yyreport_syntax_error. |
| * tests/calc.at (_AT_CHECK_CALC_ERROR): Accept custom error messages |
| as additional test case. |
| Use it. |
| Add a new test case for %define parse.error custom. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: add custom error message generation |
| When parse.error is custom, let users define a yyreport_syntax_error |
| function, and use it. |
| |
| * data/skeletons/bison.m4 (b4_error_verbose_if): Accept 'custom'. |
| * data/skeletons/yacc.c: Implement it. |
| * examples/c/calc/calc.y: Experiment with it. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: style: avoid macros |
| * data/skeletons/yacc.c (YYSYNTAX_ERROR): Remove, the call is now |
| sufficiently small so that we can afford to duplicate it. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: store token numbers, not token strings |
| That allows users to cover more cases, such as easily filtering some |
| arguments they don't want to expose. But they now have to call |
| yysymbol_name explicitly. |
| |
| * data/skeletons/yacc.c (yysyntax_error_arguments, yysyntax_error): |
| Deal with symbol numbers instead of symbol names. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: extract yyerror_message_arguments |
| Isolate a function that returns the list of expected and unexpected |
| tokens. It will be exposed to users willing to customize their error |
| messages. |
| |
| * data/skeletons/yacc.c (yyparse_context_t): New. |
| (yyerror_message_arguments): New, extracted from yysyntax_error. |
| |
| 2020-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: make AT_PARSE_PARAMS usable at the end of arguments |
| When not empty, AT_PARSE_PARAMS was guaranteed to end with a comma. |
| Remove the trailing comma, so that we can use AT_PARSE_PARAMS at the |
| end of the arguments, not only at the beginning. |
| |
| * tests/local.at: here. |
| Unfortunately, m4_append relies on the macro not being defined whereas |
| we would have preferred it to check for emptiness. So use |
| m4_define/m4_undefine instead of m4_pushdef/m4_popdef. |
| |
| 2020-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS pairs |
| * tests/glr-regression.at, tests/java.at, tests/javapush.at: |
| Close properly what is opened. |
| Do not nest. |
| |
| 2020-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| d, java: use traces more alike that of C |
| Same order, same places, same content. |
| |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java: here. |
| |
| 2020-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: report the stack at the same places as in C |
| Let's have C be the reference, and match it elsewhere. Maybe C is too |
| verbose and some adjustments are needed, but then that would be done |
| in another batch of patches. |
| |
| * data/skeletons/lalr1.cc: Print the stack once we popped after |
| YYERROR, and before emptying the stack at the end of parsing. |
| |
| 2020-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: display the stack in the same order as in C |
| Currently the C and C++ parse traces differ in the order in which the |
| stack is displayed: bottom up in C, top down in C++. Let's stick to |
| the C order. |
| |
| * data/skeletons/stack.hh (stack::iterator, stack::const_iterator) |
| (begin, end): Be forward, not backward. |
| |
| 2020-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid redundancy in the tests |
| * tests/local.at (m4_rpatsubst): New. |
| Use it to handle %parse-params. |
| * tests/calc.at: Use %parse-params with several arguments. |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: comment changes |
| In particular, import Adrian Vogelsgesang's comments about LAC from |
| lalr1.cc. |
| |
| * data/skeletons/yacc.c: here. |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: style: double-quote the argument of b4_percent_define_get |
| * data/skeletons/yacc.c: Here, for consistency. |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: introduce yysymbol_name |
| Provide the users with a public API to get the name of the tokens. A |
| thin wrapper around yytname. |
| |
| * data/skeletons/yacc.c (yysymbol_name): New. |
| Use it. |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: check on PPC64le, ARM64 and s390x |
| I was hoping it would help us catch warnings when char is |
| unsigned (see 78bb152a63f711af65364881c434af4c198e1ee0), but it does |
| not seem to help. It's a pity that the compiler is the same all over |
| the place, I would have preferred testing others. |
| |
| * .travis.yml: here. |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' into HEAD |
| * maint: |
| gnulib: update |
| lalr1.cc: avoid static_cast |
| glr.c: add missing cast |
| regen |
| package: bump copyrights to 2020 |
| gitignore: update |
| |
| 2020-01-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2020-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: avoid static_cast |
| Reported by donmac703. |
| Fixes https://github.com/akimd/bison/issues/20. |
| |
| * data/skeletons/lalr1.cc: here. |
| |
| 2020-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: add missing cast |
| Reported by psjo. |
| Fixes https://github.com/akimd/bison/issues/19. |
| |
| * data/skeletons/glr.c (yyprocessOneStack): Here. |
| |
| 2020-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: bump copyrights to 2020 |
| Run 'make update-copyright'. |
| |
| 2020-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| gitignore: update |
| |
| 2020-01-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2020-01-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: simplify use of YYDPRINTF |
| * data/skeletons/yacc.c (YYDPRINTF): Expand to no-op (instead of |
| nothing) when disabled. |
| Simplify callers. |
| |
| 2020-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: bump copyrights to 2020 |
| Run 'make update-copyright'. |
| |
| 2020-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| gitignore: update |
| |
| 2020-01-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: YYERROR_VERBOSE is no longer supported |
| * doc/bison.texi (Table of Symbols): Remove last reference to it. |
| * NEWS: Be clear about that. |
| |
| 2020-01-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: no longer support YYERROR_VERBOSE |
| * data/skeletons/glr.c: Rather, dispatch directly on parse.error's |
| value. |
| |
| 2020-01-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: no longer support YYERROR_VERBOSE |
| Supporting YYERROR_VERBOSE via cpp is a nuisance: m4 is in charge of |
| handling alternatives. When adding more options for %define |
| parse.error, supporting both CPP and M4 is too complex. Anyway, |
| YYERROR_VERBOSE was deprecated long ago. |
| |
| * data/skeletons/yacc.c: Use m4 only to handle verbose/simple error |
| messages. |
| |
| 2020-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: avoid negations |
| * data/skeletons/yacc.c (yyerrlab): here. |
| |
| 2019-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: clarify yyreportSyntaxError |
| See the previous commit. |
| |
| * data/skeletons/glr.c (yyreportSyntaxError): First compute the |
| arguments of the error message, _then_ th error message size. |
| |
| 2019-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: restructure and fix yysyntax_error |
| I would like to offer new ways to build the error message. As a first |
| step, let's simplify yysyntax_error whose first loop does two things |
| at the same time: (i) collect the tokens to be reported in the error |
| message, and (ii) accumulate their sizes and possibly return |
| "overflow". Let's pull (ii) in a second step. |
| |
| Then test 525 (regression.at:1193: parse.error=verbose overflow) |
| failed. This test checks that we correctly report "memory overflow" |
| when the error message is too large. However the test is mistaken: it |
| is triggered in a place where there are five (large) expected tokens, |
| so anyway we would not display them, so there is no (memory) overflow |
| here! Transform this test to (i) check that indeed there is no |
| overflow, and (ii) create syntax_error3 which does check the intended |
| behavior, but with four expected tokens. |
| |
| * data/skeletons/yacc.c (yysyntax_error): First compute the list of |
| arguments, then compute yysize. |
| * tests/regression.at (parse.error=verbose overflow): Enhance and fix. |
| |
| 2019-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: also check -Wchar-subscripts |
| GCC's -Wchar-subscripts may report issues on platforms where char is |
| unsigned. Unfortunately the current CI does not reproduce the |
| problem. But that would allow contributors to report issues if the |
| warning appears somewhere. |
| |
| See 139d0655947c87f90af08718618feaaca0e558d7. |
| Problem reported by Andy Fiddaman in: |
| https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html |
| |
| * configure.ac (warn_common): Add -Wchar-subscripts. |
| |
| 2019-12-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: do not specify the language |
| When we give travis the langugage, it overrides our envvars. Instead |
| of the MATRIX_EVAL trick, just stop specifying the language. |
| |
| 2019-12-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: remove ICC support, we can no longer use it |
| https://github.com/nemequ/icc-travis/issues/15 |
| |
| 2019-12-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clean up the description of YYDEBUG |
| * doc/bison.texi: Make it clearer that %define parse.trace is the |
| preferred options. |
| Fix a typo about api.prefix. |
| |
| 2019-12-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: avoid compiler warnings |
| 381. types.at:366: testing glr.cc api.value.type={double} ... |
| test.cc:207:57: error: "__clang_major__" is not defined, evaluates to 0 [-Werror=undef] |
| 207 | #if defined __APPLE__ && YY_CPLUSPLUS < 201103L && 4 <= __clang_major__ |
| | ^~~~~~~~~~~~~~~ |
| |
| * data/skeletons/glr.cc: Check __clang_major__ before using it. |
| |
| 2019-12-18 Paul Eggert <eggert@cs.ucla.edu> |
| |
| warnings: pacify ‘gcc -Wchar-subscripts’ in yacc.c |
| Problem reported by Andy Fiddaman in: |
| https://lists.gnu.org/r/bug-bison/2019-12/msg00021.html |
| * data/skeletons/yacc.c (yy_reduce_print, yy_lac, yysyntax_error) |
| (yyreturn): If I might be a char, write a[+I] instead of a[I], |
| so that ‘gcc -Wchar-subscripts’ does not complain. |
| |
| 2019-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: No output changes. |
| |
| 2019-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't fail if seq is no available |
| As is the case on Solaris. |
| Reported by Dennis Clarke. |
| https://lists.gnu.org/archive/html/bug-bison/2019-12/msg00011.html |
| |
| * examples/c/reccalc/reccalc.test: Skip if there is no seq. |
| |
| 2019-12-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-12-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.5 |
| * NEWS: Record release date. |
| |
| 2019-12-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: prepare for 3.5 |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: disable warnings from Clang on macOS |
| $ cat test.cc |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| ptrdiff_t half_max_capacity = PTRDIFF_MAX; |
| $ clang++-mp-9.0 -pedantic -std=c++98 /tmp/test.cc -c |
| /tmp/test.cc:4:31: warning: 'long long' is a C++11 extension [-Wc++11-long-long] |
| ptrdiff_t half_max_capacity = PTRDIFF_MAX; |
| ^ |
| /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:149:23: |
| note: expanded from macro 'PTRDIFF_MAX' |
| #define PTRDIFF_MAX INT64_MAX |
| ^ |
| /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdint.h:75:26: |
| note: expanded from macro 'INT64_MAX' |
| #define INT64_MAX 9223372036854775807LL |
| ^ |
| 1 warning generated. |
| |
| * data/skeletons/glr.cc: here. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: fix it in C++ |
| Another breakage revealed by vcsn. |
| |
| * data/skeletons/c++.m4 (yytranslate_): Do not hard code "yy" and |
| "parser", both can be changed by the user. |
| Actually, since we are in the parser itself, there's really no need to |
| qualify the type. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix comments for %code blocks |
| In a project of mine, vcsn, this commit fixes the following comments. |
| |
| --- /tmp/parse.hh 2019-12-08 15:51:24.792934703 +0100 |
| +++ lib/vcsn/rat/parse.hh 2019-12-08 16:00:59.137107503 +0100 |
| @@ -43,7 +43,7 @@ |
| |
| #ifndef YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED |
| # define YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED |
| -// // "%code requires" blocks. |
| +// "%code requires" blocks. |
| #line 20 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" |
| |
| #include <iostream> |
| @@ -1851,7 +1851,7 @@ |
| |
| -// // "%code provides" blocks. |
| +// "%code provides" blocks. |
| #line 60 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" |
| |
| #define YY_DECL_(Class) \ |
| |
| * data/skeletons/bison.m4 (b4_percent_code_get): Pass an expanded |
| string to b4_comment. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: pretend we are Bison 3.5 |
| * src/parse-gram.y: Accept we're Bison 3.5. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix spello |
| * data/skeletons/lalr1.cc: here. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| todo: update |
| * TODO: Schedule some features for 3.6. |
| Remove obsolete stuff. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.4.92 |
| * NEWS: Record release date. |
| |
| 2019-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: fixes |
| Reported by Paul Eggert. |
| https://lists.gnu.org/archive/html/bison-patches/2019-12/msg00014.html |
| |
| * NEWS: here. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: minor changes |
| * README-hacking.md: here. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clearly deprecate YYPRINT |
| * doc/bison.texi (Prologue): Stop using YYPRINT as an example. |
| (The YYPRINT Macro): Clearly show this macro is deprecated. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: here. |
| No change in content. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: obey parse.error |
| * data/skeletons/lalr1.d (yysyntax_error): Let the dispatch be |
| bison-time, not runtime. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: also prefer YY_ASSERT to YYASSERT |
| Like the other skeletons. |
| |
| * data/skeletons/variant.hh: here. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: obey the parse.assert %define variable |
| * data/skeletons/glr.c (YYASSERT): Rename as... |
| (YY_ASSERT): this, for consistency with yacc.c, and also to emphasize |
| the fact that this is not for the end user (YY_ prefix). |
| * tests/glr-regression.at: Define parse.assert. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: beware of short ranges for state numbers |
| Now that we use small integral types, possibly unsigned (e.g., |
| unsigned char), to store state numbers, using -1 to denote an empty |
| state (i.e., a state that stores no semantical value) is very |
| dangerous: it will be confused with state 255, which might be |
| non-empty. |
| |
| Rather than allocating a larger range of state numbers to keep the |
| empty-state apart, let's use the number of a state known to store no |
| value. The initial state, numbered 0, seems to fit perfectly the job. |
| |
| Reported by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html |
| |
| * data/skeletons/lalr1.cc (empty_state): Be 0. |
| |
| 2019-12-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: check it against api.token.constructor |
| * tests/scanner.at: here. |
| |
| 2019-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| warnings: enable -Wuseless-cast, and eliminate warnings |
| Prompted by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html. |
| |
| * configure.ac (warn_cxx): Add -Wuseless-cast. |
| * data/skeletons/c.m4 (b4_attribute_define): Define |
| YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END. |
| * data/skeletons/glr.c (YY_FPRINTF): New, replaces YYFPRINTF, wrapped |
| with YY_IGNORE_USELESS_CAST_BEGIN and YY_IGNORE_USELESS_CAST_END. |
| (YY_DPRINTF): Likewise. |
| * tests/actions.at: Remove useless cast. |
| * tests/headers.at: Adjust. |
| |
| 2019-12-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style changes |
| * src/complain.h, src/complain.c: Comment changes. |
| * src/scan-skel.l: Reduce scopes. |
| * data/skeletons/bison.m4: Factor diagnostic functions. |
| |
| 2019-12-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: style changes |
| * data/skeletons/glr.c (yysplitStack): Reduce scopes. |
| * tests/atlocal.in: Formatting changes. |
| |
| 2019-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: get rid of symbol_type::token () |
| It is not used. And its implementation was wrong when api.token.raw |
| was defined, as it was still mapping to the external token numbers, |
| instead of the internal ones. Besides it was provided only when |
| api.token.constructor is defined, yet always declared. |
| |
| * data/skeletons/c++.m4 (by_type::token): Remove, useless. |
| |
| 2019-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: remove useless cast about user_token_number_max_ |
| Reported by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html |
| |
| The cast is needed when yytranslate_'s argument type is token_type, |
| i.e., when api.token.constructor is defined. |
| |
| 373. types.at:138: testing lalr1.cc api.value.type=variant api.token.constructor ... |
| ======== Testing with C++ standard flags: '' |
| ../../tests/types.at:138: bison --color=no -fno-caret -o test.cc test.y |
| ../../tests/types.at:138: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o test test.cc $LIBS |
| stderr: |
| test.cc:966:16: error: result of comparison of constant 257 with |
| expression of type 'yy::parser::token_type' |
| (aka 'yy::parser::token::yytokentype') is always true |
| [-Werror,-Wtautological-constant-out-of-range-compare] |
| else if (t <= user_token_number_max_) |
| ~ ^ ~~~~~~~~~~~~~~~~~~~~~~ |
| 1 error generated. |
| |
| It is because it is expected that when api.token.constructor is |
| defined, only symbol constructors will be used, that yytranslate_ then |
| takes a token_type. But it is wrong: we still allow literal |
| characters in this case, as demonstrated by test 373 for instance. |
| |
| %define api.value.type variant |
| %define api.token.constructor |
| %token <std::pair<int, int>> '1' '2'; |
| [...] |
| static yy::parser::symbol_type yylex () |
| { |
| static char const input[] = "12"; |
| int res = input[toknum++]; |
| typedef yy::parser::symbol_type symbol; |
| if (res) |
| return symbol (res, std::make_pair (res - '0', res - '0' + 1)); |
| else |
| return symbol (res); |
| } |
| |
| So let yytranslate_ always take an int, which makes the cast truly |
| useless. |
| |
| * data/skeletons/c++.m4, data/skeletons/lalr1.cc (yytranslate_): here. |
| |
| 2019-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: clean a few issues wrt special tokens |
| The C++ implementation of LAC did not skip the $undefined token, |
| probably because it was not exposed. Expose it, and use clearer |
| names. |
| |
| * data/skeletons/c++.m4: Don't define undef_token_ in yytranslate_, |
| but... |
| * data/skeletons/lalr1.cc (yy_undef_token_): here. |
| Use a more precise type to define yy_undef_token_ and yy_error_token_. |
| Unfortunately we move from a compile-time value defined via an enum to |
| a static const member. Eventually we should make it constexpr. |
| Make LAC implementation more alike yacc.c's one. |
| |
| 2019-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| d, java: improve yytranslate and neighbors |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java: Don't expose |
| yyuser_token_number_max_ and yyundef_token_. Do as in C++: scope them |
| into yytranslate_, and only when api.token.raw is not defined. |
| (yyterror_): Rename as... |
| (yy_error_token_): this. |
| * data/skeletons/lalr1.d (token_number_type): New. |
| Use it. |
| Can't be done in the Java backend, as Java does not have type aliases. |
| |
| 2019-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| d, java: get rid of a useless table |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java (yytoken_number_): |
| Remove, useless. |
| Was used in ancient C skeletons to support YYPRINT, long obsoleted by |
| %printer. |
| |
| 2019-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++, d, java: remove yyerrcode |
| It is not used at all. We will remove it also from yacc.c, but |
| later (see TODO). |
| |
| * data/skeletons/lalr1.cc, data/skeletons/lalr1.d, |
| * data/skeletons/lalr1.java (yyerrcode_): |
| Remove. |
| |
| 2019-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: improve typing |
| * data/skeletons/lalr1.cc (yysyntax_error_): symbol_type::type_get |
| returns a symbol_number_type (which is indeed an int). |
| |
| 2019-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: remove useless cast about yyeof_ |
| Reported by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00016.html |
| |
| * data/skeletons/c++.m4 (b4_yytranslate_define): Don't use yyeof_ as |
| if it had two different types. |
| It is used once against the input argument, which is the value |
| returned by yylex, which is an "external token number", typically an |
| int. It is also used as output type, an "internal symbol number". |
| It turns out that in both cases we mean "0", but let's keep yyeof_ |
| only for the case "internal symbol number", i.e., _after_ conversion |
| by yytranslate. |
| This frees us from one cast. |
| |
| 2019-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: style change |
| * data/skeletons/glr.c (YYDPRINTF): Expand into an empty statement, |
| instead of nothing. |
| Simplify callers. |
| |
| 2019-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: remove useless casts |
| Reported by GCC's -Wuseless-cast. |
| |
| * data/skeletons/glr.c: Don't cast to yybool, it's useless. |
| |
| 2019-11-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c, glr.c: fix crash when reporting errors in consistent states |
| The current code for yysyntax_error for %define parse.error verbose is |
| fishy (given that YYEMPTY is -2, invalid argument for yytname[]): |
| |
| static int |
| yysyntax_error ([...]) |
| { |
| YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); |
| [...] |
| if (yytoken != YYEMPTY) |
| |
| A nearby comment reports |
| |
| The only way there can be no lookahead present (in yychar) is if |
| this state is a consistent state with a default action. Thus, |
| detecting the absence of a lookahead is sufficient to determine |
| that there is no unexpected or expected token to report. In that |
| case, just report a simple "syntax error". |
| |
| So it _is_ possible to call yysyntax_error with yytoken == YYEMPTY, |
| albeit quite difficult when meaning to, so virtually impossible by |
| accident (after all, there was never a bug report about this). |
| |
| I failed to produce a test case, but Joel E. Denny provided me with |
| one (added to the test suite below). The yacc.c skeleton fails on |
| this, and once fixed dies on a second problem. The glr.c skeleton was |
| also dying, but immediately of this second problem. |
| |
| Indeed we were not allocating space for the error message's final \0. |
| This was hidden by the fact that we only had error messages with at |
| least an unexpected token displayed, so with at least one "%s" in the |
| format string, whose size (2) was included (incorrectly) in the final |
| size of the message (where the %s have been replaced by the actual |
| content). |
| |
| * data/skeletons/glr.c, data/skeletons/yacc.c (yysyntax_error): |
| Do not invoke yytnamerr on YYEMPTY. |
| Clarify the computation of the length of the _final_ error message, |
| with the NUL terminator but without the '%s's. |
| * tests/conflicts.at (Syntax error in consistent error state): |
| New, contributed by Joel E. Denny. |
| |
| 2019-11-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: avoid creating files whose name collide with standard headers |
| Having a file named "exception" is risky: the compiler might use that |
| file in #include. |
| Reported by 马俊 <majun123@whu.edu.cn>. |
| |
| * tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): Generate |
| 'exceptions', not 'exception'. |
| |
| 2019-11-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: more details about the test suite |
| * README-hacking.md: here. |
| |
| 2019-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.4.91 |
| * NEWS: Record release date. |
| |
| 2019-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: pacify syntax-check |
| * cfg.mk: No need to translate *.md files. |
| * data/skeletons/glr.c, data/skeletons/yacc.c: Fix space issues. |
| |
| 2019-11-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-11-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: don't promote dangling aliases |
| String literals as tokens serve two distinct purposes: freeing from |
| having to implement the keyword matching in the scanner, and improving |
| error messages. Most of the time both can be achieved at the same |
| time, but on occasions, it does not work so well. |
| |
| We promote their use for error messages. We will also still support |
| the former case, but it is _not_ the recommended approach. |
| |
| * doc/bison.texi (Tokens from Literals): Clearly state that we don't |
| recommend looking up the token types in the list of token names. |
| |
| 2019-11-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: complain about undeclared string tokens |
| String literals, which allow for better error messages, are (too) |
| liberally accepted by Bison, which might result in silent errors. For |
| instance |
| |
| %type <exVal> cond "condition" |
| |
| does not define “condition” as a string alias to 'cond' (nonterminal |
| symbols do not have string aliases). It is rather equivalent to |
| |
| %nterm <exVal> cond |
| %token <exVal> "condition" |
| |
| i.e., it gives the type 'exVal' to the "condition" token, which was |
| clearly not the intention. |
| |
| Introduce -Wdangling-alias to catch this. |
| |
| * src/complain.h, src/complain.c: Add support for -Wdangling-alias. |
| (argmatch_warning_args): Sort. |
| * src/symtab.c (symbol_check_defined): Complain about dangling |
| aliases. |
| * doc/bison.texi: Document it. |
| * tests/input.at (Dangling aliases): New test. |
| |
| 2019-11-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: yacc reserves %type to nonterminals |
| On |
| |
| %token TOKEN1 |
| %type <ival> TOKEN1 TOKEN2 't' |
| %token TOKEN2 |
| %% |
| expr: |
| |
| bison -Wyacc gives |
| |
| input.y:2.15-20: warning: POSIX yacc reserves %type to nonterminals [-Wyacc] |
| 2 | %type <ival> TOKEN1 TOKEN2 't' |
| | ^~~~~~ |
| input.y:2.29-31: warning: POSIX yacc reserves %type to nonterminals [-Wyacc] |
| 2 | %type <ival> TOKEN1 TOKEN2 't' |
| | ^~~ |
| input.y:2.22-27: warning: POSIX yacc reserves %type to nonterminals [-Wyacc] |
| 2 | %type <ival> TOKEN1 TOKEN2 't' |
| | ^~~~~~ |
| |
| The messages appear to be out of order, but they are emitted when the |
| error is found. |
| |
| * src/symtab.h (symbol_class): Add pct_type_sym, used to denote |
| symbols appearing in %type. |
| * src/symtab.c (complain_pct_type_on_token): New. |
| (symbol_class_set): Check that %type is not applied to tokens. |
| (symbol_check_defined): pct_type_sym also means undefined. |
| * src/parse-gram.y (symbol_decl.1): Set the class to pct_type_sym. |
| * src/reader.c (grammar_current_rule_begin): pct_type_sym also means |
| undefined. |
| * tests/input.at (Yacc's %type): New. |
| |
| 2019-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: promote %nterm over %type |
| As an extension to POSIX Yacc, Bison's %type accepts tokens. |
| Unfortunately with string literals as implicit tokens, this is |
| misleading, and led some users to write |
| |
| %type <exVal> cond "condition" |
| |
| believing that "condition" would be associated to the 'cond' |
| nonterminal (see https://github.com/apache/httpd/pull/72). |
| |
| * doc/bison.texi: Promote %nterm rather than %type to declare the type |
| of nonterminals. |
| |
| 2019-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: No visible changes. |
| |
| 2019-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: work around warnings when Flex C output is compiled in C++ |
| * doc/bison.texi (calc++/scanner.ll): here. |
| While at it, clarify clang vs. warnings. |
| |
| 2019-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: be robust to old Perl versions on Cygwin |
| Reported by Denis Excoffier. |
| https://lists.gnu.org/archive/html/bug-bison/2019-11/msg00008.html. |
| |
| * tests/output.at: Be sure to remove back up files. |
| |
| 2019-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-11-12 kaneko y <spiketeika@gmail.com> |
| |
| gram.c: Fix condition of aver |
| * src/gram.c (grammar_dump): Fix condition of aver. |
| What we want to check is that rhs is followed by its rule. |
| |
| 2019-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify build instructions |
| * README: A few fixes. |
| Explain how to install color support. |
| * README-hacking: Rename as... |
| * README-hacking.md: this, and convert to Markdown. |
| Improve typography. |
| Improve explanations about update-test. |
| |
| 2019-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-11-11 Yuichiro Kaneko <spiketeika@gmail.com> |
| |
| gram.c: also print terminals in grammar_dump |
| * src/gram.c (grammar_dump): Print terminals likewise non terminals. |
| * tests/sets.at (Reduced Grammar): Update test case to catch up the |
| change and add a test case where prec and assoc are used. |
| |
| 2019-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: work around Texinfo 6.7 bug |
| When @code is used in a @deftype... definition, it issues quotes. |
| Remove them. |
| See https://lists.gnu.org/archive/html/help-texinfo/2019-11/msg00004.html. |
| |
| * doc/local.mk: here. |
| |
| 2019-11-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: Wrap lines. |
| No semantical difference. |
| |
| 2019-11-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use upper case for tokens |
| * doc/bison.texi: here. |
| |
| 2019-11-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: type-face fixes |
| * doc/bison.texi: Use @code for types in function definitions. |
| |
| 2019-11-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: expose the type used to store line and column numbers |
| * data/skeletons/location.cc (position::counter_type) |
| (location::counter_type): New. |
| Use them. |
| * doc/bison.texi (C++ position, C++ location): Adjust. |
| |
| 2019-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix comment and adjust to locale names on GNU/Linux |
| Reported by Denis Excoffier. |
| |
| * tests/diagnostics.at: here. |
| |
| 2019-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: really check complaints from m4 |
| * tests/diagnostics.at (Locations from M4, Tabulations and multibyte |
| characters from M4): These tests are actually checking a message |
| coming from C, not from M4. Replace with... |
| (Complaints from M4): This. |
| |
| 2019-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: simplify prologue |
| * tests/testsuite.h: We no longer load gnulib in the tests. |
| |
| 2019-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: add missing translation |
| * src/muscle-tab.c (muscle_percent_define_check_kind): Here. |
| |
| 2019-11-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix old cast warnings |
| We still have a few old C casts in lalr1.cc, let's get rid of them. |
| Reported by Frank Heckenbach. |
| |
| Actually, let's monitor all our casts using easy to grep macros. |
| Let's use these macros to use the C++ standard casts when we are in |
| C++. |
| |
| * data/skeletons/c.m4 (b4_cast_define): New. |
| * data/skeletons/glr.c, data/skeletons/glr.cc, |
| * data/skeletons/lalr1.cc, data/skeletons/stack.hh, |
| * data/skeletons/yacc.c: |
| Use it and/or its casts. |
| |
| * tests/actions.at, tests/cxx-type.at, |
| * tests/glr-regression.at, tests/headers.at, tests/torture.at, |
| * tests/types.at: |
| Use YY_CAST instead of C casts. |
| |
| * configure.ac (warn_cxx): Add -Wold-style-cast. |
| * doc/bison.texi: Disable it. |
| |
| 2019-11-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: be robust to tput errors |
| Reported by Denis Excoffier. |
| |
| * tests/bison.in: here. |
| |
| 2019-11-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: update ignores |
| I don't understand what happened in |
| 10acc148bb90fac8a52a5d35f2bd18bd824c1639. |
| |
| 2019-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.4.90 |
| * NEWS: Record release date. |
| |
| 2019-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: finish propagating the unsigned->signed conversion in locations |
| * data/skeletons/location.cc: Remove the u (for unsigned) suffix from |
| the initial line and column. |
| * NEWS: AFAICT, only C++ backends have their location types changed. |
| |
| 2019-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix cpp indentation |
| Reported by syntax-check. |
| |
| * src/system.h: here. |
| |
| 2019-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: glr.c: comment changes |
| * data/skeletons/glr.c: here. |
| |
| 2019-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: pass -O1 to GCC8 with sanitizers |
| This build never finishes in the 50min credit given by Travis. See if |
| with optimizations it works better. |
| |
| * .travis.yml: here. |
| |
| 2019-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: reduce the "scope" of global variables |
| We have too many global variables, adding structure would help. For a |
| start, let's hide some of the variables closer to their usage. |
| |
| * src/getargs.c, src/files.h (current_file): Move to... |
| * src/scan-gram.c: here. |
| * src/scan-gram.h (gram_in, gram__flex_debug): Remove, make them |
| private to the scanner. |
| * src/reader.h, src/reader.c (reader): Take a grammar file as argument. |
| Move the handling of scanner variables to... |
| * src/scan-gram.l (gram_scanner_open, gram_scanner_close): here. |
| (gram_scanner_initialize): Remove, replaced by gram_scanner_open. |
| * src/main.c: Adjust. |
| |
| 2019-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: use grammar_file instead of current_file |
| * src/parse-gram (%initial-action): here. |
| (handle_skeleton): Don't depend on the current file name to look for |
| "local" skeletons (subject to changes coming from "#lines"): depend |
| only on the initial file name, the one given on the command line. |
| |
| 2019-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: use grammar_file instead of current_file |
| Currently there are two globals denoting the input file: grammar_file |
| is the one from the command line, and current_file which might change |
| because of #line. Use only the former. |
| |
| * src/complain.c (error_message): here. |
| * tests/diagnostics.at: Adjust. |
| |
| 2019-10-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: let symtab deal with the symbols |
| * src/reader.c (reader): Move the setting up of the builtin symbols to... |
| * src/symtab.c (symbols_new): here. |
| |
| 2019-10-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove incorrect comment |
| Reported by Paul Eggert. |
| |
| * src/system.h: here. |
| |
| 2019-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: fix previous commit: printing of state numbers |
| * data/skeletons/lalr1.cc: Printing a char prints... a char. |
| Print ints instead. |
| |
| 2019-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: use computed state types |
| This skeleton uses a single stack of state structures, so it is less |
| likely to benefit from a stack size reduction than yacc.c (which uses |
| several stacks: state number, value and location). But it will reduce |
| the size of the LAC stack. |
| |
| This skeleton was already using int for state numbers, so, contrary to |
| yacc.c, this brings nothing for large automata. |
| |
| Overall, it is still nicer to make the skeletons alike. |
| |
| * data/skeletons/lalr1.cc (state_type): Here. |
| |
| 2019-10-24 kaneko y <spiketeika@gmail.com> |
| |
| README: Fix a typo |
| * README: Fix a typo. Git command name is submodule. |
| |
| 2019-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix missing dependencies |
| Reported by Thomas Petazzoni. |
| https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00000.html |
| |
| * examples/c/reccalc/local.mk: Complete dependencies, including for |
| earlier versions of Automake (for sake of our CI, on top of Ubuntu |
| Xenial/Bionic, which feature only Automake 1.15). |
| (%D%/scan.c %D%/scan.h): Upgrade to the full version provided in |
| Automake's documentation. |
| |
| 2019-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: simplify location handling |
| Locations start at line 1. Don't accept line 0. |
| |
| * src/location.c (location_print): Don't print locations with line 0. |
| (location_caret): Simplify. |
| |
| 2019-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: reenable -Wtype-limits |
| See https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html |
| to https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00073.html. |
| |
| Paul Eggert's changes in gnulib do fix the issue for modern GCCs (7, |
| 8, 9) on macOS. Unfortunately these warnings are back on the |
| CI (GNU/Linux) with GCC 4.6, 4.7, (not 4.8) and 4.9. |
| |
| Disable the warning locally. |
| |
| * configure.ac (warn_common, warn_tests): Remove -Wtype-limits. |
| * src/system.h (IGNORE_TYPE_LIMITS_BEGIN, IGNORE_TYPE_LIMITS_END): New. |
| * src/InadequacyList.c, src/parse-gram.c, src/parse-gram.y, |
| * src/symtab.c: Use it. |
| |
| 2019-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: remove dmalloc support |
| Today sanitizers are a better alternative. |
| |
| * m4/dmalloc.m4: Remove. |
| * configure.ac, src/system.h: Adjust. |
| |
| 2019-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| gitignore: update |
| |
| 2019-10-23 Paul Eggert <eggert@cs.ucla.edu> |
| |
| build: update gnulib submodule to latest |
| |
| 2019-10-23 Yuichiro Kaneko <spiketeika@gmail.com> |
| |
| style: update comment in reader.c |
| rrhs and rlhs were removed by b2ed6e5826e772162719db595446b2c58e4ac5d6. |
| |
| * src/reader.c (packgram): Update comment. |
| |
| 2019-10-22 kaneko y <spiketeika@gmail.com> |
| |
| yacc.c: fix a typo |
| * data/skeletons/yacc.c (yysetstate): fix comment. |
| |
| 2019-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: pacify syntax-check |
| * doc/.gitignore, src/complain.c, src/getargs.c, |
| * src/output.c: here. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| main: also free memory on errors |
| * src/derives.c (derives_free): Beware of NULL. |
| * src/main.c (main): Let the 'finish' label include memory release. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| To get bitset_free accept NULL. See |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-10/msg00054.html |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scope in derives |
| * src/derives.c: here. |
| And prefer prefix to postfix increment. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: disable -Wtautological-constant-out-of-range-compare |
| Also see e31f92495ce14a5d924b148c8ea1470003cc47c1 and |
| https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html |
| |
| * configure.ac (warn_common): Disable |
| -Wtautological-constant-out-of-range-compare. |
| (warn_tests): Restore it. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: formatting changes |
| * .travis.yml: Use the single line form of lists, when reduced to a |
| singletons. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: rename jobs |
| * .travis.yml (compile, test): Rename as... |
| (dist, check): these, which are more traditional for GNU projects. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: update README |
| * README: Be clearer that README-hacking _must_ be read. |
| Convert to Markdown. |
| |
| 2019-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| bootstrap: relieve developpers from Gettext version mismatch issues |
| * .travis.yml (compile): Move the workaround from here... |
| * bootstrap.conf (bootstrap_epilogue): to there. |
| |
| 2019-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of GCC9 warnings in push mode |
| This is really weird: GCC points to the LHS of the assignment... |
| |
| 260. headers.at:184: testing Sane headers: api.pure api.push-pull=both ... |
| tests/headers.at:184: COLUMNS=1000; export COLUMNS; bison --color=no -fno-caret -d -o input.c input.y |
| tests/headers.at:184: $CC $CFLAGS $CPPFLAGS -c -o input.o input.c |
| stderr: |
| input.c: In function 'yyparse': |
| input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| 1276 | yylval = *yypushed_val; |
| | ~~~~~~~^~~~~~~~~~~~~~~ |
| input.c: In function 'yypull_parse': |
| input.c:1276:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| 1276 | yylval = *yypushed_val; |
| | ~~~~~~~^~~~~~~~~~~~~~~ |
| cc1: all warnings being treated as errors |
| stdout: |
| tests/headers.at:184: exit code was 1, expected 0 |
| |
| See also d87c8ac79ab844d6a7a4f5103dcf7a842d18b611 |
| and 9645a2b20ee7cbfa8bb4ac2237f87d598afe349c. |
| |
| * tests/headers.at (Several parsers, Several parsers): Disable these |
| warnings when in push parser. |
| |
| 2019-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: try GCC9 and Clang9 |
| The logs show: |
| |
| Disallowing sources: llvm-toolchain-bionic-8, ubuntu-toolchain-r-test |
| To add unlisted APT sources, follow instructions in |
| https://docs.travis-ci.com/user/installing-dependencies#Installing-Packages-with-the-APT-Addon |
| |
| * .travis.yml: Remove a few apt sources which are ignored in |
| Bionic (e.g., see |
| https://github.com/travis-ci/apt-source-safelist/issues/410). |
| Where needed, use sources/sourceline instead. |
| Also, don't use -DNDEBUG with older builds. |
| |
| 2019-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: clarify version checking |
| * src/parse-gram.y: Use the same conventions for gnulib as elsewhere: |
| <header.h>. |
| (str_to_version): New. |
| (handle_require): Use it. |
| Prefer < to >. |
| |
| 2019-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: disable -Wtype-limits, except in the test suite |
| The current implementation of lib/intprops.h results in "unsigned < 0" |
| comparisons, which triggers warnings. See |
| |
| https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html |
| |
| * configure.ac (warn_common): Disable -Wtype-limits. |
| (warn_tests): Restore it. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| c++: port to Sun C++ 5.12 |
| The documentation for Oracle Solaris Studio 12.3 (Sun C++ 5.12 |
| 2011/11/16) says it supports C++03. This compiler rejects the |
| location.cc use of std::max for some reason; I don’t know why |
| since I don’t use C++ as a rule. The simplest workaround is to |
| open-code ‘max’. |
| * data/skeletons/location.cc (add_): |
| Do max by hand rather than relying on std::max. |
| Don’t include <algorithm.h>; no longer needed. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| regen |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| tests: port to Solaris 10 grep |
| * tests/scanner.at (Token numbers: $1): Use $EGREP, not grep -E. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| tests: port to Solaris 10 sed |
| As documented in the Autoconf manual, Solaris 10 sed rejects |
| script labels contianing more than 7 characters. POSIX requires |
| support for at least 8 characters, but we might as well be portable |
| to Solaris 10 which is still supported. |
| * tests/local.at (AT_SETS_CHECK): Use only the first 7 characters |
| in sed labels. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| bison: check for int overflow in token numbers |
| * src/symtab.c: Include intprops.h |
| (symbol_user_token_number_set): Don’t allow user_token_number == |
| INT_MAX because too much other code adds 1 to the user token number. |
| (symbols_token_translations_init): Complain on integer overflow |
| instead of indulging in undefined behavior. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| bison: check for int overflow when scanning |
| * src/scan-gram.l: Include errno.h, for errno. |
| (scan_integer, handle_syncline): Check for integer overflow. |
| * tests/input.at (too-large.y): Adjust to match new diagnostics. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| bison: check version numbers more carefully |
| * src/parse-gram.y: Include intprops.h. |
| (handle_require): Don’t indulge in undefined behavior if the major |
| or minor number is out of range. Instead, check that the |
| resulting value is nonnegative, fits in int, and that the minor |
| number is less than 100. Also, check that a number was parsed. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| c: port YY_ATTRIBUTE_UNUSED to Sun C 5.12 |
| Sun C 5.12 defines __SUNPRO_C to 0x5120 but diagnoses |
| ‘__attribute__ ((__unused__))’. Change the ifdefs to use |
| the same method as Gnulib in this area. |
| * data/skeletons/c.m4 (YY_ATTRIBUTE): Remove, since |
| not all attributes were added in the same compiler version. |
| (YY_ATTRIBUTE_PURE, YY_ATTRIBUTE_UNUSED): |
| Use specific GCC version for each attribute. |
| Pay no attention to __SUNPRO_C. |
| * tests/headers.at (Several parsers): Tighten tests accordingly. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| c: improve port of stdint.h usage to pre-C99 |
| Oracle Solaris Studio 12.3 (Sun C 5.12 2011/11/16) by default does |
| not conform to C99; it defines __STDC_VERSION__ to be 199409L, so |
| the Bison code does not include <stdint.h> (not required by C89 |
| amendment 1) even though this compiler does have <stdint.h>. On |
| this platform <limits.h> defines INT_LEAST8_MAX (POSIX allows |
| this) so the skeleton got confused and thought that <stdint.h> had |
| been included even though it wasn’t. |
| * data/skeletons/c.m4 (b4_c99_int_type_define) [!__PTRDIFF_MAX__]: |
| Always include <limits.h>. |
| (YY_STDINT_H): Define when <stdint.h> was included. |
| All uses of expressions like ‘defined INT_LEAST8_MAX’ changed to |
| ‘defined YY_STDINT_H’, since Sun C 5.12 <limits.h> defines macros |
| like INT_LEAST8_MAX but does not declare types like int_least8_t. |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| gnulib:update |
| |
| 2019-10-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| autoconf:update |
| |
| 2019-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: more updates |
| |
| 2019-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: update |
| |
| 2019-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: rename types for states |
| * data/skeletons/yacc.c (yy_state_num): Rename as... |
| (yy_state_t): this. |
| (yy_state_fast_t): New. |
| Use it. |
| |
| 2019-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: style changes |
| * data/skeletons/glr.c (yytnamerr): here. |
| (yyprocessOneStack): Initialize variables. |
| |
| 2019-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: style changes |
| * data/skeletons/yacc.c: Move call to lac discard to clarify the |
| shifting of the token. |
| Like in lalr1.cc. |
| |
| 2019-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: avoid $(...) |
| Reported by Paul Eggert. |
| |
| * tests/local.at (AT_DATA_NO_FINAL_EOL): here. |
| |
| 2019-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: use a portable 'truncate' implementation |
| Suggested by Paul Eggert. |
| https://lists.gnu.org/archive/html/bison-patches/2019-10/msg00044.html |
| |
| * tests/local.at (AT_DATA_NO_FINAL_EOL): Use dd instead of perl. |
| |
| 2019-10-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: factor the generation of files without the final eol |
| AFAICT Autotest 2.69 still does not support AT_DATA without the final |
| eol. |
| |
| * tests/local.at (AT_DATA_NO_FINAL_EOL): New. |
| * tests/input.at: Use it. |
| |
| 2019-10-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: refactor the handling of Perl |
| Let's make a difference between places where Perl is required for the |
| test (AT_PERL_REQUIRE), and the places where it's used to run the |
| test, but it's not not to run the test (AT_PERL_CHECK). |
| |
| * tests/local.at (AT_REQUIRE): New. |
| (AT_PERL_CHECK, AT_PERL_REQUIRE): New. |
| Use them where appropriate. |
| |
| * tests/local.mk ($(TESTSUITE)): Beware not to start the line with |
| '-pi' if Perl is empty, as Make understands this as "it's ok to fail". |
| Which it is not. |
| |
| 2019-10-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: comment changes |
| * data/skeletons/lalr1.d: Here. |
| |
| 2019-10-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| i18n: don't push too hard for '…' |
| Suggested by Paul Eggert. |
| |
| * src/location.c (ellipsis): Clarify comment for translators. |
| |
| 2019-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: display line numbers in traces |
| Suggested by Lars Maier. |
| |
| * data/skeletons/glr.c: Also display rule locations when rules are |
| deferred, and rejected. |
| |
| 2019-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: be really robust to Perl missing |
| My previous tests (with ./configure PERL=false) have been fooled by |
| configure, that managed to find perl anyway. This time, I ran this on |
| a Fedora in Docker, without Perl. |
| |
| * tests/calc.at, tests/diagnostics.at, tests/headers.at, |
| * tests/input.at, tests/local.at, tests/named-refs.at, |
| * tests/output.at, tests/regression.at, tests/skeletons.at, |
| * tests/synclines.at, tests/torture.at: Don't require Perl. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| configure: perl is not required |
| But it's used in various places, including in some tests. |
| |
| * configure.ac: here. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: prefer "…" to "..." if the locale supports it |
| * src/location.c (ellipsis, ellipsize): New. |
| Use them. |
| |
| 2019-10-10 Paul Eggert <eggert@cs.ucla.edu> |
| |
| c: improve patch for UCHAR_MAX etc. problem |
| * data/skeletons/c.m4 (b4_c99_int_type_define): Reorder to put the |
| signed types first, since they’re simpler and this keeps similar |
| code closer. For signed types, don’t bother checking whether the |
| type promotes to int since the type must be signed anyway. For |
| unsigned types, protect a test like ‘UCHAR_MAX <= INT_MAX’ with |
| ‘!defined __UINT_LEAST8_MAX__’, as otherwise the logic is wrong |
| for oddball platforms; and once we do that, there should no need |
| for ‘defined INT_MAX’ so remove that. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: do not depend on config.h |
| Currently we face test suite failures in different environments, |
| because of a conflict between the definitions of isnan by gnulib, and |
| by the C++ library: |
| |
| 262. headers.at:186: testing Sane headers: %locations %debug c++ ... |
| ./headers.at:186: COLUMNS=1000; export COLUMNS; bison --color=no -fno-caret -d -o input.cc input.y |
| ./headers.at:186: $CXX $CXXFLAGS $CPPFLAGS -c -o input.o input.cc |
| stderr: |
| In file included from /usr/include/c++/4.8.2/cmath:44:0, |
| from /usr/include/c++/4.8.2/random:38, |
| from /usr/include/c++/4.8.2/bits/stl_algo.h:65, |
| from /usr/include/c++/4.8.2/algorithm:62, |
| from location.hh:41, |
| from input.hh:90, |
| from input.cc:50: |
| /u/cs/fac/eggert/src/gnu/bison/lib/math.h: In function 'bool isnan(double)': |
| /u/cs/fac/eggert/src/gnu/bison/lib/math.h:2849:1: error: new declaration 'bool isnan(double)' |
| _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool) |
| ^ |
| In file included from /usr/include/features.h:375:0, |
| from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/os_defines.h:39, |
| from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h:2097, |
| from /usr/include/c++/4.8.2/cstdlib:41, |
| from input.hh:48, |
| from input.cc:50: |
| /usr/include/bits/mathcalls.h:235:1: error: ambiguates old declaration 'int isnan(double)' |
| __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__)); |
| ^ |
| |
| There might be something to do in gnulib about this, but I believe |
| that gnulib should not be used in the test suite in the first place. |
| |
| The test suite should work with other compilers than the one used to |
| compile the package. For a start, Bison sources are more |
| demanding (C99) than the generated parsers. Last time I tried, tcc |
| for example, was not able to compile Bison, yet our generated parsers |
| should compile cleanly with it. |
| |
| Besides the problem at hand is with the C++ compiler, with is not the |
| one used to set up gnulib at configuration-time (config.h is mainly |
| built from probing the C compiler). |
| |
| We should really not depend on gnulib in tests. |
| |
| This was introduced in 2001 to check whether including |
| stdlib.h/string.h is safe thanks to STDC_HEADERS |
| (2ce1014469742b5c6618daf8506b69e38787c7d5). Today, we assume at least |
| a C90 compiler, it should be safe enough. |
| |
| * tests/local.at, tests/testsuite.h: Do not include config.h. |
| * tests/atlocal.in (conftest.cc): Likewise. |
| (CPPFLAGS): Do not expose lib/, as because of this we might picked up |
| gnulib replacement headers for system headers. |
| |
| * tests/input.at: Use int instead of ptrdiff_t, for easier portability |
| (some machine on the CI did not find ptrdiff_t). |
| * tests/c++.at: Add missing include for getchar. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| * doc/bison.texi: Remove the index about yyoutput, it is no longer |
| documented. |
| Spell check. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style changes |
| * tests/actions.at: Prefer printf to fprintf. |
| Prefer yyo to yyoutput in %printer. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: formatting changes |
| * tests/actions.at, tests/local.at: here. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: add missing includes |
| * tests/actions.at, tests/c++.at, tests/headers.at, |
| * tests/regression.at: here. |
| |
| 2019-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: don't assume that UCHAR_MAX, etc. are defined |
| A number of portability issues with GCC 4.6 .. 4.9 (inclusive): |
| |
| input.c:184:7: error: "UCHAR_MAX" is not defined [-Werror=undef] |
| #elif UCHAR_MAX <= INT_MAX |
| ^ |
| input.c:184:20: error: "INT_MAX" is not defined [-Werror=undef] |
| #elif UCHAR_MAX <= INT_MAX |
| ^ |
| input.c:202:7: error: "USHRT_MAX" is not defined [-Werror=undef] |
| #elif USHRT_MAX <= INT_MAX |
| ^ |
| input.c:202:20: error: "INT_MAX" is not defined [-Werror=undef] |
| #elif USHRT_MAX <= INT_MAX |
| ^ |
| |
| * data/skeletons/c.m4 (b4_c99_int_type_define): Don't assume they are |
| defined. |
| |
| 2019-10-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| configure: don't require Flex |
| Flex should not be required to build Bison or run the test suite (of |
| course it is needed for maintaining Bison). Yet the Automake |
| conditional FLEX_WORKS does not work. |
| |
| * m4/flex.m4 (_AC_PROG_LEX_YYTEXT_DECL): Since this is called |
| conditionally, don't define LEX_IS_FLEX here, but rather... |
| (AC_PROG_LEX): here. |
| * configure.ac: Be more cautious about possibly undefined variables. |
| |
| 2019-10-07 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Move the integer-type selection into c.m4 |
| That way, glr.c can use it too. |
| * data/skeletons/c.m4 (b4_int_type): |
| Do not special-case ‘char’; it’s not worth the trouble, |
| as clang complains about char subscripts. |
| (b4_c99_int_type, b4_c99_int_type_define): New macros, |
| taken from yacc.c. |
| * data/skeletons/glr.c: Use b4_int_type_define. |
| * data/skeletons/yacc.c (b4_int_type): Remove, since there’s |
| no longer any need to redefine it. |
| Use b4_c99_int_type_define rather than its body. |
| |
| 2019-10-07 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Use “least” types for integers in Yacc tables |
| This changes the Yacc skeleton to use “least” integer types to |
| keep tables smaller on some platforms, which should lessen cache |
| pressure. Since Bison uses the Yacc skeleton, it follows suit. |
| * data/skeletons/yacc.c: Include limits.h and stdint.h if this |
| seems to be needed. |
| (yytype_uint8, yytype_int8, yytype_uint16, yytype_int16): |
| If available, use GCC predefined macros __INT_MAX__ etc. to select |
| a “least” type, as this avoids namespace hassles. Otherwise, if |
| available fall back on selecting a “least” type via the C99 macros |
| INT_MAX, INT_LEAST8_MAX, etc. Otherwise, fall further back on one of |
| the builtin C99 types signed char, short, and int. Make sure that |
| any selected type promotes to int. Ignore any macros YYTYPE_INT16, |
| YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8 defined by the user. |
| (ptrdiff_t, PTRDIFF_MAX): Simplify in the light of the above. |
| (yytype_uint8, yytype_uint16): Do not assume that unsigned char |
| and unsigned short promote to int, as this isn’t true on some |
| platforms (e.g., TI TMS320C55x). |
| * src/parse-gram.y (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16) |
| (YYTYPE_UINT8): Remove, as these are no longer effective. |
| |
| 2019-10-06 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Port better to C++ platforms |
| * data/skeletons/yacc.c (YYPTRDIFF_T, YYPTRDIFF_MAXIMUM): |
| Default to long, not int. |
| (yy_lac_stack_realloc, yy_lac, yytnamerr, yyparse): |
| Avoid casts to YYPTRDIFF_T that were masking the problem. |
| |
| 2019-10-06 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Work around GCC 4.8 false alarms without casts |
| * data/skeletons/yacc.c (yyparse): |
| Initialize yyes_capacity with a signed expression. |
| * tests/local.at (AT_YYLEX_DEFINE(c)): |
| Use enum to avoid cast. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: make recheck |
| * tests/local.mk (recheck): New. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: also show suggested %empty |
| * src/reader.c (grammar_rule_check_and_complete): Suggest to add %empty. |
| * tests/actions.at, tests/diagnostics.at: Adjust expectations. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: sort symbols per location |
| Because the checking of the grammar is made by phases after the whole |
| grammar was read, we sometimes have diagnostics that look weird. In |
| some case, within one type of checking, the entities are not checked |
| in the order in which they appear in the file. For instance, checking |
| symbols is done on the list of symbols sorted by tag: |
| |
| foo.y:1.20-22: warning: symbol BAR is used, but is not defined as a token and has no rules [-Wother] |
| 1 | %destructor {} QUX BAR |
| | ^~~ |
| foo.y:1.16-18: warning: symbol QUX is used, but is not defined as a token and has no rules [-Wother] |
| 1 | %destructor {} QUX BAR |
| | ^~~ |
| |
| Let's sort them by location instead: |
| |
| foo.y:1.16-18: warning: symbol 'QUX' is used, but is not defined as a token and has no rules [-Wother] |
| 1 | %destructor {} QUX BAR |
| | ^~~ |
| foo.y:1.20-22: warning: symbol 'BAR' is used, but is not defined as a token and has no rules [-Wother] |
| 1 | %destructor {} QUX BAR |
| | ^~~ |
| |
| * src/location.h (location_cmp): Be robust to empty file names. |
| * src/symtab.c (symbol_cmp): Sort by location. |
| * tests/input.at: Adjust expectations. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: suggest fixes for undeclared symbols |
| From |
| |
| input.y:1.17-19: warning: symbol baz is used, but is not defined as a token and has no rules [-Wother] |
| 1 | %printer {} foo baz |
| | ^~~ |
| |
| to |
| |
| input.y:1.17-19: warning: symbol 'baz' is used, but is not defined as a token and has no rules; did you mean 'bar'? [-Wother] |
| 1 | %printer {} foo baz |
| | ^~~ |
| | bar |
| |
| * bootstrap.conf: We need fstrcmp. |
| * src/symtab.c (symbol_from_uniqstr_fuzzy): New. |
| (complain_symbol_undeclared): Use it. |
| * tests/diagnostics.at (Suggestions): New. |
| * data/bison-default.css (insertion): Rename as... |
| (fixit-insert): this, as this is what GCC uses. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: isolate complain_symbol_undeclared |
| * src/symtab.c (complain_symbol_undeclared): New. |
| Use it. |
| Use quote on the guilty symbol (like GCC does, and we also do |
| elsewhere). |
| * tests/input.at: Adjust. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: simplify the handling of symbol and semantic_type tables |
| Both are stored in a hash, and back in the days, we used to iterate |
| over these tables using hash_do_for_each. However, the order of |
| traversal was not deterministic, which was a nuisance for |
| deterministic output (and therefore also a problem for tests). So at |
| some point (83b60c97ee1f98bb1f15ffa38acdc4cc765515f5) we generated a |
| sorted list of these symbols, and symbols_do actually iterated on that |
| list. But we kept the constraints of using hash_do_for_each, which |
| requires a lot of ceremonial code, and makes it hard/unnatural to |
| preserve data between iterations (see the next commit). |
| |
| Alas, this is C, not C++. |
| |
| Let's remove this abstraction, and directly iterate on the sorted |
| tables. |
| |
| * src/symtab.c (symbols_do): Remove. |
| Adjust callers to use a simple for-loop instead. |
| (table_sort): New. |
| (symbols_check_defined): Use it. |
| (symbol_check_defined_processor, symbol_pack_processor) |
| (semantic_type_check_defined_processor, symbol_translation_processor): |
| Remove. |
| Simplify the corresponding functions (that no longer need to return a |
| bool). |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: display suggested update after the caret-info |
| This commit adds the suggestion in green, on the line below the |
| caret-and-tildes. |
| |
| foo.y:1.1-14: warning: deprecated directive: '%error-verbose', use '%define parse.error verbose' [-Wdeprecated] |
| 1 | %error-verbose |
| | ^~~~~~~~~~~~~~ |
| | %define parse.error verbose |
| |
| The current approach, with location_caret_suggestion, is fragile: |
| there's a protocol of calls to the complain functions which is strict. |
| We should rather have a richer structure describing the diagnostics, |
| including with submessages such as the suggestions, passed in the end |
| to the routines in charge of formatting and printing them. |
| |
| * src/location.h, src/location.c (location_caret_suggestion): New. |
| * src/complain.c (deprecated_directive): Use it. |
| * tests/diagnostics.at, tests/input.at: Adjust expectations. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: isolate caret_set_column |
| * src/location.c (caret_info): Add width and skip members. |
| (caret_set_column): New. |
| Use it. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: isolate caret_set_file |
| * src/location.c (caret_set_file): New. |
| Store the current line's length in caret_info.line_len. |
| Pay attention to fseek's return value. |
| Extracted from... |
| (location_caret): here. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: use tput to get the number of columns |
| * tests/bison.in: here. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: update |
| I no longer agree with that item, there are indeed two things to |
| report: lack of definition, and being useless. We could have either |
| one without the other, they are not directly related. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: work around warnings from G++ 4.8 |
| input.c: In function 'int yyparse()': |
| input.c: error: conversion to 'long int' from 'long unsigned int' |
| may change the sign of the result [-Werror=sign-conversion] |
| yyes_capacity = sizeof yyesa / sizeof *yyes; |
| ^ |
| cc1plus: all warnings being treated as errors |
| |
| * data/skeletons/yacc.c: here. |
| |
| 2019-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: work around warnings from Clang++ 3.3 and 3.4 |
| When we run the test suite with these C++ compilers to compile C code, |
| we get: |
| |
| 239. synclines.at:440: testing syncline escapes: yacc.c ... |
| ../../tests/synclines.at:440: $CC $CFLAGS $CPPFLAGS \"\\\"\".c -o \"\\\"\" || |
| exit 77 |
| stderr: |
| stdout: |
| ../../tests/synclines.at:440: COLUMNS=1000; export COLUMNS; bison --color=no -fno-caret -o \"\\\"\".c \"\\\"\".y |
| ../../tests/synclines.at:440: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o \"\\\"\" \"\\\"\".c $LIBS |
| stderr: |
| "\"".c:1102:41: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32] |
| YYPTRDIFF_T yysize = yyssp - yyss + 1; |
| ~~~~~~ ~~~~~~~~~~~~~^~~ |
| 1 error generated. |
| |
| 193. conflicts.at:545: testing parse.error=verbose and consistent errors: lr.type=canonical-lr parse.lac=full ... |
| input.c:737:75: error: implicit conversion loses integer precision: 'long' to 'int' |
| [-Werror,-Wshorten-64-to-32] |
| YYPTRDIFF_T yysize_old = *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1; |
| ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~^~~ |
| input.c:901:48: error: implicit conversion loses integer precision: 'long' to 'int' |
| [-Werror,-Wshorten-64-to-32] |
| YYPTRDIFF_T yysize = yyesp - *yyes + 1; |
| ~~~~~~ ~~~~~~~~~~~~~~^~~ |
| |
| * data/skeletons/yacc.c: Add more casts. |
| |
| 2019-10-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: avoid a GCC 4.8 warning |
| GCC 4.8 reports: |
| |
| input.y:57:33: error: conversion to 'int' from 'long unsigned int' |
| may alter its value [-Werror=conversion] |
| int input_elts = sizeof input / sizeof input[0]; |
| ^ |
| |
| * tests/local.at (AT_YYLEX_DEFINE(c)): Add a cast (sorry, Paul!). |
| |
| 2019-10-05 Paul Eggert <eggert@cs.ucla.edu> |
| |
| * data/skeletons/glr.c (yysplitStack): Pacify Clang 8. |
| |
| 2019-10-05 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Avoid quiet conversion of pointer to bool |
| * src/location.c (caret_set_file): |
| * src/scan-code.l (contains_dot_or_dash): |
| Do not quietly convert pointer to bool, as Oracle Developer Studio |
| 12.6 complains and it is arguably confusing style anyway. |
| |
| 2019-10-05 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Port ARGMATCH_DEFINE_GROUP calls to C99 |
| * src/complain.c, src/getargs.c: Omit ‘;’ after call |
| to ARGMATCH_DEFINE_GROUP, as C99 does not allow ‘;’ there. |
| |
| 2019-10-05 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Port lexcalc scan.l to Solaris 10 |
| * examples/c/lexcalc/scan.l: Include errno.h. |
| |
| 2019-10-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: use casts instead of pragmas when losing integer width |
| For instance with Clang 4, 8, etc.: |
| |
| input.c:1166:12: error: implicit conversion loses integer precision: 'int' to 'yy_state_num' (aka 'signed char') [-Werror,-Wconversion] |
| *yyssp = yystate; |
| ~ ^~~~~~~ |
| |
| And GCC 8: |
| |
| input.c:1166:12: error: implicit conversion loses integer precision: 'int' to 'yy_state_num' (aka 'signed char') [-Werror,-Wimplicit-int-conversion] |
| *yyssp = yystate; |
| ~ ^~~~~~~ |
| |
| * data/skeletons/yacc.c (YY_CONVERT_INT_BEGIN): Remove. |
| Adjust callers. |
| |
| 2019-10-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: fix warnings about undefined macros |
| For instance with GCC 4.9 and --enable-gcc-warnings: |
| |
| 25. input.at:1201: testing Torturing the Scanner ... |
| ../../tests/input.at:1344: $CC $CFLAGS $CPPFLAGS -c -o input.o input.c |
| stderr: |
| input.c:239:18: error: "__STDC_VERSION__" is not defined [-Werror=undef] |
| # elif 199901 <= __STDC_VERSION__ |
| ^ |
| input.c:256:18: error: "__STDC_VERSION__" is not defined [-Werror=undef] |
| # elif 199901 <= __STDC_VERSION__ |
| ^ |
| |
| * data/skeletons/yacc.c: Check that __STDC_VERSION__ is defined before |
| using it. |
| |
| 2019-10-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check more state numbers |
| * tests/torture.at (State number type): Also check 128, 129 and |
| 32768. |
| |
| 2019-10-03 Paul Eggert <eggert@cs.ucla.edu> |
| |
| * doc/bison.texi (Table of Symbols): Mention memory exhaustion. |
| |
| 2019-10-03 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Simplify mfcalc error handling |
| * doc/bison.texi (Mfcalc Symbol Table, Mfcalc Lexer): |
| Don’t abort on memory allocation failure or integer overflow. |
| Instead, comment that these things aren’t checked for. |
| |
| 2019-10-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix comments suggesting to use %require |
| * data/skeletons/location.cc, data/skeletons/stack.hh: Here. |
| |
| 2019-10-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: simplify uses of size_t |
| * data/skeletons/stack.hh (stack::index_type): New type. |
| (stack::size, stack::operator[]): Be about an index_type rather than a |
| size_type and an int. |
| |
| 2019-10-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fixes for old compilers |
| On the CI with GCC 6: |
| |
| examples/c++/calc++/parser.cc:845:5: error: 'ptrdiff_t' was not declared in this scope |
| ptrdiff_t yycount = 0; |
| ^~~~~~~~~ |
| examples/c++/calc++/parser.cc:845:5: note: suggested alternatives: |
| /usr/include/x86_64-linux-gnu/c++/6/bits/c++config.h:202:28: note: 'std::ptrdiff_t' |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; |
| ^~~~~~~~~ |
| |
| * data/skeletons/lalr1.cc: Qualify ptrdiff_t and size_t with std::. |
| |
| 2019-10-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: be robust to -DNDEBUG |
| input.y: In function 'yylex': |
| input.y:67:7: error: unused variable 'input_elts' [-Werror=unused-variable] |
| int input_elts = sizeof input / sizeof input[0]; |
| ^~~~~~~~~~ |
| cc1: all warnings being treated as errors |
| |
| * tests/input.at, tests/local.at: Avoid that. |
| |
| 2019-10-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: remove the symlink before creating it |
| Currently we fail if we rerun a job that succeeded to push the |
| tarball. |
| |
| 2019-10-03 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Adjust ‘Big horizontal’ test case |
| * tests/torture.at (Big horizontal): Adjust to recent changes with |
| integers. If there are states 0..256, Bison now uses a signed |
| rather than an unsigned 16-bit integer. |
| |
| 2019-10-03 Paul Eggert <eggert@cs.ucla.edu> |
| |
| regen |
| |
| 2019-10-03 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Prefer signed to unsigned integers |
| This patch contains more fixes to prefer signed to unsigned |
| integer types, as modern tools like 'gcc -fsanitize=undefined' |
| can check for signed integer overflow but not unsigned overflow. |
| * NEWS: Document the API change. |
| * boostrap.conf (gnulib_modules): Add intprops. |
| * data/skeletons/glr.c: Include stddef.h and stdint.h, |
| since this skeleton can assume C99 or later. |
| (YYSIZEMAX): Now signed, and the minimum of SIZE_MAX and PTRDIFF_MAX. |
| (yybool) [!__cplusplus]: Now signed (which is how bool behaves). |
| (YYTRANSLATE): Avoid use of unsigned, and make the macro |
| safe even for values greater than UINT_MAX. |
| (yytnamerr, struct yyGLRState, struct yyGLRStateSet, struct yyGLRStack) |
| (yyaddDeferredAction, yyinitStateSet, yyinitGLRStack) |
| (yyexpandGLRStack, yymarkStackDeleted, yyremoveDeletes) |
| (yyglrShift, yyglrShiftDefer, yy_reduce_print, yydoAction) |
| (yyglrReduce, yysplitStack, yyreportTree, yycompressStack) |
| (yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError) |
| (yyparse, yy_yypstack, yypstack, yypdumpstack): |
| * tests/input.at (Torturing the Scanner): |
| Prefer ptrdiff_t to size_t. |
| * data/skeletons/c++.m4 (b4_yytranslate_define): |
| * src/AnnotationList.c (AnnotationList__computePredecessorAnnotations): |
| * src/AnnotationList.h (AnnotationIndex): |
| * src/InadequacyList.h (InadequacyListNodeCount): |
| * src/closure.c (closure_new): |
| * src/complain.c (error_message, complains, complain_indent) |
| (complain_args, duplicate_directive, duplicate_rule_directive): |
| * src/gram.c (nritems, ritem_print, grammar_dump): |
| * src/ielr.c (ielr_compute_ritem_sees_lookahead_set) |
| (ielr_item_has_lookahead, ielr_compute_annotation_lists) |
| (ielr_compute_lookaheads): |
| * src/location.c (columns, boundary_print, location_print): |
| * src/muscle-tab.c (muscle_percent_define_insert) |
| (muscle_percent_define_check_values): |
| * src/output.c (prepare_rules, prepare_actions): |
| * src/parse-gram.y (id, handle_require): |
| * src/reader.c (record_merge_function_type, packgram): |
| * src/reduce.c (nuseless_productions, nuseless_nonterminals) |
| (inaccessable_symbols): |
| * src/relation.c (relation_print): |
| * src/scan-code.l (variant, variant_table_size, variant_count) |
| (variant_add, get_at_spec, show_sub_message, show_sub_messages) |
| (parse_ref): |
| * src/scan-gram.l (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>) |
| (scan_integer, convert_ucn_to_byte, handle_syncline): |
| * src/scan-skel.l (at_complain): |
| * src/symtab.c (complain_symbol_redeclared) |
| (complain_semantic_type_redeclared, complain_class_redeclared) |
| (symbol_class_set, complain_user_token_number_redeclared): |
| * src/tables.c (conflict_tos, conflrow, conflict_table) |
| (conflict_list, save_row, pack_vector): |
| * tests/local.at (AT_YYLEX_DEFINE(c)): |
| Prefer signed to unsigned integer. |
| * data/skeletons/lalr1.cc (yy_lac_check_): |
| * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): |
| * tests/local.at (AT_YYLEX_DEFINE(c)): |
| Omit now-unnecessary casts. |
| * data/skeletons/location.cc (b4_location_define): |
| * doc/bison.texi (Mfcalc Lexer, C++ position, C++ location): |
| Prefer int to unsigned for line and column numbers. |
| Change example to abort explicitly on memory exhaustion, |
| and fix an off-by-one bug that led to undefined behavior. |
| * data/skeletons/stack.hh (stack::operator[]): |
| Also allow ptrdiff_t indexes. |
| (stack::pop, slice::slice, slice::operator[]): |
| Index arg is now ptrdiff_t, not int. |
| (stack::ssize): New method. |
| (slice::range_): Now ptrdiff_t, not int. |
| * data/skeletons/yacc.c (b4_state_num_type): Remove. |
| All uses replaced by b4_int_type. |
| (YY_CONVERT_INT_BEGIN, YY_CONVERT_INT_END): New macros. |
| (yylac, yyparse): Use them around conversions that -Wconversion |
| would give false alarms about. Omit unnecessary casts. |
| (yy_stack_print): Use int rather than unsigned, and omit |
| a cast that doesn’t seem to be needed here any more. |
| * examples/c++/variant.yy (yylex): |
| * examples/c++/variant-11.yy (yylex): |
| Omit no-longer-needed conversions to unsigned. |
| * src/InadequacyList.c (InadequacyList__new_conflict): |
| Don’t assume *node_count is unsigned. |
| * src/output.c (muscle_insert_unsigned_table): |
| Remove; no longer used. |
| |
| 2019-10-02 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Prefer signed types for indexes in skeletons |
| * NEWS: Mention this. |
| * data/skeletons/c.m4 (b4_int_type): |
| Prefer char if it will do, and prefer signed types to unsigned if |
| either will do. |
| * data/skeletons/glr.c (yy_reduce_print): No need to |
| convert rule line to unsigned long. |
| (yyrecoverSyntaxError): Put action into an int to |
| avoid GCC warning of using a char subscript. |
| * data/skeletons/lalr1.cc (yy_lac_check_, yysyntax_error_): |
| Prefer ptrdiff_t to size_t. |
| * data/skeletons/yacc.c (b4_int_type): |
| Prefer signed types to unsigned if either will do. |
| * data/skeletons/yacc.c (b4_declare_parser_state_variables): |
| (YYSTACK_RELOCATE, YYCOPY, yy_lac_stack_realloc, yy_lac) |
| (yytnamerr, yysyntax_error, yyparse): Prefer ptrdiff_t to size_t. |
| (YYPTRDIFF_T, YYPTRDIFF_MAXIMUM): New macros. |
| (YYSIZE_T): Fix "! defined YYSIZE_T" typo. |
| (YYSIZE_MAXIMUM): Take the minimum of PTRDIFF_MAX and SIZE_MAX. |
| (YYSIZEOF): New macro. |
| (YYSTACK_GAP_MAXIMUM, YYSTACK_BYTES, YYSTACK_RELOCATE) |
| (yy_lac_stack_realloc, yyparse): Use it. |
| (YYCOPY, yy_lac_stack_realloc): Cast to YYSIZE_T to pacify GCC. |
| (yy_reduce_print): Use int instead of unsigned long when int |
| will do. |
| (yy_lac_stack_realloc): Prefer long to unsigned long when |
| either will do. |
| * tests/regression.at: Adjust to these changes. |
| |
| 2019-09-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: use the most appropriate integral type for state numbers |
| Currently we properly use the "best" integral type for tables, |
| including those storing state numbers. However the variables for |
| state numbers used in yyparse (and its dependencies such as |
| yy_stack_print) still use int16_t invariably. As a consequence, very |
| large models overflow these variables. |
| |
| Let's use the "best" type for these variables too. It turns out that |
| we can still use 16 bits for twice larger automata: stick to unsigned |
| types. |
| |
| However using 'unsigned' when 16 bits are not enough is troublesome |
| and generates tons of warnings about signedness issues. Instead, |
| let's use 'int'. |
| |
| Reported by Tom Kramer. |
| https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00018.html |
| |
| * data/skeletons/yacc.c (b4_state_num_type): New. |
| (yy_state_num): Be computed from YYNSTATES. |
| * tests/linear: New. |
| * tests/torture.at (State number type): New. |
| Use it. |
| |
| 2019-09-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: introduce a type for states |
| * data/skeletons/yacc.c (yy_state_num): New. |
| Use it for arrays of states. |
| |
| 2019-09-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer symbolic values rather than litterals |
| Instead of |
| |
| #define YYPACT_NINF -130 |
| #define yypact_value_is_default(Yystate) \ |
| (!!((Yystate) == (-130))) |
| |
| generate |
| |
| #define YYPACT_NINF (-130) |
| #define yypact_value_is_default(Yyn) \ |
| ((Yyn) == YYPACT_NINF) |
| |
| * data/skeletons/c.m4 (b4_table_value_equals): Add support for $4. |
| * data/skeletons/glr.c, data/skeletons/yacc.c: Use it. |
| Also, use shorter macro argument names, the name of the macro is clear |
| enough. |
| |
| 2019-09-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: change misleading macro argument name |
| * data/skeletons/glr.c, data/skeletons/yacc.c |
| (yypact_value_is_default): It does not take a rule number as argument. |
| |
| 2019-09-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge remote-tracking branch 'upstream/maint' |
| * upstream/maint: |
| c++: add copy ctors for compatibility with the IAR compiler |
| CI: show git status |
| CI: disable ICC |
| tests: pass -jN from Make to the test suite |
| quotearg: avoid leaks |
| maint: post-release administrivia |
| |
| 2019-09-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: add copy ctors for compatibility with the IAR compiler |
| Reported by Andreas Damm. |
| https://savannah.gnu.org/support/?110032 |
| |
| * data/skeletons/lalr1.cc (stack_symbol_type::operator=): New |
| overload, const, to please the IAR C++ compiler (version ca 2013). |
| |
| 2019-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: show git status |
| |
| 2019-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: disable ICC |
| It seems that Intel changed something in their license management. |
| https://github.com/nemequ/icc-travis/issues/15 |
| |
| 2019-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: pass -jN from Make to the test suite |
| I am sooooo tired of typing "make -j5 TESTSUITEFLAGS=-j5"... |
| Should have done this years ago. |
| |
| * cfg.mk (TESTSUITEFLAGS): here. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| quotearg: avoid leaks |
| Reported by Tomasz Kłoczko. |
| https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00008.html |
| |
| * src/main.c (main): Free quotearg's memory later. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: get the screen width from the terminal |
| * bootstrap.conf: We need winsz-ioctl and winsz-termios. |
| * src/location.c (columns): Use winsize to get the number of |
| columns. |
| Code taken from the GNU Coreutils. |
| * src/location.h, src/location.c (caret_init): New. |
| * src/complain.c (complain_init): Call it. |
| * tests/bison.in: Export COLUMNS so that users of tests/bison can |
| enjoy proper line truncation. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: don't print ellipsis on the caret line |
| From |
| |
| 9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKL |
| | ... ^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| to |
| |
| 9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI... |
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| * src/location.c (location_caret): here. |
| * tests/diagnostics.at: Adjust expectations. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: also show truncation at the end of line with "..." |
| From |
| |
| 9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKL |
| | ... ^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| to |
| |
| 9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI... |
| | ... ^~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| * src/location.c (location_caret): here. |
| * tests/diagnostics.at: Adjust expectations. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: check that quoted lines are truncated |
| * tests/diagnostics.at (Screen width: 60 columns, Screen width: 80 |
| columns, Screen width: 200 columns): New tests. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: truncate quoted sources to fit the screen |
| * src/location.c (min_int, columns): New. |
| (location_caret): Compute the line width. Based on it, compute how |
| many columns must be skipped before the quoted location and truncated |
| after, to fit the sceen width. |
| * tests/local.at (AT_QUELL_VALGRIND): Transform into... |
| (AT_SET_ENV_IF, AT_SET_ENV): these. |
| Define COLUMNS to protect the test suite from the user's environment. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: learn how to count column number with multibyte chars |
| So far diagnostics were cheating: in addition to the 'column' field of |
| locations (based on actual screen width per multibyte characters and |
| on tabulation expansion), the scanner sets the 'byte' field. |
| Diagnostics used this byte count to decide where to insert (color) |
| style. |
| |
| We want to be able to truncate the quoted lines when there are too |
| wide to fit the screen. This requires that the diagnostics learn how |
| to count columns, the byte-in-boundary trick no longer works. |
| |
| Bytes are still used for fix-its. |
| |
| * bootstrap.conf: We need mbfile for mbf_getc. |
| * src/location.c (caret_info): We need an mbfile. |
| (caret_set_file): Initialize it. |
| (caret_getc): Convert to mbfile. |
| (location_caret): Instead of relying on the byte position to decide |
| where to insert the color style, count the current column using |
| boundary_compute. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style: rename member for clariy |
| * src/location.c (caret_info): Now that we no longer have a 'file' |
| member (see previous commit), rename 'source' as 'file'. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style: use a boundary to track the caret_info |
| * src/location.c (caret_info): Replace file and line with pos, a |
| boundary. This will allow us to use features of the boundary type, |
| such as boundary_compute. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: extract boundary_compute from location_compute |
| The handling of the contributions of the tabulations in the columns is |
| burried inside location_compute. We will soon be willing to use the |
| boundary part of the computation (to compute the current column number |
| each time we read a multibyte char). |
| |
| * src/location.c (boundary_compute): New, extracted from... |
| (location_compute): here. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style: add caret_set_file |
| To make the following commits easier to read. |
| |
| * src/location.c (caret_set_file): New. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style: minor changes |
| * src/location.c (location_caret): Factor two branches of an if. |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: show git status |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: update ignores |
| |
| 2019-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: update ignores |
| |
| 2019-09-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| quotearg: avoid leaks |
| Reported by Tomasz Kłoczko. |
| https://lists.gnu.org/archive/html/bug-bison/2019-09/msg00008.html |
| |
| * src/main.c (main): Free quotearg's memory later. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: pass -jN from Make to the test suite |
| I am sooooo tired of typing "make -j5 TESTSUITEFLAGS=-j5"... |
| Should have done this years ago. |
| |
| * cfg.mk (TESTSUITEFLAGS): here. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: handle eof in yytranslate |
| * data/skeletons/lalr1.java (yytranslate_): Handle eof here, as is done |
| in lalr1.cc. |
| * tests/javapush.at: Adjust. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: handle eof in yytranslate |
| This changes the traces from |
| |
| Reading a token: |
| Now at end of input. |
| |
| to |
| |
| Reading a token: |
| Next token is token $end (7FFEE56E6474) |
| |
| which is ok. Actually it is even better, as it gives the location |
| when locations are enabled, and is clearer when rules explicitly use |
| the EOF token. |
| |
| * data/skeletons/lalr1.d (yytranslate_): Handle eof here, as is done |
| in lalr1.cc. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: use api.token.raw |
| * src/parse-gram.y: Here. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: document it |
| * doc/bison.texi: here. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: cannot be used with character literals |
| * src/parse-gram.y (CHAR): api.token.raw and character literals are |
| mutually exclusive. |
| * tests/input.at (Character literals and api.token.raw): New. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: apply to the other skeletons |
| * data/skeletons/c++.m4, data/skeletons/glr.c, |
| * data/skeletons/lalr1.c, data/skeletons/lalr1.java: |
| Add support for api.token.raw. |
| |
| * tests/scanner.at: Check them. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: check it |
| * tests/local.at (AT_TOKEN_RAW_IF): New. |
| * tests/local.mk: New. |
| Use it. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.token.raw: implement |
| Bison used to feature %raw, documented as follows: |
| |
| @item %raw |
| The output file @file{@var{name}.h} normally defines the tokens with |
| Yacc-compatible token numbers. If this option is specified, the |
| internal Bison numbers are used instead. (Yacc-compatible numbers start |
| at 257 except for single character tokens; Bison assigns token numbers |
| sequentially for all tokens starting at 3.) |
| |
| Unfortunately, as far as I can tell, it never worked: token numbers |
| are indeed changed in the generated tables (from external token number |
| to internal), yet the code was still applying the mapping from |
| external token numbers to internal token numbers. |
| |
| This commit reintroduces the feature as it was expected to be. |
| |
| * data/skeletons/bison.m4 (b4_token_format): When api.token.raw is |
| enabled, use the internal token number. |
| * data/skeletons/yacc.c (yytranslate): Don't emit if api.token.raw is |
| enabled. |
| (YYTRANSLATE): Adjust. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: tidy yacc.c |
| * data/skeletons/yacc.c: Include 'c.m4' first. |
| Then sort the handling of %define variables. |
| * tests/input.at: Adjust. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: disable ICC |
| It seems that Intel changed something in their license management. |
| https://github.com/nemequ/icc-travis/issues/15 |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix use of complain_indent |
| * src/symtab.c (symbol_class_set): Here. |
| * tests/diagnostics.at, tests/input.at, tests/regression.at: Adjust |
| expectations. |
| |
| 2019-09-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| input: stop treating lone CRs as end-of-lines |
| We used to treat lone CRs (\r, aka ^M) as regular NLs (\n), probably |
| to please Classic MacOS. As of today, it makes more sense to treat \r |
| like a plain white space character. |
| |
| https://lists.gnu.org/archive/html/bison-patches/2019-09/msg00027.html |
| |
| * src/scan-gram.l (no_cr_read): Remove. Instead, use... |
| (eol): this new abbreviation denoting end-of-line. |
| * src/location.c (caret_getc): New. |
| (location_caret): Use it. |
| * tests/diagnostics.at (Carriage return): Adjust expectations. |
| (CR NL): New. |
| |
| 2019-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge tag 'v3.4.2' into HEAD |
| bison 3.4.2 |
| |
| * tag 'v3.4.2': (24 commits) |
| version 3.4.2 |
| CI: always uninstall icc |
| news: more bug fixes thanks to Marc Schönefeld |
| diagnostics: beware of unexpected EOF when quoting the source file |
| gnulib: update |
| build: fix distcheck |
| tests: add noexcept to please GCC 9 |
| news: update |
| fix: don't die when EOF token is defined twice |
| tests: check token redeclaration |
| yacc.c: beware of GCC's -Wmaybe-uninitialized |
| glr.c: initialize vector of bools |
| gnulib: update |
| check for memory exhaustion |
| diagnostics: avoid global variables |
| diagnostics: fix invalid error message indentation |
| git: ignore files generated in gnulib-po |
| c++: avoid duplicate definition of YYUSE |
| gnulib: update |
| CI: more compilers |
| ... |
| |
| 2019-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.4.2 |
| * NEWS: Record release date. |
| |
| 2019-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: always uninstall icc |
| |
| 2019-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: more bug fixes thanks to Marc Schönefeld |
| |
| 2019-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: beware of unexpected EOF when quoting the source file |
| When the input file contains lone CRs (aka, ^M, \r), the locations see |
| a new line. Diagnostics look only at \n as end-of-line, so sometimes |
| there is an offset in diagnostics. Worse yet: sometimes we loop |
| endlessly waiting for \n to come from a continuous stream of EOF. |
| |
| Fix that: |
| - check for EOF |
| - beware not to call end_use_class if begin_use_class was not |
| called (which would abort). This could happen if the actual |
| line is shorter that the expected one. |
| |
| Prompted by a (private) report from Marc Schönefeld. |
| |
| * src/location.c (location_caret): here. |
| * tests/diagnostics.at (Carriage return): New. |
| |
| 2019-09-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| Contains the creation of the xhash module. |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00046.html |
| |
| * src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c: |
| Use hash_xinitialize. |
| |
| 2019-09-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix distcheck |
| * configure.ac (gl_LIBOBJS): Adjust so that the generated files are |
| indeed the expected ones. |
| |
| 2019-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: beware of unexpected EOF when quoting the source file |
| When the input file contains lone CRs (aka, ^M, \r), the locations see |
| a new line. Diagnostics look only at \n as end-of-line, so sometimes |
| there is an offset in diagnostics. Worse yet: sometimes we loop |
| endlessly waiting for \n to come from a continuous stream of EOF. |
| |
| Fix that: |
| - check for EOF |
| - beware not to call end_use_class if begin_use_class was not |
| called (which would abort). This could happen if the actual |
| line is shorter that the expected one. |
| |
| Prompted by a (private) report from Marc Schönefeld. |
| |
| * src/location.c (location_caret): here. |
| * tests/diagnostics.at (Carriage return): New. |
| |
| 2019-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| Contains the creation of the xhash module. |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00046.html |
| |
| * src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c: |
| Use hash_xinitialize. |
| |
| 2019-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix distcheck |
| * configure.ac (gl_LIBOBJS): Adjust so that the generated files are |
| indeed the expected ones. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: add noexcept to please GCC 9 |
| bison/tests/c++.at:552: bison --color=no -fno-caret -o list.cc list.y |
| bison/tests/c++.at:552: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o list list.cc $LIBS |
| stderr: |
| gcc9/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string]': |
| gcc9/c++/bits/alloc_traits.h:482:2: required from 'static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<string>]' |
| gcc9/c++/bits/stl_uninitialized.h:888:67: required from 'void std::__relocate_object_a(_Tp*, _Up*, _Allocator&) [with _Tp = string; _Up = string; _Allocator = std::allocator<string>]' |
| gcc9/c++/bits/stl_uninitialized.h:920:47: required from '_ForwardIterator std::__relocate_a_1(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]' |
| gcc9/c++/bits/stl_uninitialized.h:942:37: required from '_ForwardIterator std::__relocate_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]' |
| gcc9/c++/bits/stl_vector.h:430:35: required from 'static constexpr bool std::vector<_Tp, _Alloc>::_S_nothrow_relocate(std::true_type) [with _Tp = string; _Alloc = std::allocator<string>; std::true_type = std::integral_constant<bool, true>]' |
| gcc9/c++/bits/stl_vector.h:446:28: required from 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const string&}; _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<string*, std::vector<string> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = string*]' |
| gcc9/c++/bits/stl_vector.h:1195:4: required from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::value_type = string]' |
| list.y:126:110: required from here |
| gcc9/c++/bits/vector.tcc:459:44: in 'constexpr' expansion of 'std::vector<string>::_S_use_relocate()' |
| list.y:41:7: error: but 'string::string(string&&)' does not throw; perhaps it should be declared 'noexcept' [-Werror=noexcept] |
| 41 | string (string&& s) |
| | ^~~~~~ |
| |
| * tests/c++.at (Variants): Add noexcept where appropriate. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: add noexcept to please GCC 9 |
| bison/tests/c++.at:552: bison --color=no -fno-caret -o list.cc list.y |
| bison/tests/c++.at:552: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o list list.cc $LIBS |
| stderr: |
| gcc9/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string]': |
| gcc9/c++/bits/alloc_traits.h:482:2: required from 'static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = string; _Args = {string}; _Tp = string; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<string>]' |
| gcc9/c++/bits/stl_uninitialized.h:888:67: required from 'void std::__relocate_object_a(_Tp*, _Up*, _Allocator&) [with _Tp = string; _Up = string; _Allocator = std::allocator<string>]' |
| gcc9/c++/bits/stl_uninitialized.h:920:47: required from '_ForwardIterator std::__relocate_a_1(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]' |
| gcc9/c++/bits/stl_uninitialized.h:942:37: required from '_ForwardIterator std::__relocate_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = string*; _ForwardIterator = string*; _Allocator = std::allocator<string>]' |
| gcc9/c++/bits/stl_vector.h:430:35: required from 'static constexpr bool std::vector<_Tp, _Alloc>::_S_nothrow_relocate(std::true_type) [with _Tp = string; _Alloc = std::allocator<string>; std::true_type = std::integral_constant<bool, true>]' |
| gcc9/c++/bits/stl_vector.h:446:28: required from 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const string&}; _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<string*, std::vector<string> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = string*]' |
| gcc9/c++/bits/stl_vector.h:1195:4: required from 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = string; _Alloc = std::allocator<string>; std::vector<_Tp, _Alloc>::value_type = string]' |
| list.y:126:110: required from here |
| gcc9/c++/bits/vector.tcc:459:44: in 'constexpr' expansion of 'std::vector<string>::_S_use_relocate()' |
| list.y:41:7: error: but 'string::string(string&&)' does not throw; perhaps it should be declared 'noexcept' [-Werror=noexcept] |
| 41 | string (string&& s) |
| | ^~~~~~ |
| |
| * tests/c++.at (Variants): Add noexcept where appropriate. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: update |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: don't die when EOF token is defined twice |
| With |
| |
| %token EOF 0 EOF 0 |
| |
| we get |
| |
| input.y:3.14-16: warning: symbol EOF redeclared [-Wother] |
| 3 | %token EOF 0 EOF 0 |
| | ^~~ |
| input.y:3.8-10: previous declaration |
| 3 | %token EOF 0 EOF 0 |
| | ^~~ |
| Assertion failed: (nsyms == ntokens + nvars), function check_and_convert_grammar, |
| file /Users/akim/src/gnu/bison/src/reader.c, line 839. |
| |
| Reported by Marc Schönefeld. |
| |
| * src/symtab.c (symbol_user_token_number_set): Register only the |
| first definition of the end of input token. |
| * tests/input.at (Symbol redeclared): Check that case. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check token redeclaration |
| * src/symtab.c (symbol_class_set): Report previous definitions when |
| redeclared. |
| * tests/input.at (Symbol redeclared): New. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: beware of GCC's -Wmaybe-uninitialized |
| Test 400 (calc.at:773: testing Calculator api.push-pull=both |
| api.pure=full parse.error=verbose %debug %locations %defines |
| api.prefix={calc} %verbose %yacc) fails on the CI with GCC 8 on |
| Bionic: |
| |
| 400. calc.at:773: testing Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc ... |
| ../../tests/calc.at:773: bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y |
| ../../tests/calc.at:773: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS |
| stderr: |
| calc.y: In function 'int calcpush_parse(calcpstate*, int, const CALCSTYPE*, CALCLTYPE*)': |
| calc.y:26:20: error: 'yylval.CALCSTYPE::ival' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| %printer { fprintf (yyo, "%d", $$); } <ival>; |
| ^ |
| calc.c:1272:9: note: 'yylval.CALCSTYPE::ival' was declared here |
| YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); |
| ^~~~~~ |
| cc1plus: all warnings being treated as errors |
| stdout: |
| ../../tests/calc.at:773: exit code was 1, expected 0 |
| 400. calc.at:773: 400. Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc (calc.at:773): FAILED (calc.at:773) |
| |
| * data/skeletons/c.m4 (yy_symbol_value_print): Disable the warning |
| locally. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: initialize vector of bools |
| The CI, with CC='gcc-7 -fsanitize=undefined,address |
| -fno-omit-frame-pointer', reports: |
| |
| calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool' |
| ../../tests/calc.at:867: cat stderr |
| --- expout 2019-09-05 20:30:37.887257545 +0000 |
| +++ /home/travis/build/bison-3.4.1.72-79a1-dirty/_build/tests/testsuite.dir/at-groups/438/stdout 2019-09-05 20:30:37.887257545 +0000 |
| @@ -1 +1,2 @@ |
| syntax error |
| +calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool' |
| 438. calc.at:867: 438. Calculator glr.cc (calc.at:867): FAILED (calc.at:867) |
| |
| The problem is that yylookaheadNeeds is not initialized in |
| yyinitStateSet, and when it is copied, the value is not 0 or 1. |
| |
| * data/skeletons/glr.c (yylookaheadNeeds): Initialize yylookaheadNeeds. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| Contains a fix for |
| https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html. |
| See |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00005.html. |
| Reported by 江 祖铭 (Zu-Ming Jiang). |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| check for memory exhaustion |
| hash_initialize returns NULL when out of memory. Check for it, and |
| die cleanly instead of crashing. |
| |
| Reported by 江 祖铭 (Zu-Ming Jiang). |
| https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00015.html |
| |
| * src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c: |
| Check the value returned by hash_initialize. |
| |
| 2019-09-08 László Várady <laszlo.varady93@gmail.com> |
| |
| diagnostics: avoid global variables |
| * src/complain.c (indent_ptr): Remove. |
| (error_message, complains): Take indent as an argument. |
| Adjust callers. |
| |
| 2019-09-08 László Várady <laszlo.varady93@gmail.com> |
| |
| diagnostics: fix invalid error message indentation |
| https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html |
| |
| When Bison is started with a flag that suppresses warning messages, the |
| error_message() function can produce a few gigabytes of indentation |
| because of a dangling pointer. |
| |
| * src/complain.c (error_message): Don't reset indent_ptr here, but... |
| (complain_indent): here. |
| * tests/diagnostics.at (Indentation with message suppression): Check |
| this case. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: ignore files generated in gnulib-po |
| Because of them, the CI generates "-dirty" tarballs. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid duplicate definition of YYUSE |
| Reported by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bug-bison/2019-06/msg00009.html |
| |
| * data/skeletons/lalr1.cc (b4_shared_declarations): Remove the |
| duplicate definition of YYUSE, the other one coming from |
| b4_attribute_define. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| This update brings file from Gettext 0.20, which is not available on |
| the CI yet. |
| |
| .travis.yml: Adjust. |
| Use Bionic now that it's available. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: more compilers |
| * .travis.yml: Bionic is now available, with GCC8. |
| GCC7 sanitizers work, but they are too longer: cover only part 1. |
| Redefine part 1 and part 2 so that part 1 is really the core of the |
| tests: not playing with POSIX and C++ compiler for C code. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: fail fast |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: propagate sftp failures |
| * .travis.yml (stage: "compile"): here. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: avoid useless git costs |
| Travis answered favorably to my suggestion to provide a means to |
| disable git clone on some jobs (issue 7542). See |
| https://docs.travis-ci.com/user/customizing-the-build/#disabling-git-clone. |
| |
| * .travis.yml: Disable git globally, enable it for i. the compile job, |
| and ii. the test job on ICC which needs the install-icc.sh script. |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: factor |
| * .travis.yml (Clang 7 libc++ and ASAN part 2): Reuse bits from "Clang |
| 7 libc++ and ASAN part 1". |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| Contains a fix for |
| https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00016.html. |
| See |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-09/msg00005.html. |
| Reported by 江 祖铭 (Zu-Ming Jiang). |
| |
| 2019-09-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: don't die when EOF token is defined twice |
| With |
| |
| %token EOF 0 EOF 0 |
| |
| we get |
| |
| input.y:3.14-16: warning: symbol EOF redeclared [-Wother] |
| 3 | %token EOF 0 EOF 0 |
| | ^~~ |
| input.y:3.8-10: previous declaration |
| 3 | %token EOF 0 EOF 0 |
| | ^~~ |
| Assertion failed: (nsyms == ntokens + nvars), function check_and_convert_grammar, |
| file /Users/akim/src/gnu/bison/src/reader.c, line 839. |
| |
| Reported by Marc Schönefeld. |
| |
| * src/symtab.c (symbol_user_token_number_set): Register only the |
| first definition of the end of input token. |
| * tests/input.at (Symbol redeclared): Check that case. |
| |
| 2019-09-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check token redeclaration |
| * src/symtab.c (symbol_class_set): Report previous definitions when |
| redeclared. |
| * tests/input.at (Symbol redeclared): New. |
| |
| 2019-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: initialize vector of bools |
| The CI, with CC='gcc-7 -fsanitize=undefined,address |
| -fno-omit-frame-pointer', reports: |
| |
| calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool' |
| ../../tests/calc.at:867: cat stderr |
| --- expout 2019-09-05 20:30:37.887257545 +0000 |
| +++ /home/travis/build/bison-3.4.1.72-79a1-dirty/_build/tests/testsuite.dir/at-groups/438/stdout 2019-09-05 20:30:37.887257545 +0000 |
| @@ -1 +1,2 @@ |
| syntax error |
| +calc.cc:1652:50: runtime error: load of value 190, which is not a valid value for type 'bool' |
| 438. calc.at:867: 438. Calculator glr.cc (calc.at:867): FAILED (calc.at:867) |
| |
| The problem is that yylookaheadNeeds is not initialized in |
| yyinitStateSet, and when it is copied, the value is not 0 or 1. |
| |
| * data/skeletons/glr.c (yylookaheadNeeds): Initialize yylookaheadNeeds. |
| |
| 2019-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: beware of GCC's -Wmaybe-uninitialized |
| Test 400 (calc.at:773: testing Calculator api.push-pull=both |
| api.pure=full parse.error=verbose %debug %locations %defines |
| api.prefix={calc} %verbose %yacc) fails on the CI with GCC 8 on |
| Bionic: |
| |
| 400. calc.at:773: testing Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc ... |
| ../../tests/calc.at:773: bison --color=no -fno-caret -Wno-deprecated -o calc.c calc.y |
| ../../tests/calc.at:773: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS |
| stderr: |
| calc.y: In function 'int calcpush_parse(calcpstate*, int, const CALCSTYPE*, CALCLTYPE*)': |
| calc.y:26:20: error: 'yylval.CALCSTYPE::ival' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| %printer { fprintf (yyo, "%d", $$); } <ival>; |
| ^ |
| calc.c:1272:9: note: 'yylval.CALCSTYPE::ival' was declared here |
| YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); |
| ^~~~~~ |
| cc1plus: all warnings being treated as errors |
| stdout: |
| ../../tests/calc.at:773: exit code was 1, expected 0 |
| 400. calc.at:773: 400. Calculator api.push-pull=both api.pure=full parse.error=verbose %debug %locations %defines api.prefix={calc} %verbose %yacc (calc.at:773): FAILED (calc.at:773) |
| |
| * data/skeletons/c.m4 (yy_symbol_value_print): Disable the warning |
| locally. |
| |
| 2019-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: fix LAC support |
| * data/skeletons/lalr1.cc (ctor): Initialize yy_lac_established_. |
| This is quite painful to write, and ugly to read. |
| |
| 2019-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix comment |
| * tests/atlocal.in: here. |
| |
| 2019-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: more compilers |
| * .travis.yml: Bionic is now available, with GCC8. |
| GCC7 sanitizers work, but they are too longer: cover only part 1. |
| Redefine part 1 and part 2 so that part 1 is really the core of the |
| tests: not playing with POSIX and C++ compiler for C code. |
| |
| 2019-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: fail fast |
| |
| 2019-09-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| This update brings file from Gettext 0.20, which is not available on |
| the CI yet. |
| |
| .travis.yml: Adjust. |
| Use Bionic now that it's available. |
| |
| 2019-09-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| check for memory exhaustion |
| hash_initialize returns NULL when out of memory. Check for it, and |
| die cleanly instead of crashing. |
| |
| Reported by 江 祖铭 (Zu-Ming Jiang). |
| https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00015.html |
| |
| * src/muscle-tab.c, src/state.c, src/symtab.c, src/uniqstr.c: |
| Check the value returned by hash_initialize. |
| |
| 2019-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: LAC for C++ |
| |
| 2019-08-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: remove useless imports |
| * examples/d/calc.y, tests/calc.at: here. |
| |
| 2019-08-18 László Várady <laszlo.varady93@gmail.com> |
| |
| diagnostics: avoid global variables |
| * src/complain.c (indent_ptr): Remove. |
| (error_message, complains): Take indent as an argument. |
| Adjust callers. |
| |
| 2019-08-18 László Várady <laszlo.varady93@gmail.com> |
| |
| diagnostics: fix invalid error message indentation |
| https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00007.html |
| |
| When Bison is started with a flag that suppresses warning messages, the |
| error_message() function can produce a few gigabytes of indentation |
| because of a dangling pointer. |
| |
| * src/complain.c (error_message): Don't reset indent_ptr here, but... |
| (complain_indent): here. |
| * tests/diagnostics.at (Indentation with message suppression): Check |
| this case. |
| |
| 2019-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: use resize to shrink a vector |
| Suggested by Adrian Vogelsgesang. |
| https://lists.gnu.org/archive/html/bison-patches/2019-08/msg00009.html |
| |
| * data/skeletons/lalr1.cc (yy_lac_check_): here. |
| |
| 2019-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: check LAC support |
| * tests/conflicts.at, tests/input.at, tests/regression.at: here. |
| |
| 2019-08-09 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| lalr1.cc: add LAC support |
| Implement lookahead correction (LAC) for the C++ skeleton. LAC is a |
| mechanism to make sure that we report the correct list of expected |
| tokens if a syntax error occurs. So far, LAC was only supported for |
| the C skeleton "yacc.c". |
| |
| * data/skeletons/lalr1.cc: Add LAC support. |
| * doc/bison.texi: Update. |
| |
| 2019-08-09 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| style: readability improvements to yacc.c |
| * data/skeletons/yacc.c (yysyntax_error): Change the nesting of `m4` |
| conditions slightly to make it more readable. |
| The generated C code stays unchanged. |
| |
| 2019-08-09 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| lalr1.cc: reduce "scope" |
| * data/skeletons/lalr1.cc (yy_lr_goto_state_): Make it static. |
| |
| 2019-08-09 Adrian Vogelsgesang <avogelsgesang@tableau.com> |
| |
| lalr1.cc: fix indentation of table declarations in the header |
| * data/skeletons/lalr1.cc: Fix indentation of table declarations in |
| the generated header. |
| |
| 2019-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: prepare LAC tests for more languages |
| * tests/regression.at: Use %expect to avoid warnings. |
| Set the keywords to facilitate running specific tests. |
| Use macros such as AT_YYLEX_DECLARE to facilitate tests for other |
| languages. |
| Likewise for AT_FULL_COMPILE. |
| |
| 2019-08-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: ignore files generated in gnulib-po |
| Because of them, the CI generates "-dirty" tarballs. |
| |
| 2019-07-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: use the modern argmatch interface |
| * src/complain.h (warnings): Remove Werror. |
| Adjust dependencies. |
| Sort. |
| Remove useless comments (see the doc in argmatch group). |
| * src/complain.c (warnings_args, warnings_types): Remove. |
| (warning_argmatch): Use argmatch_warning_value. |
| (warnings_print_categories): Use argmatch_warning_argument. |
| |
| 2019-07-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: avoid spurious empty lines in the option table |
| In Texinfo. empty lines in multitable rows generate empty lines in the |
| output. Avoid them altogether. |
| |
| With help from Gavin Smith. |
| https://lists.gnu.org/archive/html/bug-texinfo/2019-07/msg00000.html |
| |
| * build-aux/cross-options.pl: Separate rows with empty lines. |
| So, to be more readable, generate a single line for each row. |
| Use Perl format to this end. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| --fixed-output-files: detach from --yacc |
| See the previous commit. This option should be removed, -o suffices. |
| |
| * src/getargs.c (FIXED_OUTPUT_FILES): New. |
| Add support for it. |
| (getargs): Define loc, and use it. |
| This is safer when we need to pass a pointer to a location. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| %fixed-output-files: detach from %yacc |
| The name fixed-output-files is pretty clear: generate y.tab.c, as Yacc |
| does. So let's detach this from %yacc which does more: it requires |
| POSIX Yacc behavior. |
| |
| This directive is obsolete since December 29th 2001 |
| 8c9a50bee13474c1491df8f79f075f5214dda0d1. It does not show in the |
| doc. I don't want to spend more time on improving its diagnostics, it |
| could be removed just as well as far as I'm concerned. |
| |
| * src/scan-gram.l, src/parse-gram.y (%fixed-output-files): Detach from |
| %yacc. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clarify control flow |
| * src/getargs.c (language_argmatch): Initialize msg. |
| Check it instead of relying on a return. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| remove MS-DOS support |
| DJGPP support was dropped in Bison 3.3 |
| (c239e53bab8e87b30889ac446d3b513da9951a35). |
| |
| AS_FILE_NAME was introduced in |
| ae4048011562c250d2f3c96687422d99a38745ce. |
| |
| * src/getargs.c (AS_FILE_NAME): Remove. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: declare options in the same order as in --help |
| * src/getargs.c (long_options): here. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| Contains a fix for argmatch to get proper man pages. |
| See https://lists.gnu.org/archive/html/bug-gnulib/2019-07/msg00038.html |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment change |
| * src/getargs.c: here. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: remove the --report=look-aheads alias |
| Years ago we moved from 'look-ahead' to 'lookahead', and that alias |
| was kept for backward compatibility. But now that we use argmatch to |
| generate the documentation, that value clutters the doc. |
| |
| * src/getargs.c (argmatch_report_args): Remove the |
| --report=look-aheads alias. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix inaccuracies wrt --define and --force-define |
| The doc says that -Dfoo=bar is the same as %define foo "bar". It is |
| not: the quotes are not added (and it makes a difference). |
| |
| * doc/bison.texi (Tuning the Parser): Fix the definition of -D/-F |
| * src/getargs.c (usage): Likewise. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: put diagnostics related options together |
| * doc/bison.texi (Diagnostics): New section. |
| Move --warning, --color and --style there. |
| * src/getargs.c (usage): Likewise. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: move -y's documentation into "Tuning the Parser" |
| Let's clarify --help: use clearer "section" names, as in the doc. |
| Move --yacc to where it belongs. |
| |
| * src/getargs.c (usage): Rename "Parser" as "Tuning the Parser", as in |
| the doc. |
| Rename "Output" as "Output Files" |
| Move --yacc to "Tuning the Parser". |
| * doc/bison.texi: Likewise. |
| |
| 2019-07-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document colorized diagnostics |
| * src/getargs.c (argmatch_color_group): New. |
| (usage): Document --color and --style. |
| * doc/bison.texi (Bison Options): Split into three subsections. |
| Document --color and --style. |
| |
| 2019-07-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: use new features of the argmatch module |
| It can now generate the usage message. |
| |
| * src/complain.h (feature_fixit_parsable): Rename as... |
| (feature_fixit): this, for column economy. |
| Adjust dependencies. |
| (warning_usage): New. |
| Use it. |
| * src/complain.h, src/complain.c, src/getargs.h, src/getargs.c: |
| Use ARGMATCH_DEFINE_GROUP instead of the older interface. |
| |
| 2019-07-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| preserve the indentation in the ouput |
| Preserve the actions' initial indentation. For instance, on |
| |
| | %define api.value.type {int} |
| | %% |
| | exp: exp '/' exp { if ($3) |
| | $$ = $1 + $3; |
| | else |
| | $$ = 0; } |
| |
| we used to generate |
| |
| | { if (yyvsp[0]) |
| | yyval = yyvsp[-2] + yyvsp[0]; |
| | else |
| | yyval = 0; } |
| |
| now we produce |
| |
| | { if (yyvsp[0]) |
| | yyval = yyvsp[-2] + yyvsp[0]; |
| | else |
| | yyval = 0; } |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2019-06/msg00012.html. |
| |
| * data/skeletons/bison.m4 (b4_symbol_action): Output the code in |
| column 0, leave indentation matters to the C code. |
| * src/output.c (user_actions_output): Preserve the incoming |
| indentation in the output. |
| (prepare_symbol_definitions): Likewise for %printer/%destructor. |
| * tests/synclines.at (Output columns): New. |
| |
| 2019-07-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer passing locations by pointer |
| The code is inconsistent: sometimes we pass by value, sometimes by |
| reference. Let's stick to the last, more conventional for large |
| values in C. |
| |
| * src/scan-code.l: Pass locations by reference. |
| |
| 2019-06-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid duplicate definition of YYUSE |
| Reported by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bug-bison/2019-06/msg00009.html |
| |
| * data/skeletons/lalr1.cc (b4_shared_declarations): Remove the |
| duplicate definition of YYUSE, the other one coming from |
| b4_attribute_define. |
| |
| 2019-06-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * examples/c/lexcalc/local.mk, examples/c/reccalc/local.mk: |
| Here. |
| |
| 2019-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: restructure for clarity |
| * tests/calc.at (AT_CALC_MAIN, AT_CALC_LEX): Rewrite on top of |
| AT_LANG_DISPATCH. |
| |
| 2019-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: track locations |
| * configure.ac (DCFLAGS): Pass -g. |
| * data/skeletons/d.m4 (b4_locations_if): Remove, let bison.m4's one do |
| its job. |
| * data/skeletons/lalr1.d (position): Leave filename empty by default. |
| (position::toString): Don't print empty file names. |
| (location::this): New ctor. |
| (location::toString): Match the implementations of C/C++. |
| (yy_semantic_null): Leave undefined, the previous implementation does |
| not compile. |
| * tests/calc.at: Improve the implementation for D. |
| Enable more checks, in particular using locations. |
| * tests/local.at (AT_YYERROR_DEFINE(d)): Fix its implementation. |
| |
| 2019-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: style changes |
| * data/skeletons/lalr1.d: Use a more traditional quotation scheme. |
| Formatting changes. |
| |
| 2019-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: put internal details inside the parser |
| Avoid name clashes, etc. |
| |
| * data/skeletons/lalr1.d (YYStackElement, YYStack): Move inside the |
| parser. |
| |
| 2019-06-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-06-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| remove "experimental" warnings |
| Sadly enough, AFAIK, there were never answers to the "More user |
| feedback will help to stabilize it" sentences. Remove them. |
| |
| * src/getargs.c: IELR, canonical LR and XML output are here to stay, |
| and they are no more experimental than some other features. |
| * doc/bison.texi: Likewise. |
| Also remove "experimental" warning for Java, LAC, LR tuning options, |
| and named references. |
| |
| 2019-06-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: propagate sftp failures |
| * .travis.yml (stage: "compile"): here. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: honor %define parse.trace |
| * data/skeletons/lalr1.d: Don't generate debug code if parse.trace is |
| not enabled. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: style changes |
| * data/skeletons/lalr1.d: here. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: prefer delegation to duplication |
| * data/skeletons/lalr1.d: Delegate the construction of the scanner. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: enable #line output |
| * data/skeletons/d.m4 (b4_sync_start): New. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: style changes |
| * data/skeletons/lalr1.d: here. |
| * examples/d/calc.y: Remove incorrect support for decimal numbers. |
| Formatting changes. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in glr.c |
| * data/skeletons/glr.c: here. |
| |
| 2019-06-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: honor %define parse.trace |
| * data/skeletons/lalr1.java: Don't generate debug code if parse.trace |
| is not enabled. |
| |
| 2019-06-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: fix support for api.prefix |
| * data/skeletons/java.m4: here. |
| * tests/java.at: Check it. |
| |
| 2019-06-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: style changes |
| * data/skeletons/lalr1.java: Use more conventional function names for |
| Java. |
| Prefer < and <= to => and >. |
| Use the same approach for m4 quotation as in the other skeletons. |
| Fix indentation issues. |
| |
| * tests/calc.at, tests/java.at, tests/javapush.at: Fix quotation style. |
| (main): Use 'args', not 'argv', the former seems more conventional and |
| is used elsewhere in Bison. |
| Prefer character literals to integers to denote characters. |
| * examples/java/Calc.y: Likewise. |
| |
| 2019-06-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: avoid useless git costs |
| Travis answered favorably to my suggestion to provide a means to |
| disable git clone on some jobs (issue 7542). See |
| https://docs.travis-ci.com/user/customizing-the-build/#disabling-git-clone. |
| |
| * .travis.yml: Disable git globally, enable it for i. the compile job, |
| and ii. the test job on ICC which needs the install-icc.sh script. |
| |
| 2019-06-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: simplify strings to translate |
| * src/conflicts.c (log_resolution): Don't translate indentation. |
| |
| 2019-06-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes, propagate const |
| * src/conflicts.c (conflicts_output): here. |
| |
| 2019-06-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use clearer types |
| * src/conflicts.c (conflicts): Array of Booleans. |
| |
| 2019-06-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: prefer %empty |
| * tests/regression.at: here. |
| |
| 2019-06-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: factor |
| * .travis.yml (Clang 7 libc++ and ASAN part 2): Reuse bits from "Clang |
| 7 libc++ and ASAN part 1". |
| |
| 2019-06-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| lr0: more debug traces |
| * src/lr0.c (kernel_check): New. |
| (new_itemsets, save_reductions): Add traces. |
| |
| 2019-06-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: add some colors |
| This is an experiment. Maybe more styles will be used (in which case |
| a short-hand function will be useful), maybe it will be just reverted. |
| * data/bison-default.css (.traces0): New. |
| * src/lalr.c (lalr): Use it. |
| |
| 2019-06-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: make sure the default action properly works in C++ |
| See e3fdc370495ffdedadd6ac621e32e34a0e1a9de0: in C++ we generate |
| explicitly the code for the default action instead of simply copying |
| blindly the semantic value buffer. This is important when copying |
| raw memory is not enough, as exemplified by move-only types. |
| |
| This is currently tested by examples/c++/variant.yy and variant-11.yy. |
| But it is safer to also have a test in the main test suite. |
| |
| * tests/local.at (AT_REQUIRE_CXX_STD): Fix. |
| (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): Define/undefine |
| AT_BISON_OPTIONS. |
| * tests/c++.at (Default action): New. |
| |
| 2019-06-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: main: support -s and -p |
| * tests/local.at (AT_MAIN_DEFINE(c), AT_MAIN_DEFINE(c++)): here. |
| |
| 2019-06-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove useless support of '.' in integers |
| * tests/calc.at: here. |
| * doc/bison.texi: Avoid uninitialized variables. |
| |
| 2019-05-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: refactor checks on sets |
| It will be convenient to check sets elsewhere. |
| |
| * tests/sets.at (AT_EXTRACT_SETS): Transform into... |
| * tests/local.at (AT_SETS_CHECK): this. |
| * tests/sets.at: Adjust. |
| |
| 2019-05-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| update-test: some file names have dashes in them |
| * build-aux/update-test (log): Rename as... |
| (trace): this, to avoid clashes with the log variable. |
| (getargs): Clarify the type of the arguments. |
| |
| 2019-05-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: take SHELL into account |
| Reported by Dennis Clarke. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00053.html |
| |
| * examples/local.mk, tests/local.mk: here. |
| |
| 2019-05-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update to get gnulib translations |
| This update contains a fix needed for gnulib-po to work properly. |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-05/msg00146.html |
| |
| 2019-05-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify the purpose of symbol_type constructors |
| Reported by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2019-02/msg00006.html |
| |
| * doc/bison.texi (Complete Symbols): Here. |
| |
| 2019-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| thanks: fix an address |
| |
| 2019-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.4.1 |
| * NEWS: Record release date. |
| |
| 2019-05-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2019-05-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: remove useless apt-get update |
| The apt addons already ran it for us, it is not needed. |
| |
| * .travis.yml: here. |
| |
| 2019-05-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: beware of to_string portability issues |
| Reported by Bruno Haible. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00033.html |
| |
| * m4/bison-cxx-std.m4 (_BISON_CXXSTD_11_snippet): Check it. |
| |
| 2019-05-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: avoid Texinfo portability issues |
| Reported by Bruno Haible. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00024.html |
| Fixed by Karl Berry. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00034.html |
| |
| * doc/bison.texi: Don't specify the langage, rely on the default. |
| Avoid blank pages. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: don't run those that require f?lex when it's not available |
| Reported by Bruno Haible. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00026.html |
| |
| * configure.ac (FLEX_WORKS): New. |
| * examples/c/lexcalc/local.mk, examples/c/reccalc/local.mk: Use it. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: don't crash when libtextstyle is installed |
| Reported by neok m4700. |
| https://lists.gnu.org/archive/html/bison-patches/2019-05/msg00025.html |
| https://github.com/akimd/bison/pull/11 |
| |
| * src/complain.c (complain_init_color): style_file_prepare _needs_ a |
| string as second argument. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: avoid useless git costs |
| The final gain is small: 2h2min instead 2h9min. But that is still an |
| improvement. |
| |
| * .travis.yml (git.depth): Make the clone very shallow. |
| (git.submodules): Don't clone gnulib in test jobs. |
| (jobs.include.compile.script): Do it here. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: copyable instead of copiable |
| Reported by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00020.html |
| |
| * data/skeletons/lalr1.cc, doc/bison.texi: here. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.4 |
| * NEWS: Record release date. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix: use copiable, not copyable |
| Reported by Hans Åberg. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00017.html |
| |
| * data/skeletons/lalr1.cc, doc/bison.texi: here. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update for 3.4 |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: adjust to GCC9 diagnostics with a margin |
| * tests/synclines.at (_AT_SYNCLINES_COMPILE): Remove the margin. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: %pure-parser is obsolete |
| Reported by Uxio Prego. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00029.html |
| |
| * src/scan-gram.l, src/parse-gram.y (PERCENT_PURE_PARSER) |
| (handle_pure_parser): New. |
| Issue a deprecation/update notice for %pure-parser. |
| * doc/bison.texi (Java Bison Interface): Don't mention %pure-parser. |
| * tests/actions.at, tests/input.at: Adjust. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: clean up convention for colored diagnostics |
| * data/diagnostics.css: Rename as... |
| * data/bison-default.css: this. |
| Add the GPL header. |
| This is the convention followed by Bruno Haible in gettext. |
| Adjust dependencies. |
| * src/complain.c (complain_init_color): Use BISON_STYLE instead of |
| BISON_DIAGNOSTICS_STYLE. |
| |
| 2019-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: use a pipeline: first build the tarball, then check it |
| Build the tarball in one job, check it in many. |
| Unfortunately no real gain in overall duration. |
| With help from Clément Démoulins. |
| |
| * .travis.yml: here. |
| Remove all the tricks that were used to be able to boostrap on old |
| distros. |
| (before_install): Merge into 'script', because before_install applies |
| to all the jobs, and we don't want to run it for the 'compile' job. |
| |
| 2019-05-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix srcdir/builddir issues |
| * examples/d/local.mk, examples/java/local.mk: here. |
| |
| 2019-05-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| In preparation for Bison 3.4, revert to the version before this |
| commit: |
| |
| commit 03752516b21091cf3c4beea7e8b9bcad462d50ed |
| Author: John Darrington <john@darrington.wattle.id.au> |
| Date: Sun May 12 00:42:36 2019 +0200 |
| |
| version-etc: Ease translation. |
| |
| * lib/version-etc.c (version_etc_arn, emit_bug_reporting_address): |
| Move URLs and formatting newlines out of translatable string. |
| |
| because it changes the messages for --version, translated in |
| gnulib.po. These changes are not yet available on the translation |
| project, so we would have a regression in the set of translated |
| strings. |
| |
| 2019-05-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: do not use $< in plain rules |
| It works only in implicit rules (or with GNU Make, but not with |
| Solaris Make). |
| |
| Reported by Bruno Haible. |
| http://lists.gnu.org/archive/html/bug-bison/2019-05/msg00009.html |
| Diagnosed thanks to Kiyoshi Kanazawa. |
| |
| * examples/c/reccalc/local.mk, examples/d/local.mk, |
| * examples/java/local.mk: Don't use $< in non implicit rules. |
| |
| 2019-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.3.91 |
| * NEWS: Record release date. |
| |
| 2019-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2019-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-05-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove incorrect comment |
| * src/getargs.c: here. |
| It's documented in getargs.h anyway. |
| |
| 2019-05-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use colors for diagnostics in TeX too |
| Thanks to Gavin Smith and Patrice Dumas. |
| http://lists.gnu.org/archive/html/help-texinfo/2019-04/msg00015.html |
| |
| * doc/bison.texi (@colorWarning, @colorError, @colorNotice) |
| (@colorOff): Define for TeX and HTML. |
| (@dwarning, @derror, @dnotice): Use them. |
| |
| 2019-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update to fix location tracking in UTF-8 on Solaris |
| This update contains Bruno Haible's fix for the location tracking |
| issue reported by Kiyoshi Kanazawa. |
| |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-05/msg00020.html |
| https://lists.gnu.org/archive/html/bug-bison/2019-04/msg00020.html |
| |
| 2019-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: rename --style=debug as --color=debug |
| It is more consistent with --color=html, --color=test, etc. |
| |
| * src/getargs.h, src/getargs.c (style_debug): Rename as... |
| (color_debug): this. |
| (getargs_colors): Rename --style=debug as --color=debug. |
| Adjust dependencies. |
| |
| 2019-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: support --color=html |
| Based on a message from Bruno Haible. |
| https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=fe18e92743b7226791a5f28d7c786941a1bf8cc9 |
| |
| This does not generate proper HTML: special characters are not escaped |
| for instance. This is a hidden feature meant for Bison developers, |
| not end users. |
| |
| * src/complain.c (complain_init_color): Support --color=html. |
| |
| 2019-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: use %empty instead of comments |
| * tests/c++.at, tests/glr-regression.at: here. |
| |
| 2019-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: sort them before applying them |
| An experimental commit introduced a fix-it hint that changes comments |
| such as "/* empty */" into %empty. But in some case, because |
| diagnostics are not necessarily emitted in order, the fixits also come |
| in disorder, which must never happen, as the fixes are installed in |
| one pass. |
| |
| * src/fixits.c (fixits_register): Insert them in order. |
| |
| 2019-05-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use warning_is_enabled instead of duplicating it |
| * src/complain.c (deprecated_directive): Here. |
| |
| 2019-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: be sure to preserve the action when adding %empty |
| Currently we remove the rhs to install %empty instead. |
| |
| * src/reader.c (grammar_rule_check_and_complete): Insert the missing |
| %empty in front of the rhs, not in replacement thereof. |
| * tests/actions.at (Add missing %empty): Check that. |
| |
| 2019-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't duplicate the portability prologue |
| * tests/actions.at, tests/input.at: Don't repeat the prologue, skip it. |
| * tests/diagnostics.at, tests/local.at: Comment changes. |
| |
| 2019-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use consistently *_loc for locations |
| Some members are called foo_location, others are foo_loc. Stick to |
| the latter. |
| |
| * src/gram.h, src/location.h, src/location.c, src/output.c, |
| * src/parse-gram.y, src/reader.h, src/reader.c, src/reduce.c, |
| * src/scan-gram.l, src/symlist.h, src/symlist.c, src/symtab.h, |
| * src/symtab.c: |
| Use _loc consistently, not _location. |
| |
| 2019-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clarify the use of symbol_lists' locations |
| symbol_list features a 'location' and a 'sym_loc' member. The former |
| is expected to be set only for symbol_lists that denote a symbol (not |
| a type name), and the latter should only denote the location of the |
| symbol/type name. Yet both are set, and the name "location" is too |
| unprecise. |
| |
| * src/symlist.h, src/symlist.c (symbol_list::location): Rename as |
| rhs_loc for clarity. Move it to the "section" of data valid only |
| for rules. |
| * src/reader.c, src/scan-code.l: Adjust. |
| |
| 2019-05-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: update gnulib-po/.gitignore |
| |
| 2019-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't require a D compiler |
| Reported by Kiyoshi Kanazawa. |
| http://lists.gnu.org/archive/html/bug-bison/2019-04/msg00018.html |
| |
| * tests/atlocal.in (BISON_DC_WORKS): New. |
| * tests/local.at (AT_COMPILE_D): Use it. |
| |
| 2019-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use svg instead of png |
| * doc/bison.texi, doc/local.mk: here. |
| |
| 2019-04-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use colors |
| * doc/bison.texi (dwarning, derror, dnotice): New. |
| Use them in the diagnostics. |
| * doc/local.mk (AM_MAKEINFOFLAGS): Pass customization variables. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.3.90 |
| * NEWS: Record release date. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: add missing CLEANFILES |
| * examples: here. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: don't generate the graph reports |
| Revert "build: also generate the graph |
| reports" (4ec413da32760defe1bf382c048d1d2f67e0b58a). The problem is |
| Automake's ylwrap which does not rename y.dot with the appropriate |
| name. We should completely stop using Automake's support for Yacc, |
| which is not something I will do right now. So step back. |
| |
| * Makefile.am (AM_YFLAGS_WITH_LINES): Don't pass --graph. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: don't regen the parser during dist if unneeded |
| * Makefile.am (gen-synclines): New. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: don't ship the sources generated from the parser |
| Because some of our examples use |
| |
| %C%_reccalc_SOURCES = %D%/parse.y |
| |
| Automake ships parse.y and parse.c, and possibly parse.h when it |
| "understands" that there is one. This is not what we want: ship only |
| parser.y. Yet we still want to use Automake to compile the sources |
| from parser.y. The easiest seems to use |
| |
| nodist_%C%_reccalc_SOURCES = %D%/parse.y |
| |
| together with |
| |
| dist_reccalc_DATA = %D%/parse.y %D%/scan.l %D%/Makefile %D%/README.md |
| |
| which guarantees that parse.y is indeed shipped. |
| |
| * examples/c/calc/local.mk, examples/c/lexcalc/local.mk, |
| * examples/c/reccalc/local.mk: Always use nodist_*SOURCES for parsers, |
| let the dist_*_DATA rules do their job. |
| |
| 2019-04-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: various fixes for syntax-check |
| * cfg.mk: Disable checks where needed (e.g., we do want to check the |
| behavior with tabs). |
| (sc_at_parser_check): Remove. Unfortunately since |
| a11c144609255bc6e42c2aff83548e91cbd05425 we no longer use the './' |
| prefix to run programs in the current directory. That was so that we |
| could run Java programs like the other, although they are no run with |
| the `./` prefix (see 967a59d2c08a33f24708450561e2f8010b604523). |
| As a consequence this sc check no longer makes sense. |
| However, since now AT_PARSER_CHECK passes the `./` prefix itself, this |
| sc-check was superfluous. |
| * examples/c/reccalc/scan.l: Use memcpy, not strncpy. |
| * src/ielr.c, src/reader.c: Obfuscate "lr(0)" so that the sc-check for |
| "space before paren" does not fire. |
| * tests/diagnostics.at: Avoid space-tab, use tab-tab. |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify -fsyntax-error |
| * NEWS, doc/bison.texi: here. |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: use colors for the semantic values |
| This makes reading the trace slightly easier. It would be very nice |
| to highlight the "big steps", especially reductions. But this is a |
| private experiment: do not use it. |
| |
| * data/diagnostics.css (value): New. |
| * src/parse-gram.y: Use no delimiters and no c quotation for strings |
| to facilitate debugging. |
| (tron, troff, TRACE): New. |
| Not very elegant, but until there is support for printf-formats in |
| libtextstyle, it shall be enough. |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: give m4 precise locations |
| Currently we pass only the columns based on the screen-width, which is |
| important for the carets. But we don't pass the bytes-based columns, |
| which is important for the colors. Pass both. |
| |
| * src/muscle-tab.c (muscle_boundary_grow): Also pass the byte-based column. |
| * src/location.c (location_caret): Clarify. |
| (boundary_set_from_string): Adjust to the new format. |
| * tests/diagnostics.at (Tabulations and multibyte characters from M4): New. |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix locations coming from M4 |
| Locations issued from M4 need the byte-based column for the |
| diagnostics to work properly. Currently they were unassigned, which |
| typically resulted in partially non-colored diagnostics. |
| |
| * src/location.c (boundary_set_from_string): Fix the parsed location. |
| * src/muscle-tab.c (muscle_percent_define_default): Set the byte values. |
| * tests/diagnostics.at (Locations from M4): New. |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: show locations in full when debugging |
| This is meant for developers, not end users, that's why I attached it |
| to --trace. |
| |
| * src/getargs.h, src/getargs.c (trace_locations): New. |
| * src/location.c (location_print): Use it. |
| |
| 2019-04-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: use flush, not fflush |
| * src/complain.c: here. |
| |
| 2019-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: use gettext-h |
| We were using the gnulib's gettext module with tricks in |
| bootstrap.conf to avoid useless files. Instead, use gnulib's |
| gettext-h module. |
| |
| * .travis.yml: Force Gettext 0.18.3 on Trusty. |
| * bootstrap.conf: Use gettext-h instead of gettext. |
| (excluded_files): Remove. |
| * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19. |
| |
| 2019-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2019-04-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| api.location.type: support it in C |
| Reported by Balázs Scheidler. |
| |
| * data/skeletons/c.m4 (b4_location_type_define): Use api.location.type |
| if defined. |
| * doc/bison.texi: Document it. |
| * tests/local.at (AT_C_IF, AT_LANG_CASE): New. |
| Support Span in C. |
| * tests/calc.at (Span): Convert it to be usable in C and C++. |
| Check api.location.type with yacc.c and glr.c. |
| |
| 2019-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| updates: insert/remove %empty |
| * src/reader.c (grammar_rule_check_and_complete): Generate fixits for |
| adding/removing %empty. |
| * tests/actions.at, tests/diagnostics.at, tests/existing.at: Adjust. |
| |
| 2019-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: better rule locations |
| The "identifier and colon" of a rule is implemented as a single token, |
| but whose location is only that of the identifier (so that messages |
| about the lhs of a rule are accurate). When reducing empty rules, the |
| default location is the single point location on the end of the |
| previous symbol. As a consequence, when Bison parses a grammar, the |
| location of the right-hand side of an empty rule is based on the |
| lhs, *independently of the position of the colon*. And the colon can |
| be way farther, separated by comments, white spaces, including empty |
| lines. |
| |
| As a result, some messages look really bad. For instance: |
| |
| $ cat foo.y |
| %% |
| foo : /* empty */ |
| bar |
| : /* empty */ |
| |
| gives |
| |
| $ bison -Wall foo.y |
| foo.y:2.4: warning: empty rule without %empty [-Wempty-rule] |
| 2 | foo : /* empty */ |
| | ^ |
| foo.y:3.4: warning: empty rule without %empty [-Wempty-rule] |
| 3 | bar |
| | ^ |
| |
| The carets are not at the right column, not even the right line. |
| |
| This commit passes the colon "again" after the "id colon" token, which |
| gives more accurate locations for these messages: |
| |
| $ bison -Wall foo.y |
| foo.y:2.10: warning: empty rule without %empty [-Wempty-rule] |
| 2 | foo : /* empty */ |
| | ^ |
| foo.y:4.2: warning: empty rule without %empty [-Wempty-rule] |
| 4 | : /* empty */ |
| | ^ |
| |
| * src/scan-gram.l (SC_AFTER_IDENTIFIER): Rollback the colon, so that |
| we scan it again afterwards. |
| (INITIAL): Scan colons. |
| * src/parse-gram.y (COLON): New. |
| (rules): Parse the colon after the rule's id_colon (and possible |
| named reference). |
| * tests/actions.at, tests/conflicts.at, tests/diagnostics.at, |
| * tests/existing.at: Adjust. |
| |
| 2019-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: track byte-columns, not character-columns |
| Because the fix-its were ready the character-based columns, but were |
| applied on byte-based columns, the result with multibyte characters or |
| tabs could be "interesting". For instance |
| |
| %fixed-output_files |
| %fixed_output-files |
| %fixed-output-files |
| %define api.prefix {foo} |
| %no-default-prec |
| |
| would give |
| |
| %fixed-%fixed-output-files %fixed_output-files |
| %fixed-orefix= "foo" |
| o_default-prec |
| |
| * src/fixits.c (fixit_print, fixits_run): Work on byte-base columns. |
| * tests/input.at: Check it. |
| |
| 2019-04-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: expose a means to know whether a warning is enabled |
| * src/complain.h, src/complain.c (warning_is_enabled): New. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: let it use its own PO domain |
| See |
| https://www.gnu.org/software/gnulib/manual/html_node/Localization.html. |
| |
| * bootstrap.conf: Create gnulib-po. |
| * Makefile.am, configure.ac: Use it. |
| * po/POTFILES.in: Remove files now in gnulib. |
| * src/main.c: Open the bison-gnulib domain. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: don't try to quote special files |
| Based on a report by Todd Freed. |
| http://lists.gnu.org/archive/html/bug-bison/2019-04/msg00000.html |
| See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90034 |
| |
| * src/location.c (caret_info): Also track the file name. |
| (location_caret): Don't quote special files. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: document the change of format |
| * doc/bison.texiL Adjust output. |
| Also, Graphviz has no uppercsae V. |
| * NEWS: Explain the format change. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: copy GCC9's format |
| Currently, when we quote the source file, we indent it with one space, |
| and preserve tabulations, so there is a discrepancy and the visual |
| rendering is bad. One way out is to indent with a tab instead of a |
| space, but then this space can be used for more information. This is |
| what GCC9 does. Let's play copy cats. |
| |
| See |
| https://lists.gnu.org/archive/html/bison-patches/2019-04/msg00025.html |
| https://developers.redhat.com/blog/2019/03/08/usability-improvements-in-gcc-9/ |
| https://gcc.gnu.org/onlinedocs/gccint/Guidelines-for-Diagnostics.html#Guidelines-for-Diagnostics |
| |
| * src/location.c (location_caret): Prefix quoted lines with the line |
| number and a pipe, fitting 8 columns. |
| |
| * tests/actions.at, tests/c++.at, tests/conflicts.at, |
| * tests/diagnostics.at, tests/input.at, tests/java.at, |
| * tests/named-refs.at, tests/reduce.at, tests/regression.at, |
| * tests/sets.at: Adjust expectations. |
| Partly by "./build-aux/update-test tests/testsuite.dir/*/testsuite.log" |
| repeatedly, and partly by hand. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix the handling of multibyte characters |
| This is a pity: efforts were invested in computing correctly the |
| number of screen columns consumed by multibyte characters, but the |
| routines that do that were fed by single-byte inputs... |
| |
| As a consequence Bison never displayed correctly locations when there |
| are multibyte characters. |
| |
| * src/scan-gram.l (mbchar): New. |
| Use it instead of . in the catch-all clause. |
| * tests/diagnostics.at (Tabulations): Enhance into... |
| (Tabulations and multibyte characters): this. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: check the handling of tabulations |
| * tests/diagnostics.at (Tabulations): here. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix styling issues |
| Single point locations (equal boundaries) are troublesome, and we were |
| incorrectly ending the style in their case. Which results in an abort |
| in libtextstyle. |
| |
| There is also a confusion between columns as displayed on the |
| screen (which take into account multibyte characters and tabulations), |
| and the number of bytes. Counting the screen-column |
| incrementally (character by character) is uneasy (because of multibyte |
| characters), and I don't want to maintain a buffer of the current line |
| when displaying the diagnostic. So I believe the simplest solution is |
| to track the byte number in addition to the screen column. |
| |
| * src/location.h, src/location.c (boundary): Add the byte-column. |
| Adjust dependencies. |
| * src/getargs.c, src/scan-gram.l: Adjust. |
| * tests/diagnostics.at: Check zero-width locations. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: check the styling |
| Enable checking of styles even when libtextstyle is not installed. |
| |
| * src/getargs.h, src/getargs.c (style_debug): New. |
| (getargs_colors): Set it when --style=debug. |
| * src/complain.c (begin_use_class, end_use_class): Use it. |
| * tests/diagnostics.at: New. |
| |
| 2019-04-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: update |
| Let's prepare 3.4 with more or less what we have. Schedule some |
| features for 3.5 and 3.6. Remove obsolete stuff. |
| |
| 2019-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: sort the warning categories |
| * doc/bison.texi, src/getargs.c: here. |
| |
| 2019-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * tests/actions.at, tests/calc.at, tests/input.at: here. |
| |
| 2019-04-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| graphviz: move constant computation out of a loop |
| * src/graphviz.c (output_red): here. |
| |
| 2019-04-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix memory leak in libtextstyle |
| * src/complain.h, src/complain.c (complain_free): New. |
| * src/main.c: Use it. |
| |
| 2019-04-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove useless feature |
| * tests/calc.at (read_signed_integer): Rename as... |
| (read_integer): this. |
| We never read signs here. |
| |
| 2019-04-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: make closure() less verbose |
| * src/getargs.h, src/getargs.c (trace_closure): New. |
| * src/closure.c (closure): Use it. |
| |
| 2019-04-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: also generate the graph reports |
| * Makefile.am (AM_YFLAGS_WITH_LINES): here. |
| |
| 2019-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: minor style change |
| * data/skeletons/yacc.c: To improve consistency with other similar |
| pieces of code. |
| |
| 2019-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in lalr.c |
| * src/lalr.c (initialize_goto_follows): here. |
| |
| 2019-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * src/closure.h, src/closure.c, src/lalr.c: here. |
| |
| 2019-04-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: improve logs |
| * src/lalr.c: Move logs to a better place to understand the chronology |
| of events. |
| * src/symlist.c (symbol_list_syms_print): Don't dump core on type |
| elements. |
| |
| 2019-04-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: minor fixes |
| * doc/bison.texi: Use consistently $ and @kbd in shell examples. |
| Prefer sticking to English words: output and file instead of outfile |
| and infile. |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: use no-lines |
| The 'regen' commit in Bison's history are a nuisance. They are |
| especially big because of the #lines. Let's generate our parse |
| without these lines in the repository, but generate them in the |
| tarball. |
| |
| * Makefile.am (AM_YFLAGS_WITH_LINES): New. |
| (AM_YFLAGS): Use it. |
| (dist-hook): Regenerate the parser with #lines. |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| no-lines: avoid leaving an empty line instead of the syncline |
| Currently, with --no-lines, instead of "#line file line\n", we emit |
| "\n". Let's emit nothing. |
| |
| * data/skeletons/bison.m4 (b4_syncline): Emit at end-of-line when enabled. |
| * data/skeletons/bison.m4, data/skeletons/c.m4, data/skeletons/glr.cc, |
| * data/skeletons/lalr1.cc, src/output.c: Use dnl after b4_syncline to |
| avoid spurious empty lines. |
| |
| * tests/synclines.at (Sync Lines): Make sure that --no-lines is like |
| grep -v #line. |
| * tests/calc.at: Make sure that a rich grammar file behaves properly |
| with %no-lines. |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: use full locations for diagnostics about destructors |
| Currently we use the syncline to report errors about a symbol's |
| destructor/printer. This is not accurate (only file and line), and |
| this is incorrect: the file name is double quotes (a recent change, |
| needed to make sure we escape properly double quotes in it). And |
| worst of all: with --no-line, b4_syncline expands to nothing. |
| |
| Rather, push the locations into the backend, and use them. |
| |
| * src/muscle-tab.h, src/muscle-tab.c (muscle_location_grow): Make it |
| public. |
| * src/output.c (prepare_symbol_definitions): Use it to pubish the |
| location of the printer and destructor. |
| * data/skeletons/lalr1.java: Use complain_at instead of complain. |
| * tests/java.at (Java invalid directives): Adjust expectations. |
| * data/skeletons/bison.m4 (b4_symbol_action_location): Remove. |
| We should not use b4_syncline this way. |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: prefer errors to fatal errors |
| Fatal errors are inconvenient, and should be reserved to cases where |
| we cannot continue. Here, it could even be warnings actually: these |
| directives will simply be ignored. |
| |
| * data/skeletons/lalr1.java: Prefer error (b4_complain) to fatal |
| errors (b4_fatal). |
| * tests/java.at (Java invalid directives): New. |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: formatting changes |
| * tests/javapush.at: here. |
| |
| 2019-04-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: offer more flexibility in debugging routines |
| * src/state.h, src/state.c (state_transitions_print): New, extracted |
| from... |
| (state_transitions_set): here. |
| |
| 2019-03-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: don't overbook memory |
| I never understood why we book ngotos+1 slots for relations between |
| gotos: there are at most ngotos images, not ngotos+1 (and "includes" |
| does have cases where a goto is in relation with itself, so it's not |
| ngotos-1). |
| |
| Maybe bbf37f2534a8e5a6b4e28047f0a10903e6dc73f9 explains the +1: a bug |
| left us register a goto several times on occasion, and the +1 might |
| have been a means to avoid this problem in most cases. Now that this |
| bug is addressed, we should no longer overbook memory, if only for the |
| clarity of the code ("why ngotos+1 instead of ngotos?"). |
| |
| * src/lalr.c: A goto has at most ngotos images, not ngotos+1. |
| While at it, avoid useless repeated call to map_goto introduced in |
| bbf37f2534a8e5a6b4e28047f0a10903e6dc73f9. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: show lookback for debug |
| * src/lalr.c (lookback_print): New. |
| (build_relations): Use it. |
| Also show edges. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: don't crash when declaring the error token as an nterm |
| Reported by wcventure. |
| http://lists.gnu.org/archive/html/bug-bison/2019-03/msg00008.html |
| |
| * src/symtab.c (complain_class_redeclared): Don't print empty |
| locations. |
| There can only be empty locations for predefined symbols. And the |
| only symbol that is lexically available is the error token. So this |
| appears to be the only possible way to have an error involving an |
| empty location. |
| * tests/input.at (Symbol class redefinition): Check it. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: fix segmentation violation |
| The "includes" relation [DeRemer 1982] is between gotos, so of course, |
| for a given goto, there cannot be more that ngotos (number of gotos) |
| images. But we manipulate the set of images of a goto as a list, |
| without checking that an image was not already introduced. So we can |
| "register" way more images than ngotos, leading to a crash (heap |
| buffer overflow). |
| |
| Reported by wcventure. |
| http://lists.gnu.org/archive/html/bug-bison/2019-03/msg00007.html |
| |
| For the records, this bug is present in the first committed version of |
| Bison. |
| |
| * src/lalr.c (build_relations): Don't insert the same goto several |
| times. |
| * tests/sets.at (Build Relations): New. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| state: more debug traces |
| * src/state.c (state_transitions_set): Show the transitions. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename variables for consistency |
| * src/lalr.c: Use trans for transitions, and reds for reductions, as |
| elsewhere in the code. |
| * src/state.h: Comment changes. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gram: fix and improve log message |
| It seems that not many people read these logs: the error was |
| introduced in 2001 (3067fbef531832df1e43bbd28787655808361eed), |
| |
| * src/gram.c (grammar_dump): Fix the headers of the table: remove |
| duplicate display of "Ritem Range". |
| While at it, remove duplicate display of the rule number (and remove |
| an incorrect comment about it: these numbers _are_ equal). |
| * tests/sets.at (Reduced Grammar): Use useless rule, nterm and token |
| in the example. |
| |
| 2019-03-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: add a tool for mass updates |
| When we update some output format, too many adjustements must be made |
| by hand. This script updates most tests based on the actual output |
| made during the tests. |
| |
| * build-aux/update-test: New. |
| |
| 2019-03-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove now useless _GL_UNUSED |
| * src/getargs.c (getargs_colors): Here. |
| Useless since 4d34b06fb3a38eb050439084476a6b3e292c5680. |
| |
| 2019-03-24 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tables: use bitsets for a performance boost |
| Suggested by Yuri at |
| <http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00000.html>. |
| |
| The improvement is marginal for most grammars, but notable for large |
| grammars (e.g., PosgreSQL's postgre.y), and very large for the |
| sample.y grammar submitted by Yuri in |
| http://lists.gnu.org/archive/html/bison-patches/2012-01/msg00012.html. |
| Measured with --trace=time -fsyntax-only. |
| |
| parser action tables postgre.y sample.y |
| Before 0,129 (44%) 37,095 (99%) |
| After 0,117 (42%) 5,046 (93%) |
| |
| * src/tables.c (pos): Replace this set of integer coded as an unsorted |
| array or integers with... |
| (pos_set): this bitset. |
| |
| 2019-03-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: don't suggest api.header.include when --defines is not used |
| See 4e19ab9fcd28c9361ff08f46e5e353effb0a0520: the suggestion to |
| include the header file should not be emitted when the header is not |
| generated. |
| |
| * data/skeletons/yacc.c: Here. |
| |
| 2019-03-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: clarify variable names |
| * src/reader.c (grammar_rule_check_and_complete): When 'p' and 'lhs' |
| are aliases, prefer the latter, for clarity and consistency. |
| (grammar_current_rule_begin): Avoid 'p', current_rule suffices. |
| * src/gram.h, src/gram.c: Comment changes. |
| |
| ptdr# calc.tab.c |
| |
| 2019-03-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style changes |
| * src/location.c (location_caret): Clarify a bit. |
| |
| 2019-03-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: use gnulib's libtextstyle-optional |
| Bruno Haible just added a default implementation of libtextstyle's |
| interface when the library is not available. |
| https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00025.html |
| |
| * gnulib: Update. |
| * bootstrap.conf: Replace libtextstyle with libtextstyle-optional. |
| * src/complain.c, src/getargs.c: Remove now useless cpp guards. |
| |
| 2019-03-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: fix handling of style in limit cases |
| * src/location.c (location_caret): Beware of the cases where the start |
| and end columns are the same, or when the location is multilines. |
| |
| 2019-03-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| warnings: don't use _Noreturn with G++ 4.7 in C++98 mode |
| The timevar and bitset modules now use the c99 module which causes |
| $CXX to now include -std=gnu++11 when possible. Unfortunately, G++ |
| 4.7 does not implement [[noreturn]] in C++11 mode, so our tests of |
| glr.cc (which uses _Noreturn) fail with |
| |
| input.cc:954:1: error: expected unqualified-id before '[' token |
| |
| right before [[noreturn]]. 4.8 works fine. |
| |
| * data/skeletons/c.m4 (b4_attribute_define): Do not use [[noreturn]] |
| with GCC 4.7. |
| |
| 2019-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: tests: use more a natural approach for the scanner |
| See f8408562f8439654261418406296e4108d2a995f. |
| |
| * tests/calc.at: Stop imitating the C API. |
| Prepare more tests to run in the future. |
| %verbose works as expected (what a surprise, it's unrelated to the |
| skeleton...). |
| |
| 2019-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename spec_defines_file as spec_header_file |
| The variable spec_defines_file denotes the name of the generated |
| header. Its name is derived from --defines/%defines, whose name in |
| turn is derived from the fact that the header, in Yacc, contained the |
| |
| Not only does the header now contain a lot more than just the token |
| definitions, but we no longer even generate macros, but an enum... |
| |
| Let's modernize our vocabulary. |
| |
| * src/files.h, src/files.c (spec_defines_file): Rename as... |
| (spec_header_file): this. |
| |
| 2019-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: provide a means to include the header in the implementation |
| Currently when --defines is used, we generate a header, and paste an |
| exact copy of it into the generated parser implementation file. Let's |
| provide a means to #include it instead. |
| |
| We don't do it by default because of the Autotools' ylwrap. This |
| program wraps invocations of yacc (that uses a fixed output name: |
| y.tab.c, y.tab.h, y.output) to support a more modern naming |
| scheme (dir/foo.y -> dir/foo.tab.c, dir/foo.tab.h, etc.). It does |
| that by renaming the generated files, and then by running sed to |
| propagate these renamings inside the files themselves. |
| |
| Unfortunately Automake's Makefiles uses Bison as if it were Yacc (with |
| --yacc or with -o y.tab.c) and invoke bison via ylwrap. As a |
| consequence, as far as Bison is concerned, the output files are |
| y.tab.c and y.tab.h, so it emits '#include "y.tab.h"'. So far, so |
| good. But now ylwrap processes this '#include "y.tab.h"' into |
| '#include "dir/foo.tab.h"', which is not guaranteed to always work. |
| |
| So, let's do the Right Thing when the output file is not y.tab.c, in |
| which case the user should %define api.header.include. Binding this |
| behavior to --yacc is tempting, but we recently told people to stop |
| using --yacc (as it also enables the Yacc warnings), but rather to use |
| -o y.tab.c. |
| |
| Yacc.c is the only skeleton concerned: all the others do include their |
| header. |
| |
| * data/skeletons/yacc.c (b4_header_include_if): New. |
| (api.header.include): Provide a default value when the output is not |
| y.tab.c. |
| * src/parse-gram.y (api.header.include): Define. |
| |
| 2019-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: don't link against LIBS |
| * tests/local.at (AT_COMPILE_D): Don't pass LIBS, dmd does not like |
| being given -lintl. |
| |
| 2019-03-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| address warnings from GCC's UB sanitizer |
| Running with CC='gcc-mp-8 -fsanitize=undefined' revealed Undefined |
| Behaviors. |
| https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00008.html |
| |
| * src/state.c (errs_new): Don't call memcpy with NULL as source. |
| * src/location.c (add_column_width): Don't assume that the column |
| argument is nonnegative: the scanner sometimes "backtracks" (e.g., see |
| ROLLBACK_CURRENT_TOKEN and DEPRECATED) in which case we can have |
| negative column numbers (temporarily). |
| Found in test 3 (Invalid inputs). |
| |
| 2019-03-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: use libtextstyle for colored output |
| Bruno Haible released libtextstyle, a library for colored output based |
| on CSS. Let's use it to generate colored diagnostics, provided |
| libtextstyle is available. |
| |
| See |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00176.html |
| https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00073.html |
| https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00084.html |
| https://lists.gnu.org/archive/html/bison-patches/2019-03/msg00007.html |
| |
| * bootstrap.conf (gnulib_modules): Use libtextstyle when possible. |
| * data/diagnostics.css: New. |
| * src/complain.c (begin_use_class, end_use_class, flush) |
| (severity_style, complain_init_color): New. |
| Use them. |
| * src/getargs.c (getargs_colors): New. |
| (getargs): Use it. |
| Skip --color and --style. |
| * src/location.h, src/location.c (location_print): Use a style. |
| |
| * tests/bison.in: Force --color=yes when stderr is a tty. |
| * tests/local.at: Disable colors during the test suite. |
| * tests/input.at: Adjust expectations to the extra options passed on |
| the command line. |
| |
| 2019-03-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean up complain.c |
| * src/complain.c (severity_prefix): New. |
| (error_message): Take the severity as argument, instead of the prefix. |
| |
| 2019-03-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: emit the header before the implementation file |
| * data/skeletons/yacc.c: here. |
| This is more logical for the time stamps, but it's also required by |
| following patches: the shared declarations are also in charge of |
| handling api.value.type=union. So far, they are run in the |
| implementation file in both cases (with or without header). But if we |
| run them only in the header, then the implementation file is emited |
| with incorrect support for api.value.type=union. |
| Arguably we should not have such dependencies. This is because we |
| have side-effects in our backend (redefining the symbols' type and |
| type_tag). In the future we should find a better solution for this, |
| without sacrificing the independence of the backend from bison |
| itself (i.e., I don't think we should handle api.value.type=union in |
| bison, leave it to m4). |
| |
| 2019-03-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| simplify the generated #line |
| Currently we generate things like: |
| |
| #line 683 "src/parse-gram.y" /* yacc.c:316 */ |
| |
| The first part is of course very important: compilers point the users |
| to their grammar file rather than into the generated parser. The |
| second part points to the place in the skeletons that generated this |
| piece of code. |
| |
| This dependency on the Bison skeletons generates lots of useless 'git |
| diff'. This location is useless for the regular user (who does not |
| care about the skeletons) and is actually not useful for Bison |
| developpers too (I never used this to locate the code in skeletons |
| that generated output). So disable it completely. If someone thinks |
| this was actually useful, a %define variable should be provided to |
| control the level of verbosity of '#line', in replacement of |
| --no-lines. |
| |
| So now, generate: |
| |
| #line 683 "src/parse-gram.y" |
| |
| * data/skeletons/bison.m4 (b4_sync_end): Emit nothing. |
| |
| 2019-03-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-03-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove duplicates |
| * tests/regression.at (Invalid inputs, Invalid inputs with {}): |
| Remove, there are exact copies of them in input.at. |
| |
| 2019-03-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: simplify the API to build the scanner of the example |
| * examples/d/calc.y (calcLexer): Add an overload for File. |
| Use it. |
| |
| 2019-03-01 H. S. Teoh <hsteoh@quickfur.ath.cx> |
| |
| d: modernize the scanner of the example |
| https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00121.html |
| |
| * examples/d/calc.y (CalcLexer): Stop shoehorning C's API into D: use |
| a range based approach in the scanner, rather than some imitation of |
| getc/ungetc. |
| (main): Adjust. |
| |
| 2019-03-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: tests: use fewer global variables |
| * tests/calc.at: Move 'input' into the scanner. |
| |
| 2019-02-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: clarify the count of lookaheads |
| * src/lalr.c (state_lookahead_tokens_count): Remove wierd `+=` that is |
| actually an `=`. |
| |
| 2019-02-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: clarify the API |
| * src/state.h, src/state.c (state_reduction_find): Clarify. |
| Die on errors. |
| * src/lalr.c (goto_list_new): New. |
| Use it. |
| |
| 2019-02-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: improve traces |
| * src/lalr.c (follows_print): Just print the symbol tag. |
| Take and print a title. |
| Indent the output. |
| Use it to print the various steps of the computation. |
| (lookahead_tokens_print): Fix a lie: the number displayed is not the |
| number of tokens. |
| Don't display states that don't even have reductions. |
| |
| 2019-02-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: print the 'reads' relation |
| * src/relation.h, src/relation.c (relation_print): Accept and use a |
| title. |
| Don't print empty rows. |
| Indent the output. |
| Adjust dependencies. |
| * src/lalr.c (initialize_goto_follows): Print 'reads' in traces. |
| |
| 2019-02-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * src/lr0.c: here. |
| |
| 2019-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| dlang: initial changes to run the calc tests on it |
| * configure.ac (DCFLAGS): Define. |
| * tests/atlocal.in: Receive it. |
| * data/skeletons/d.m4 (api.parser.class): Remove spurious YY. |
| * data/skeletons/lalr1.d (yylex): Return an int instead of a |
| YYTokenType, so that we can use characters as tokens. |
| * examples/d/calc.y: Adjust. |
| * tests/local.at: Initial support for D. |
| (AT_D_IF, AT_DATA_GRAMMAR(D), AT_YYERROR_DECLARE(d)) |
| (AT_YYERROR_DECLARE_EXTERN(d), AT_YYERROR_DEFINE(d)) |
| (AT_MAIN_DEFINE(d), AT_COMPILE_D, AT_LANG_COMPILE(d), AT_LANG_EXT(d)): |
| New. |
| * tests/calc.at: Initial support for D. |
| * tests/headers.at |
| |
| 2019-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: improve the example |
| * examples/d/calc.y: Exit with failure on errors. |
| Remove useless operators (=, !) meant for the test suite. |
| Add unary + for symmetry. |
| * examples/d/calc.test: Adjust expectations. |
| |
| 2019-02-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style changes |
| * tests/local.at AT_YYERROR_DEFINE(java): Use more consistent names. |
| |
| 2019-02-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: eliminate useless indirection |
| * src/relation.h, src/relation.c (relation_digraph): Don't take the |
| biteetv as a pointer, it is already a pointer (as it's an array). |
| |
| 2019-02-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename function for clarity |
| Commit db34f7988941444bdc5f2b6adcf7fb83648f9a18 renames the variable F |
| as goto_follows, but forgot to rename this function. |
| |
| * src/lalr.c (initialize_F): Rename as... |
| (initialize_goto_follows): this. |
| |
| 2019-02-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr: more debug traces |
| I need to be able to read includes and goto_follows. |
| |
| * src/relation.h, src/relation.c (relation_print): Provide a means to |
| pretty-print the nodes of the relation. |
| * src/lalr.c (goto_print, follows_print): New. |
| (set_goto_map): Use goto_print. |
| (build_relations): Show INCLUDES. |
| (compute_FOLLOWS): Rename as... |
| (compute_follows): this. |
| Show FOLLOWS. |
| |
| 2019-02-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor changes |
| * examples/c/calc/calc.y, src/lalr.c: Reduce scope. |
| * src/gram.c: Prefer < to >. |
| |
| 2019-02-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clarify the computation of the lookback edges |
| * src/lalr.c (build_relations): Reduce the scopes. |
| Instead of keeping rp alive in two different loops, clarify the second |
| one by having an index on the path we traverse (i.e., use that index |
| to compute the source state _and_ the symbol that labels the |
| transition). |
| This allows to turn an obscure 'while'-loop in a clearer (IMHO) |
| 'for'-loop. We also consume more variables (by introducing p instead |
| of making more side effects on length), but we're in 2019, I don't |
| think this matters. What does matter is that (IMHO again), this is |
| now clearer. |
| Also, use clearer names. |
| |
| 2019-02-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in tables.c |
| * src/tables.c: here. |
| * src/lalr.c: Prefer < to >. |
| |
| 2019-02-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: formatting changes |
| * data/skeletons/d.m4, data/skeletons/lalr1.d: Avoid trailing spaces. |
| |
| 2019-02-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: remove stray examples |
| * examples/c/reentrant-calc: Remove. |
| I did not mean to include this example, it was replaced by |
| examples/c/reccalc. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: factor the execution of Java parsers |
| * tests/local.at (AT_MAIN_DEFINE(java)): Exit failure on failure. |
| (AT_PARSER_CHECK): If in Java, run AT_JAVA_PARSER_CHECK. |
| * tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Simplify. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix a Java tests |
| * tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Fix quotation error. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: simplify AT_PARSER_CHECK usage |
| Currently the caller must specify the ./ prefix to its command. Let's |
| avoid that: it will be nicer to read, make it easier to have a version |
| that works for Java and C/C++. |
| |
| * tests/local.at (AT_PARSER_CHECK): Prefix the command with ./. |
| Adjust callers. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: java: factor the definition of Position |
| * tests/local.at (AT_JAVA_POSITION_DEFINE): New. |
| * tests/java.at, tests/javapush.at: Use it. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: dispatch per lang on AT_DATA_GRAMMAR |
| * tests/java.at: Do that. |
| * tests/conflicts.at: Simplify. |
| |
| * tests/actions.at, tests/c++.at, tests/input.at, tests/local.at, |
| * tests/named-refs.at: |
| Use AT_BISON_OPTION_PUSHDEFS/AT_BISON_OPTION_POPDEFS. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: dispatch per lang on the definition of yylex |
| * tests/local.at (AT_YYLEX_DEFINE): Dispatch on the language. |
| (AT_YYLEX_DEFINE(java)): New. |
| * tests/conflicts.at, tests/java.at: Use it. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: de-duplicate |
| * tests/conflicts.at (AT_YYLEX_PROTOTYPE): Don't define it, leave that |
| task to AT_DATA_GRAMMAR. |
| But be honest: tell AT_BISON_OPTION_PUSHDEFS all the options we use. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: formatting changes |
| * tests/local.at: here. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| graph: prefer *.gv to *.dot |
| Reported by Hans Åberg. |
| https://lists.gnu.org/archive/html/help-bison/2019-02/msg00064.html |
| |
| * src/files.c (spec_graph_file): Use `*.gv` when 3.4 or better, |
| otherwise `*.dot`. |
| * src/parse-gram.y (handle_require): Pretend we are already 3.4. |
| * doc/bison.texi: Adjust. |
| * tests/local.at, tests/output.at: Exercise this. |
| |
| 2019-02-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fixes to please older versions of Texinfo |
| Currently, we have errors: |
| |
| ./doc/bison.texi:13005: node `History' lacks menu item for `Yacc' despite being its Up target |
| |
| * doc/bison.texi (History): Add the local menu. |
| While at it, add a few index entries. |
| |
| 2019-02-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: style changes |
| * doc/bison.texi (Bibliography): Add [Corbett 1984] and [Johnson |
| 1978]. |
| (History): Use them. |
| And other minor changes. |
| |
| 2019-02-17 Eric S. Raymond <esr@thyrsus.com> |
| |
| doc: a history section |
| * bison.texi (A Brief History of the Greater Ungulates): New section. |
| |
| 2019-02-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add an example with a reentrant parser in Flex+Bison |
| Suggested by Eric S. Raymond. |
| https://lists.gnu.org/archive/html/bison-patches/2019-02/msg00066.html |
| |
| * examples/c/reentrant-calc/Makefile, examples/c/reentrant-calc/README.md, |
| * examples/c/reentrant-calc/parse.y, examples/c/reentrant-calc/scan.l |
| * examples/c/reentrant-calc/lexcalc.test, |
| * examples/c/reentrant-calc/local.mk: |
| New. |
| |
| 2019-02-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fixes in lexcalc |
| * examples/c/lexcalc/parse.y: Formatting/comment changes. |
| (line): Don't return a value. |
| Print the result here, which avoids printing a value for lines with an |
| error. |
| (yyerror): Be sure to increment the pointed, not the pointer... |
| * examples/c/lexcalc/lexcalc.test: Check errors. |
| * examples/c/lexcalc/local.mk: Fix a dependency. |
| |
| 2019-02-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix distcheck |
| Regression introduced in 05a80977798abf472bfc11c477751303ad604733. |
| |
| * doc/local.mk (bison.help): Don't depend on the path of the bison |
| executable. |
| |
| 2019-02-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: move pkgdatadir to files.* |
| Let's move it to a more logical place. |
| |
| * src/output.h, src/output.c (pkgdatadir): Move to... |
| * src/files.h, src/files.c: here. |
| |
| 2019-02-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename cleanup_caret as caret_free |
| * src/location.c, src/location.h, src/main.c: here. |
| |
| 2019-02-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid default in switch on enums |
| * src/assoc.c (assoc_to_string): here. |
| |
| 2019-02-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: run tests/bison, not src/bison |
| * doc/local.mk: Don't run src/bison, as it expects to find all its |
| files installed. Instead, run tests/bison which is ready to run in |
| builddir. |
| |
| 2019-02-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-02-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment and names changes in map_goto |
| * src/lalr.h, src/lalr.c: Use clearer names. |
| |
| 2019-02-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: support parse.assert |
| While hacking on the computation of the automaton, I had yystate being |
| equal to -1, and the parser loops. Let's catch this when |
| parser.assert is enabled. |
| |
| * data/skeletons/yacc.c (YY_ASSERT): New. |
| Use it. |
| Not using the name YYASSERT, to make it clear that this is private. |
| glr.c should probably move to YY_ASSERT too. |
| Also, while at it, report 'Entering state...' even before growing the |
| stacks. |
| |
| 2019-02-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: depend on Bison's sources |
| * examples/c/calc/local.mk, examples/c/lexcalc/local.mk, |
| * examples/c/mfcalc/local.mk, examples/c/rpcalc/local.mk: |
| Regenerate the files if dependencies have changed. |
| |
| 2019-02-12 Eric S. Raymond <esr@thyrsus.com> |
| |
| README: point to README-hacking |
| * README (Build from git): New. |
| * README-hacking: Describe easier submodule update. |
| |
| 2019-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: a single space before closing comments |
| I don't think this style: |
| |
| /* If buffer is full, make it bigger. */ |
| if (i == length) |
| { |
| length *= 2; |
| symbuf = (char *) realloc (symbuf, length + 1); |
| } |
| /* Add this character to the buffer. */ |
| symbuf[i++] = c; |
| /* Get another character. */ |
| c = getchar (); |
| |
| or more readable than |
| |
| /* If buffer is full, make it bigger. */ |
| if (i == length) |
| { |
| length *= 2; |
| symbuf = (char *) realloc (symbuf, length + 1); |
| } |
| /* Add this character to the buffer. */ |
| symbuf[i++] = c; |
| /* Get another character. */ |
| c = getchar (); |
| |
| Actually, I think the latter is more readable, and helps with width |
| issues in the PDF. As a matter of fact, I would happily move to // |
| only for single line comments. |
| |
| * doc/bison.texi: A single space before closing comments. |
| |
| 2019-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: modernize the examples |
| * doc/bison.texi: Prefer 'fun' to 'fnct'. |
| Reduce local variable scopes. |
| Prefer strdup to malloc + strcpy. |
| Avoid gratuitous casts. |
| Use simpler names (e.g., 'name' instead of 'fname'). |
| Avoid uses of 0 for NULL. |
| Avoid using NULL when possible (e.g., 'p' instead of 'p != NULL'). |
| Prefer union names to casts (e.g. 'yylval.VAR = s' instead of |
| '*((symrec**) &yylval) = s'). |
| Give arguments a name in fun declarations. |
| Use our typedefs instead of duplicating them (func_t). |
| Stop promoting an explicit $$ = $1;, it should be implicit (Bison |
| might be able to eliminate useless chain rules). |
| Help a bit Texinfo by making smaller groups. |
| Rely on the C compiler to call function pointers (prefer |
| '$1->value.fun ($3)' to (*($1->value.fnctptr))($3)'). |
| |
| 2019-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add a simple infix calculator in C |
| Currently we have no simple example: rpcalc in reverse Polish, mfcalc |
| has functions, and lexcalc is using lex. |
| |
| * examples/c/calc/Makefile, examples/c/calc/calc.y, |
| * examples/c/calc/calc.test, examples/c/calc/local.mk: New. |
| |
| 2019-02-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix annoying off-by-one errors |
| * examples/extexi: Since we issue #lines only at the beginning of |
| @example, leave empty line when removing content (such as @comment |
| lines), otherwise the lines that follow have incorrect source line |
| location. This leaves ugly empty lines, but they are removed when you |
| tidy the output for the end user: sequences of \n are mapped to at |
| most two sucessive \n. |
| |
| 2019-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: factor printing of rules |
| * src/gram.h, src/gram.c (rule_print): New. |
| Use it. |
| |
| 2019-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use lower case for variable names |
| * src/relation.c (INDEX, VERTICES): Rename as... |
| (indexes, vertices): these. |
| |
| 2019-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in relation.c |
| |
| 2019-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| report: stop counting uselessly |
| * src/print.c (print_nonterminal_symbols): Replace left_count and |
| right_count with on_left and on_right. |
| |
| 2019-02-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| report: clean up its format |
| The format is inconsistent. For instance most sections are |
| indented (including "Terminals unused in grammar" for instance), but |
| the sections "Terminals, with rules where they appear" and |
| "Nonterminals, with rules where they appear" are not. Let's indent |
| them. Also, these two sections try to wrap the output to avoid lines |
| too long. Yet we don't do that in the rest of the file, for instance |
| when listing the lookaheads of an item. |
| |
| For instance in the case of Bison's parse-gram.output we go from: |
| |
| Terminals, with rules where they appear |
| |
| "end of file" (0) 0 |
| error (256) 28 88 |
| "string" <char*> (258) 9 13 16 17 20 23 24 109 116 |
| [...] |
| |
| Nonterminals, with rules where they appear |
| |
| $accept (58) |
| on left: 0 |
| input (59) |
| on left: 1, on right: 0 |
| prologue_declarations (60) |
| on left: 2 3, on right: 1 3 |
| prologue_declaration (61) |
| on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 |
| 25 26 27 28 29, on right: 3 |
| [...] |
| |
| to |
| |
| Terminals, with rules where they appear |
| |
| "end of file" (0) 0 |
| error (256) 28 88 |
| "string" <char*> (258) 9 13 16 17 20 23 24 109 116 |
| [...] |
| |
| Nonterminals, with rules where they appear |
| |
| $accept (58) |
| on left: 0 |
| input (59) |
| on left: 1 |
| on right: 0 |
| prologue_declarations (60) |
| on left: 2 3 |
| on right: 1 3 |
| prologue_declaration (61) |
| on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 |
| on right: 3 |
| [...] |
| |
| * src/print.c (END_TEST): Remove. |
| (print_terminal_symbols): Don't try to wrap the output. |
| (print_nonterminal_symbols): Likewise. |
| Make two different lines for occurrences on the left, and occurrence |
| on the rhs of the rules. |
| Indent by 4 and 8, not 3. |
| * src/reduce.c (reduce_output): Indent by 4, not 3. |
| |
| * tests/conflicts.at, tests/existing.at, tests/reduce.at, |
| * tests/regression.at, tests/report.at: |
| Adjust. |
| |
| 2019-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| add LR(0) output |
| This should not be used to generate parsers. My point is actually to |
| facilitate debugging (when tweaking the generation of the LR(0) |
| automaton for instance, not carying -yet- about lookaheads). |
| |
| * src/reader.c (prepare_percent_define_front_end_variables): Add lr(0). |
| * src/conflicts.c (set_conflicts): Be robust to reds not having |
| lookaheads at all. |
| * src/ielr.c (LrType, lr_type_get): Adjust. |
| (ielr): Implement support for LR(0). |
| * src/lalr.c (lalr_free): Don't free LA when it's not computed. |
| |
| 2019-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in derives.c |
| * src/derives.c: here. |
| |
| 2019-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes and refactoring in state.c |
| * src/state.h, src/state.c: Comment changes. |
| (transitions_to): Take a state* as argument. |
| * src/lalr.h, src/lalr.c: Comment changes. |
| (initialize_F): Use clear variable names. |
| |
| 2019-02-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix typos |
| * tests/reduce.at: here. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch maint |
| * maint: |
| maint: post-release administrivia |
| version 3.3.2 |
| style: minor fixes |
| NEWS: named constructors are preferable to symbol_type ctors |
| gram: fix handling of nterms in actions when some are unused |
| style: rename local variable |
| CI: update the ICC serial number for travis-ci.org |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.3.2 |
| * NEWS: Record release date. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor fixes |
| * NEWS, src/reduce.c, src/reduce.h: Use 'nonterminal'. |
| Fix comments. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: named constructors are preferable to symbol_type ctors |
| Reported by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00043.html |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| gram: fix handling of nterms in actions when some are unused |
| Since Bison 3.3, semantic values in rule actions (i.e., '$...') are |
| passed to the m4 backend as the symbol number. Unfortunately, when |
| there are unused symbols, the symbols are renumbered _after_ the |
| numbers were used in the rule actions. As a result, the evaluation of |
| the skeleton failed because it used non existing symbol numbers. |
| Which is the happy scenario: we could use numbers of other existing |
| symbols... |
| |
| Reported by Balázs Scheidler. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00044.html |
| |
| Translating the rule actions after the symbol renumbering moves too |
| many parts in bison. Relying on the symbol identifiers is more |
| troublesome than it might first seem: some don't have an |
| identifier (tokens with only a literal string), some might have a |
| complex one (tokens with a literal string with characters special for |
| M4). Well, these are tokens, but nterms also have issues: "dummy" |
| nterms (for midrule actions) are named $@32 etc. which is risky for |
| M4. |
| |
| Instead, let's simply give M4 the mapping between the old numbers and |
| the new ones. To avoid confusion between old and new numbers, always |
| emit pre-renumbering numbers as "orig NUM". |
| |
| * data/README: Give details about "orig NUM". |
| * data/skeletons/bison.m4 (__b4_symbol, _b4_symbol): Resolve the |
| "orig NUM". |
| * src/output.c (prepare_symbol_definitions): Pass nterm_map to m4. |
| * src/reduce.h, src/reduce.c (nterm_map): Extract it from |
| nonterminals_reduce, to make it public. |
| (reduce_free): Free it. |
| * src/scan-code.l (handle_action_dollar): When referring to a nterm, |
| use "orig NUM". |
| * tests/reduce.at (Useless Parts): New, based Balázs Scheidler's |
| report. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: strengthen some of them |
| * tests/reduce.at: Check that the generated parsers are proper C. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: rename data/README as data/README.md |
| So that it is properly rendered by online git services. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/symlist.c (symbol_list_free): New. |
| |
| 2019-02-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer snprintf to sprintf |
| * src/symtab.c (dummy_symbol_get): There's no need for the buffer to |
| be so big and static. |
| Use snprintf for safety. |
| |
| 2019-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment and name changes |
| * src/output.c (prepare_symbol_names): here. |
| * src/reader.c: Remove obsolete comment. |
| * src/scan-code.l: Use || for Boolean or. |
| |
| 2019-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * src/reader.c, src/scan-code.l: here. |
| |
| 2019-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| make: regenerate the example parsers when bison changes |
| * Makefile.am (dependencies): Also depend on Bison's sources. |
| |
| 2019-02-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename local variable |
| * src/reduce.c (nonterminals_reduce): Rename nontermmap as nterm_map. |
| We will expose it. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gram: detect and report (in debug traces) useless chain rules |
| A rule is a useless chain iff it's a chain (aka unit, or injection) |
| rule (i.e., the RHS has length 1), and it's useless (it has no used |
| defined semantic action). |
| |
| * src/gram.h, src/gram.c (rule_useless_chain_p): New. |
| (grammar_dump): Report useless chain rules. |
| * tests/sets.at: Check the traces. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| lr(0): more debug traces |
| * src/lr0.c (core_print, kernel_print): New. |
| Use them. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| lr(0): remove useless conditional |
| * src/lr0.c (new_itemsets): There's no harm in setting a Boolean |
| several times. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: sort includes and avoid assignments |
| * src/symtab.c: Sort includes. |
| * src/gram.c (grammar_rules_print_xml): Avoid assignments to define |
| 'usefulness'. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use item_rule |
| * src/print-graph.c, src/print-xml.c: here. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gram: factor the printing of items and the computation of their rule |
| There are several places where we need to recover the rule from an |
| item, let's factor that into item_rule. We also want to print items |
| in a nice way: we do it when generating the *output file, but it is |
| also useful in debug messages. |
| |
| * src/gram.h, src/gram.c (item_rule, item_print): New. |
| * src/print.c (print_core): Use them. |
| * src/state.h, src/state.c: Propagate constness. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in print-xml |
| * src/print-xml.c: here. |
| |
| 2019-01-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check XML and dot reports |
| * tests/report.at: Here. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: update the ICC serial number for travis-ci.org |
| On travis-ci.org, there are five concurrent slaves, instead of three |
| on travis-ci.com. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: update the ICC serial number for travis-ci.org |
| On travis-ci.org, there are five concurrent slaves, instead of three |
| on travis-ci.com. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * src/lr0.c, src/state.c, src/state.h: here. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| closure: initialize it once for all |
| The memory allocated by 'closure' (and some data such as 'fderives') |
| is used to computed a state's full itemset from its core. This is |
| needed during the construction of the LR(0) automaton, and the memory |
| is reclaimed immediately afterwards. |
| |
| Unfortunately the reports (graph, text, xml) also need this |
| information when describing the states with their full itemsets. As a |
| consequence the memory was allocated again, fderives computed again |
| too, and more --trace reports are generated which only duplicate what |
| was already reported. |
| |
| Stop that. It does mean that we release the memory later (hence the |
| peak memory usage is higher now), but I don't think that's a problem |
| today. |
| |
| * src/lr0.c (generate_states): Don't call closure_free. |
| * src/state.c (states_free): Do it here. |
| (for symmetry with closure_new which is called in generate_states). |
| * src/print-graph.c, src/print-xml.c, src/print.c: You can now expect |
| the closure module to be functional. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename closure_* functions as closure_* |
| This is more consistent with the other files. |
| |
| * closure.h, closure.c (new_closure, free_closure): Rename as... |
| (closure_new, closure_free): this. |
| Adjust dependencies. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| lr0: use a bitset for the set of "shiftable symbols" |
| This will make it easier to add new elements (that might already be |
| part of shift_symbol) without having to worry about the size of |
| shift_symbol (which is currently a fixed size vector). |
| |
| I could not measure any significant differences in performances in the |
| generation of LR(0) automaton (benched on gramamrs of Ruby, C, and C++). |
| |
| * src/lr0.c (shift_symbol): Make it a bitset. |
| |
| 2019-01-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| add -fsyntax-only |
| When debugging Bison itself, this is very handy, especially when |
| tweaking the frontend badly enough to break the backends. It can also |
| be used to check a grammar. |
| |
| * src/getargs.h, src/getargs.c (feature_syntax_only): New. |
| (feature_args, feature_types): Adjust. |
| * src/main.c (main): Use it. |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: beware of collisions on status |
| * src/symtab.h (status): Rename as... |
| (declaration_status): this, to avoid colliding with status, the |
| argument of 'usage'. |
| 'status' seems a tad too general to be used only here. |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| usage: document -ffixit |
| * src/getargs.c (usage): Document -ffixit. |
| Document the aliases of -f. |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in state.c and ielr.c |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge branch 'maint' |
| * maint: |
| maint: post-release administrivia |
| version 3.3.1 |
| yacc: issue warnings, not errors, for Bison extensions |
| style: formatting changes in NEWS and complain.c |
| tests: don't depend on the user's definition of SHELL |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.3.1 |
| * NEWS: Record release date. |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: issue warnings, not errors, for Bison extensions |
| Reported by Kiyoshi Kanazawa. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00029.html |
| |
| * src/getargs.c (getargs): Let --yacc imply -Wyacc, not -Werror=yacc. |
| * tests/input.at: Adjust. |
| * doc/bison.tex (Bison Options): Document. |
| |
| 2019-01-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes in NEWS and complain.c |
| |
| 2019-01-27 Kiyoshi Kanazawa <yoi_no_myoujou@yahoo.co.jp> |
| |
| tests: don't depend on the user's definition of SHELL |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00031.html |
| |
| * examples/test (SHELL): Set it to /bin/sh. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| traces: always print the reduced grammar and fix it |
| * src/gram.c (grammar_dump): Print the effective number first instead |
| of last. And fix it (remove the incorrect "+1"). |
| Use t/f for Booleans. |
| * src/reduce.c: When asked, always print the reduced grammar, even if |
| there was nothing useless. |
| * tests/sets.at (Reduced Grammar): Check that. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename LR0.* as lr0.* |
| Let's stick to lower case for file names. |
| |
| * src/LR0.h, src/LR0.c: Rename as... |
| * src/lr0.h, src/lr0.c: these. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename print_graph.* as print-graph.* |
| These are the only files with _. |
| |
| * src/print_graph.h, src/print_graph.c: Rename as... |
| * src/print-graph.h, src/print-graph.c: these. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: various fixes |
| * src/gram.c: Use consistent variable names. |
| Prefix prefix unary operators. |
| (grammar_dump): Use rule_rhs_length instead of duplicating it. |
| * src/reduce.c: Avoid useless variables. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes in gram.h |
| * src/gram.h: Shorten comments. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.3 |
| * NEWS: Record release date. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix comment |
| * data/skeletons/c++.m4: here. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * data/skeletons/lalr1.cc: Add dnl. |
| * data/skeletons/bison.m4: Comment the use of dnl. |
| |
| 2019-01-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: run the printer/destructor test on glr.cc |
| * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust for |
| glr.cc, and use it. |
| |
| 2019-01-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-01-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| --update: when used, do not generate the output files |
| It is inconvenient that we also generate the output files when we |
| update the grammar file, and it's somewhat unexpected. Let's not do |
| that. |
| |
| * src/main.c (main): Skip generation when --update is passed. |
| * src/getargs.c (usage): Update the help message. |
| * doc/bison.texi (Bison Options): Likewise. |
| * tests/input.at: Check that we don't generate the output. |
| |
| 2019-01-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: let redundant definitions be only warnings |
| After all, this is clearly harmless. |
| |
| * src/muscle-tab.c (muscle_percent_define_insert): Let equal |
| definitions of a %define variable be only a warning. |
| Adjust test cases. |
| |
| 2019-01-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: improve check for updated variable names |
| * tests/input.at ("%define" backward compatibility): Don't define |
| twice "api.namespace", so that we don't get an error, which stops the |
| process too soon to see an error about the value given to |
| 'lr.keep-unreachable-state'. |
| |
| 2019-01-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: remove redundancy |
| Don't repeat the name of the warning in the sub messages. E.g., |
| remove the second "[-Wother]" in the following message |
| |
| foo.y:2.1-27: warning: %define variable 'parse.error' redefined [-Wother] |
| %define parse.error verbose |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| foo.y:1.1-27: previous definition [-Wother] |
| %define parse.error verbose |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| * src/complain.c (error_message): Don't print the warning type when |
| it's indented. |
| Adjust test cases. |
| |
| 2019-01-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: better "scope" a workaround for GCC |
| * data/skeletons/lalr1.cc: Enable it only for GCC 4.8 and before. |
| |
| 2019-01-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: address -Wweak-vtables warnings |
| Reported by Derek Clegg |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00021.html |
| |
| aux/parser-internal.h:429:12: error: 'syntax_error' has no out-of-line virtual |
| method definitions; its vtable will be emitted in every translation unit |
| [-Werror,-Wweak-vtables] |
| struct syntax_error : std::runtime_error |
| |
| To avoid this warning, we need syntax_error to have a virtual function |
| defined in a compilation unit. Let it be the destructor. To comply |
| with C++98, this dtor should be 'throw()'. Merely making YY_NOEXCEPT |
| be 'throw()' in C++98 triggers |
| errors (http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00022.html), |
| so let's introduce YY_NOTHROW and flag only ~syntax_error with it. |
| |
| Also, since we now have an explicit dtor, we need to provide an copy |
| ctor. |
| |
| * configure.ac (warn_cxx): Add -Wweak-vtables. |
| * data/skeletons/c++.m4 (YY_NOTHROW): New. |
| (syntax_error): Declare the dtor, and define the copy ctor. |
| * data/skeletons/glr.cc, data/skeletons/lalr1.cc (~syntax_error): |
| Define. |
| |
| 2019-01-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer bool to char |
| * src/state.h, src/state.c (state::consistent): Make it a bool. |
| Adjust dependencies. |
| |
| 2019-01-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: be more alike lalr1.cc |
| |
| 2019-01-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * data/skeletons/c++.m4: Un-remove an end-of-line. |
| |
| 2019-01-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: fixes |
| |
| 2019-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-01-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.2.91 |
| * NEWS: Record release date. |
| |
| 2019-01-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: various fixes |
| Some reported by syntax-check. |
| |
| * po/POTFILES.in: Add fixits.cc. |
| * src/muscle-tab.c: Don't cast for free. |
| * src/files.c: Reduce scopes. |
| * cfg.mk: We need the cast for free in muscle_percent_define_insert. |
| |
| 2019-01-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document -ffixit and --update |
| * doc/bison.texi (Bison Options): here. |
| |
| 2019-01-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: style fixes |
| * doc/bison.texi: Use @kbd where appropriate. |
| Update ^~~~ marks for caret-errors. |
| * build-aux/cross-options.pl: Do not add quotes to %define's argument. |
| |
| 2019-01-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update for fixits and --update |
| |
| 2019-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: handle duplicates of %name-prefix |
| The test case "Deprecated directives" (currently 56) no longer emits |
| warnings after 'bison -u'! |
| |
| * src/files.h, src/files.c (spec_name_prefix_loc): New. |
| * src/parse-gram.y (handle_name_prefix): Emit fixits for duplicate |
| %name-prefix. |
| * tests/input.at (Deprecated directives): Adjust. |
| |
| 2019-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: handle %file-prefix |
| * src/files.h, src/files.c (spec_file_prefix_loc): New. |
| * src/scan-gram.l (%file-prefix): Delegate diagnostics to... |
| * src/parse-gram.y (handle_file_prefix): here. |
| * src/complain.c (duplicate_directive): Quote the directive. |
| * tests/input.at: Adjust. |
| |
| 2019-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: handle per-rule duplicates |
| * src/complain.c (duplicate_rule_directive): Here. |
| * tests/actions.at (Invalid uses of %empty): Check it. |
| |
| 2019-01-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: fix warnings about duplicates |
| * src/complain.c (duplicate_directive): Fix the complaint level. |
| * tests/input.at: Adjust. |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: properly indent the "previous declaration" message |
| * src/complain.c (duplicate_directive, duplicate_rule_directive): |
| Here. |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename some functions for consistency |
| "handle_" is the prefix used in scan-code.l for instance. |
| |
| * src/parse-gram.y (do_error_verbose, do_name_prefix, do_require) |
| (do_skeleton, do_yacc): |
| Rename as... |
| (handle_error_verbose, handle_name_prefix, handle_require) |
| (handle_skeleton, handle_yacc): |
| these. |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: report duplicate %yacc directives |
| We should use -ffixit and --update to clean files with duplicate |
| directives. And we should complain only once about duplicate obsolete |
| directives: keep only the "duplicate" warning. Let's start with %yacc. |
| |
| For instance on: |
| |
| %fixed-output_files |
| %fixed-output-files |
| %yacc |
| %% |
| exp: |
| |
| This run of bison: |
| |
| $ bison /tmp/foo.y -u |
| foo.y:1.1-19: warning: deprecated directive, use '%fixed-output-files' [-Wdeprecated] |
| %fixed-output_files |
| ^~~~~~~~~~~~~~~~~~~ |
| foo.y:2.1-19: warning: duplicate directive [-Wother] |
| %fixed-output-files |
| ^~~~~~~~~~~~~~~~~~~ |
| foo.y:1.1-19: previous declaration |
| %fixed-output_files |
| ^~~~~~~~~~~~~~~~~~~ |
| foo.y:3.1-5: warning: duplicate directive [-Wother] |
| %yacc |
| ^~~~~ |
| foo.y:1.1-19: previous declaration |
| %fixed-output_files |
| ^~~~~~~~~~~~~~~~~~~ |
| bison: file 'foo.y' was updated (backup: 'foo.y~') |
| |
| gives: |
| |
| %fixed-output-files |
| %% |
| exp: |
| |
| * src/location.h, src/location.c (location_empty): New. |
| * src/complain.h, src/complain.c (duplicate_directive): New. |
| |
| * src/getargs.h, src/getargs.c (yacc_flag): Instead of a Boolean, be |
| the location of the definition. |
| Update dependencies. |
| |
| * src/scan-gram.l (%yacc, %fixed-output-files): Move the handling of |
| its warnings to... |
| * src/parse-gram.y (do_yacc): This new function. |
| |
| * tests/input.at (Deprecated Directives): Adjust expectations. |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename duplicate_directive as duplicate_rule_directive |
| * src/complain.h, src/complain.c: here. |
| Adjust callers. |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: suggest running --update if there are fixits |
| * src/fixits.h, src/fixits.c (fixits_empty): New. |
| * src/complain.c (deprecated_directive): Register the Wdeprecated |
| fixits only if -Wdeprecated was enabled, so that we don't apply |
| updates if the user didn't ask for them. |
| * src/main.c (main): If there were fixits, issue a warning suggesting |
| running with --update. |
| Free uniqstrs after the fixits, since the latter use the former. |
| * tests/headers.at, tests/input.at: Update expectations. |
| |
| 2019-01-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| fixits: avoid generating empty lines |
| * src/fixits.c (fixits_run): If erase the content of a line, also |
| erase the following \n. |
| * tests/input.at (Deprecated directives): Update expectations. |
| |
| 2019-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| configure: don't try to run C++ warnings on C |
| Reported by Derek Clegg. |
| https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00066.html |
| |
| * configure.ac: here. |
| |
| 2019-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| c, c++: avoid implicit fall-throw |
| Reported by Derek Clegg. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00004.html |
| |
| * configure.ac (warn_common): Add -Wimplicit-fallthrough. |
| This does trigger failures in the test suite. |
| * data/skeletons/glr.c, data/skeletons/lalr1.cc, |
| * data/skeletons/yacc.c, tests/c++.at: |
| Make fall-throws explicit. |
| |
| 2019-01-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid -Wundefined-func-template warnings from clang |
| Reported by Derek Clegg. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00006.html |
| |
| Clang does not like this: |
| |
| template <typename D> |
| struct basic_symbol : D |
| { |
| basic_symbol(); |
| }; |
| |
| struct by_type {}; |
| |
| struct symbol_type : basic_symbol<by_type> |
| { |
| symbol_type(){} |
| }; |
| |
| It gives: |
| |
| $ clang++-mp-7.0 -Wundefined-func-template foo.cc -c |
| foo.cc:11:3: warning: instantiation of function 'basic_symbol<by_type>::basic_symbol' |
| required here, but no definition is available [-Wundefined-func-template] |
| symbol_type(){} |
| ^ |
| foo.cc:4:3: note: forward declaration of template entity is here |
| basic_symbol(); |
| ^ |
| foo.cc:11:3: note: add an explicit instantiation declaration to suppress this warning |
| if 'basic_symbol<by_type>::basic_symbol' is explicitly instantiated in |
| another translation unit |
| symbol_type(){} |
| ^ |
| 1 warning generated. |
| |
| The same applies for the basic_symbol's destructor and `clear()`. |
| |
| * configure.ac (warn_cxx): Add -Wundefined-func-template. |
| This triggered one failure in the test suite: |
| * tests/headers.at (Sane headers): here, where we check that we can |
| compile the generated headers in other compilation units than the |
| parser's. |
| Add a variant type to make sure that basic_symbol and symbol_type are |
| properly generated in this case. |
| * data/skeletons/c++.m4 (basic_symbol): Inline the definitions of the |
| destructor and of `clear` in the class definition. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| Revert the last two commits |
| They should not have been pushed, sorry about that. |
| |
| This reverts |
| - commit 8575bd06ae6e65f3a30b21a3e022a968e4c7ae7a. |
| - commit 55bf52860eac5c1394dc344a691220272df32b09. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid warnings about extraneous semi-colons |
| Reported by Derek Clegg. |
| |
| * configure.ac (warn_common): Add -Wextra-semi. |
| * data/skeletons/c++.m4: Remove extraneous semi-colon. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| WIP |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: add fixit support for duplicate removal |
| * src/muscle-tab.c (muscle_percent_define_insert): Register a fixit |
| for duplicate removal. |
| * tests/input.at: Adjust expectations. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: improve the accuracy for %error-verbose |
| Avoid duplicate warnings about %error-verbose, once for deprecation, |
| another for duplicate. Keep only the duplicate warning for the second |
| occurrence of %error-verbose. |
| |
| This will help removal fixits. |
| |
| * src/scan-gram.l (%error-verbose): Return as a PERCENT_ERROR_VERBOSE |
| token. |
| * src/parse-gram.y (do_error_verbose): New. |
| Use it. |
| * src/muscle-tab.c (muscle_percent_variable_update): Handle pseudo |
| variables such as %error-verbose. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: avoid duplicate warnings for deprecated directives |
| Currently, on |
| |
| %define parser_class_name "Parser" |
| %define parser_class_name "Parser" |
| %% |
| exp:; |
| |
| we issue: |
| |
| foo.y:1.9-25: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated] |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~ |
| foo.y:2.9-25: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated] |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~ |
| foo.y:2.9-25: error: %define variable 'api.parser.class' redefined |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~ |
| foo.y:1.9-25: previous definition |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~ |
| |
| Let's get rid of the second warning about the deprecated variable |
| parser_class_name. This is noise, but it will also be a problem with |
| fixits for removing duplicates, as we will first generate the update, |
| and then it's too late to remove it: fixits do not edit the result of |
| previous fixits. |
| |
| So generate this instead: |
| |
| foo.y:1.1-34: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated] |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| foo.y:2.1-34: error: %define variable 'api.parser.class' redefined |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| foo.y:1.1-34: previous definition |
| %define parser_class_name "Parser" |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| * src/muscle-tab.c (muscle_percent_variable_update): Pass the warning |
| to the caller, instead of issuing it. |
| (muscle_percent_define_insert): Issue this warning only if we don't |
| have to complain about a duplicate definition. |
| * tests/input.at: Adjust expectations. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: update the grammar file |
| Let's use the fixits to actually update the grammar files. |
| |
| * src/getargs.h, src/getargs.c (update_flag): New. |
| * src/fixits.h, src/fixits.c (fixits_run): New. |
| * src/main.c (main): Invoke fixits_run when --update is passed. |
| * tests/input.at (Deprecated directives): Check --update. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: improve accuracy for deprecated %define variables |
| * src/parse-gram.y: Use the location of the whole definition to record |
| the location of a %define variable, instead of just the name of the |
| variable. |
| Adjust tests. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: keep the fixits |
| Introduce proper support for fixits, instead of just printing them on |
| demand. |
| |
| * bootstrap.conf: We need gnulib's xlists. |
| * src/fixits.h, src/fixits.c: New. |
| * src/complain.c (deprecated_directive): Use fixits_register. |
| * src/main.c (main): Use fixits_free. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: add -ffixit support for deprecated features |
| Issue directives for IDE/editors to fix the source file. |
| http://clang.llvm.org/docs/UsersManual.html#cmdoption-fdiagnostics-parseable-fixits |
| |
| Do it for deprecated features. For instance: |
| |
| $ cat foo.y |
| %error-verbose |
| |
| %name-prefix = "foo" |
| %name-prefix="bar" |
| %define parser_class_name "Parser" |
| |
| %% |
| exp:; |
| |
| $ LC_ALL=C ./_build/8d/tests/bison -ffixit /tmp/foo.yy |
| /tmp/foo.yy:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated] |
| %error-verbose |
| ^^^^^^^^^^^^^^ |
| fix-it:"/tmp/foo.yy":{1:1-1:15}:"%define parse.error verbose" |
| /tmp/foo.yy:3.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated] |
| %name-prefix = "foo" |
| ^^^^^^^^^^^^^^^^^^^^ |
| fix-it:"/tmp/foo.yy":{3:1-3:21}:"%define api.prefix {foo}" |
| /tmp/foo.yy:4.1-18: warning: deprecated directive, use '%define api.prefix {bar}' [-Wdeprecated] |
| %name-prefix="bar" |
| ^^^^^^^^^^^^^^^^^^ |
| fix-it:"/tmp/foo.yy":{4:1-4:19}:"%define api.prefix {bar}" |
| /tmp/foo.yy:5.9-25: warning: deprecated directive, use '%define api.parser.class {Parser}' [-Wdeprecated] |
| %define parser_class_name "Parser" |
| ^^^^^^^^^^^^^^^^^ |
| fix-it:"/tmp/foo.yy":{5:9-5:26}:"%define api.parser.class {Parser}" |
| /tmp/foo.yy:5.9-25: error: %define variable 'api.parser.class' is not used |
| %define parser_class_name "Parser" |
| ^^^^^^^^^^^^^^^^^ |
| |
| * src/getargs.h, src/getargs.c (feature_fixit_parsable): New. |
| (feature_types, feature_args): Use it. |
| * src/complain.c (deprecated_directive): Use it. |
| |
| * tests/input.at: Check it. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: prefer ^~~~ to ^^^^ to underline code |
| That's what both GCC and Clang do, and it is indeed much nicer to |
| read. From: |
| |
| foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated] |
| %error-verbose |
| ^^^^^^^^^^^^^^ |
| foo.y:4.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated] |
| %name-prefix = "foo" |
| ^^^^^^^^^^^^^^^^^^^^ |
| |
| to: |
| |
| foo.y:1.1-14: warning: deprecated directive, use '%define parse.error verbose' [-Wdeprecated] |
| %error-verbose |
| ^~~~~~~~~~~~~~ |
| foo.y:4.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated] |
| %name-prefix = "foo" |
| ^~~~~~~~~~~~~~~~~~~~ |
| |
| * src/location.c (location_caret): Use ^~~~. |
| Adjust tests expectations. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: improve them for %name-prefix |
| Currently the diagnostics for %name-prefix are not precise enough. In |
| particular, they does not show that braces must be used instead of |
| quotes. |
| |
| Before: |
| |
| foo.y:3.1-14: warning: deprecated directive, use '%define api.prefix' [-Wdeprecated] |
| %name-prefix = "foo" |
| ^^^^^^^^^^^^^^ |
| |
| After: |
| |
| foo.y:3.1-20: warning: deprecated directive, use '%define api.prefix {foo}' [-Wdeprecated] |
| %name-prefix = "foo" |
| ^^^^^^^^^^^^^^^^^^^^ |
| |
| To do this we need the value passed to %name-prefix, so move the |
| warning from the scanner to the parser. |
| |
| Accuracy will be very important for the forthcoming changes. |
| |
| * src/parse-gram.y (do_name_prefix): New. |
| (PERCENT_NAME_PREFIX): Have a semantic value: the raw source, with |
| possibly underscores, equal sign, and spaces. This is used to provide |
| a more accurate message. It does not take comments into account, |
| but... |
| * src/scan-gram.l (%name-prefix): Delegate the warnings to the parser. |
| |
| * tests/headers.at, tests/input.at: Adjust expectations. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| diagnostics: style: avoid allocating memory when not needed |
| * src/muscle-tab.c (muscle_percent_variable_update): Avoid allocating |
| memory when it is not needed, which should be most of the time (when |
| there's no update to perform). |
| Adjust callers. |
| |
| 2019-01-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid warnings about extraneous semi-colons |
| Reported by Derek Clegg. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00005.html |
| |
| * configure.ac (warn_cxx): Add -Wextra-semi. |
| * data/skeletons/c++.m4: Remove extraneous semi-colon. |
| |
| 2019-01-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor changes |
| * src/muscle-tab.c: Sort alphabetically. |
| * src/scan-gram.l: Reduce scopes. |
| Initialize variables. |
| |
| 2019-01-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: beware of -Wshadow |
| This line: |
| |
| slice<stack_symbol_type, stack_type> slice (yystack_, yylen); |
| |
| triggers warnings: |
| |
| parse.h:1790:11: note: shadowed declaration is here |
| |
| Reported by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00002.html |
| |
| * configure.ac (warn_c): Move -Wshadow to... |
| (warn_common): here. |
| * data/skeletons/stack.hh (slice): Define as an inner class of stack. |
| * data/skeletons/lalr1.cc: Adjust. |
| Rename the variable as 'range' instead of 'slice'. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.2.90 |
| * NEWS: Record release date. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: fix relocatability |
| * src/yacc.in (prefix): Define it, as it's typically needed for |
| exec_prefix. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| syntax-check: adjust paths |
| * cfg.mk: here. |
| (require_config_h): New. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting clean up |
| * data/skeletons/d.m4, examples/d/calc.y, src/output.c, |
| * src/parse-gram.y: |
| No tab, no trailing spaces. |
| Reported by syntax-check. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| po: remove bitset/stats.c |
| * po/POTFILES.in: here. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix usage of AT_PARSER_CHECK |
| The parser must be the first command. Caught by syntax-check. |
| |
| * tests/c++.at: here. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: isolate the creation of tname in a function |
| * src/output.c (prepare_symbol_names): New. |
| Use it. |
| |
| 2019-01-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: formatting changes |
| * tests/input.at, tests/regression.at: here. |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: use @option consistently |
| * doc/bison.texi: Use @option, not @code, for options. |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: avoid negated if |
| * data/skeletons/yacc.c: Prefer a "direct" conditional. |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: bump copyrights to 2019 |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java/d: rename some %define variables for consistency |
| See 890ee8a1fd288b3cc1c21c49ea0ece696ef40565 and |
| https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00024.html. |
| |
| * data/skeletons/d.m4, data/skeletons/java.m4 |
| (abstract, annotations, extends, final, implements, public, strictfp): |
| Rename as... |
| (api.parser.abstract, api.parser.annotations, api.parser.extends) |
| (api.parser.final, api.parser.implements, api.parser.public) |
| (api.parser.strictfp): |
| these. |
| |
| * src/muscle-tab.c (muscle_percent_variable_update): Ensure backward |
| compatibility. |
| |
| * doc/bison.texi, examples/d/calc.y, examples/java/Calc.y, |
| tests/input.at: Adjust. |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| java/d: remove useless macros |
| There are many macros that are defined and used just |
| once (b4_public_if, b4_abstract_if, etc.). That's overkill. Rather, |
| let's define a macro to build the "public class YYParser" line. |
| |
| It appears that the same syntax with "extends", "abstract", etc. is |
| implemented in the D parser, which looks very fishy... |
| |
| * data/skeletons/d.m4, data/skeletons/java.m4 (b4_public_if) |
| (b4_abstract_if, b4_final_if, b4_strictfp_if): Replace with |
| (b4_parser_class_declaration): this. |
| * data/skeletons/lalr1.d, data/skeletons/lalr1.java: Adjust. |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean tests |
| * tests/named-refs.at: here. |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| In particular, report uninitialized submodules instead of breaking |
| symlinks. |
| |
| For reports, see |
| https://lists.gnu.org/archive/html/bug-bison/2011-05/msg00012.html |
| https://lists.gnu.org/archive/html/help-bison/2018-12/msg00034.html |
| |
| For a fix, see |
| https://lists.gnu.org/archive/html/bug-gnulib/2019-01/msg00024.html |
| |
| 2019-01-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: fix the handling of syntax_error from the scanner |
| Commit 90a8537e6287f92fb3d5be0258a69247a742f12e was right, but issued |
| two error messages. Commit 80ef7e7639f99618bee490b2dea02b5fd9ab28e5 |
| tried to address that by mapping yychar and yytoken to empty, but that |
| completely breaks the invariants of glr.c. In particular, yygetToken |
| can be called repeatedly and is expected to return the latest result, |
| unless yytoken is YYEMPTY. Since the previous attempt was "recording" |
| that the token was coming from an exception by setting it to YYEMPTY, |
| instead of getting again the faulty token, we fetched another one. |
| |
| Rather, revert to the first approach: map yytoken to "invalid token", |
| but record in yychar the fact that we come from an exception thrown in |
| the scanner. |
| |
| * data/skeletons/glr.c (YYFAULTYTOK): New. |
| (yygetToken): Use it to record syntax errors from the scanner. |
| * tests/c++.at (Syntax error as exception): In addition to checking |
| syntax_error with error recovery, make sure it also behaves as |
| expected without. |
| |
| 2019-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| clearly deprecate %name-prefix |
| * src/scan-gram.l (%name-prefix): Issue a deprecation warning. |
| |
| * tests/calc.at, tests/headers.at, tests/input.at, tests/java.at, |
| * tests/javapush.at, tests/local.at: Adjust expectations. |
| Or disable -Wdeprecated. |
| |
| * doc/bison.texi: Document that %name-prefix is replaced by %define |
| api.prefix. |
| |
| 2019-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: clean up the Java/D examples |
| * examples/java/Calc.y: Fix indentation. |
| Sort. |
| Don't use %name-prefix, since api.parser.class is already defined. |
| * examples/d/calc.y: Likewise. |
| |
| 2019-01-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: here. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| rename parser_class_name as api.parser.class |
| The previous name was historical and inconsistent. |
| |
| * src/muscle-tab.c (define_directive): Use the proper value passing |
| syntax, based on the muscle kind. |
| (muscle_percent_variable_update): Use the right value passing syntax. |
| Migrate from parser_class_name to api.parser.class. |
| |
| * data/skeletons: Migrate from parser_class_name to api.parser.class. |
| |
| * doc/bison.texi (%define Summary): Document both parser_class_name |
| and api.parser.class. |
| Promote the latter over the former. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * src/scan-gram.l: Here. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: glr.c: prefer returning a value rather than passing pointers |
| This is very debatable. This function is not pure at all, so it could |
| stick to returning void: that's a common coding style to tell the |
| difference between "real" (pure) functions and side-effecting |
| subroutines. However, we already have this style elsewhere (e.g., |
| yylex), and I feel the callers are somewhat nice to read this way. |
| |
| * data/skeletons/glr.c (yygetLRActions): Return the action rather than |
| passing by pointer. |
| While at it, fix type of yytoken. |
| Adjust callers. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: don't issue two error messages when syntax_error is thrown |
| Reported by Askar Safin. |
| https://lists.gnu.org/archive/html/bison-patches/2019-01/msg00000.html |
| |
| * data/skeletons/glr.c (yygetToken): Return YYEMPTY when an exception |
| is thrown. |
| * data/skeletons/lalr1.cc: Log when an exception is caught. |
| * tests/c++.at (Syntax error as exception): Be sure to recover from |
| error before triggering another error. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: shorten b4_parser_class_name to b4_parser_class |
| * skeletons/c++.m4, skeletons/d.m4, skeletons/glr.c, skeletons/glr.cc, |
| * skeletons/java.m4, skeletons/lalr1.cc, skeletons/lalr1.d, |
| * skeletons/lalr1.java: Here. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: remove duplicate definition of YYLLOC_DEFAULT |
| It's already provided by glr.c. |
| |
| * data/skeletons/glr.cc (b4_post_prologue): Here. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: sort includes in scanners |
| * src/scan-code.l, src/scan-gram.l, src/scan-skel.l: Reorder includes. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes in the doc |
| * doc/bison.texi: here. |
| |
| 2019-01-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove stray empty lines |
| * data/skeletons/glr.c, data/skeletons/glr.cc: here. |
| * data/skeletons/bison.m4 (b4_glr_cc_if): Move it here. |
| |
| 2018-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.cc: support syntax_error exceptions |
| Kindly requested by Аскар Сафин (Askar Safin). |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00033.html |
| |
| * data/skeletons/glr.c (b4_glr_cc_if): New. |
| Use it. |
| (yygetToken): Catch syntax_errors. |
| * data/skeletons/glr.cc (YY_EXCEPTIONS): New. |
| * tests/c++.at: Check it. |
| |
| 2018-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: factor the calls to yylex |
| The call protocol of yylex is quite complex, and repeated three |
| times. Let's factor it. |
| |
| * data/skeletons/glr.c (yygetToken): New. |
| Use it. |
| |
| 2018-12-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in glr.c |
| * data/skeletons/glr.c (yyrecoverSyntaxError): here. |
| |
| 2018-12-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: refactor |
| |
| 2018-12-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: inline the implementation of syntax_error in its definition |
| This way, it is easier to make sure its implementation is available in |
| glr.cc too, which is not the case currently. |
| |
| * data/skeletons/c++.m4 (b4_public_types_define): Move the |
| implementation of syntax_error... |
| (b4_public_types_declare): here. |
| |
| 2018-12-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * tests/input.at: here. |
| |
| 2018-12-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbol: don't crash on symbol without content |
| When running with --trace=parse, we may crash. |
| |
| * src/symtab.c (symbol_print): Avoid that. |
| |
| 2018-12-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| README-hacking: update |
| |
| 2018-12-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: get rid of a useless function |
| Useless since 58d7a1a1c7497ba51a35fcf991c5b047f692fe18 (2006). |
| |
| * src/parse-gram.y, src/reader.h (token_name): Remove, unused. |
| |
| 2018-12-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| parsers: fix minor stylistic issues |
| * data/skeletons/variant.hh (b4_token_constructor_declare): Remove, |
| unused since the previous commit. |
| Fix indentation issues. |
| * data/skeletons/c++.m4: Fix indentation issues. |
| |
| 2018-12-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: check several parsers in the same program |
| * tests/local.at (AT_LOCATION_TYPE_IF): Turn into... |
| (AT_LOCATION_TYPE_SPAN_IF): this. |
| Adjust dependencies. |
| * tests/headers.at (Several parsers): Add another C++ parser, |
| which uses the first C++ parser's locations. |
| |
| 2018-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: variants: fuse declarations and definitions |
| We used to create a short definition of yy::parser with all the |
| implementations of its member functions outside. But yy::parser is no |
| longer short and simple to read. Maintaining each function twice is |
| painful: a lot of redundancy but different indentation levels, output |
| which depends on whether we are in a header or not (see |
| d132c2d5455135f63a7497c38358eadd6e3a6af8), etc. |
| |
| Let's simplify this and put the implementations into the class |
| definition itself. |
| |
| Discussed in this monologue: |
| https://lists.gnu.org/archive/html/bison-patches/2018-12/msg00058.html. |
| |
| * data/skeletons/c++.m4, data/skeletons/lalr1.cc, |
| * data/skeletons/variant.hh (b4_basic_symbol_constructor_define) |
| (_b4_token_constructor_declare, b4_token_constructor_declare) |
| Merge into... |
| (b4_basic_symbol_constructor_define, _b4_token_constructor_define) |
| (b4_token_constructor_define): these. |
| |
| 2018-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix dependencies |
| Commit 112ccb5ed73ba5c64b0b5300d8b9b686f02f094c moved the skeletons |
| from dist_pkgdata_DATA to dist_skeletons_DATA, hence broke the dependencies. |
| |
| * Makefile.am (dependencies): New. |
| Use it where appropriate. |
| |
| 2018-12-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: move stack<T> inside yy::parser |
| We used to define such auxiliary structures outside the class, mainly |
| as a matter of style to keep the definition of yy::parser short and |
| simple. However, now there's a lot more code generated inside the |
| class definition (e.g., all the token constructors), so the |
| readability no longer applies. |
| |
| However, if we move stack (and slice) inside yy::parser, then it |
| should no longer be needed to change the namespace to have multiple |
| parsers: changing the class name should suffice. |
| |
| One common argument against inner classes is that they code bloat. It |
| hardly applies here, since typically different parsers will have |
| different semantic value types, hence different actual stack types. |
| |
| * data/skeletons/lalr1.cc: Invoke b4_stack_define inside yy::parser. |
| |
| 2018-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: make bison a relocatable package |
| Suggested by David Barto |
| https://lists.gnu.org/archive/html/help-bison/2015-02/msg00004.html |
| and Victor Zverovich. |
| https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00121.html |
| |
| This is very easy to do, thanks to work by Bruno Haible in gnulib. |
| See "Supporting Relocation" in gnulib's documentation. |
| |
| * bootstrap.conf: We need relocatable-prog and relocatable-script (for yacc). |
| |
| * src/yacc.in: New. |
| * configure.ac, src/local.mk: Instantiate it. |
| * src/main.c, src/output.c (main, pkgdatadir): Use relocatable2. |
| |
| * doc/bison.texi (FAQ): Document it. |
| |
| 2018-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| README: wrap paragraphs |
| |
| 2018-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-12-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| package: move skeletons into data/skeletons |
| * data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-like.m4, |
| * data/c-skel.m4, data/c.m4, data/d-skel.m4, data/d.m4, data/glr.c, |
| * data/glr.cc, data/java-skel.m4, data/java.m4, data/lalr1.cc, |
| * data/lalr1.d, data/lalr1.java, data/location.cc, data/stack.hh, |
| * data/variant.hh, data/yacc.c: |
| Move to... |
| * data/skeletons: here. |
| Use b4_skeletonsdir instead of b4_pkgdatadir. |
| |
| * data/local.mk, src/output.c: Adjust. |
| |
| 2018-12-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style: use consistently this/that instead of this/other |
| * data/lalr1.cc, data/variant.hh: here. |
| |
| 2018-12-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: also provide a copy constructor for symbol_type |
| Suggested by Wolfgang Thaller. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00081.html |
| |
| * data/c++.m4 (basic_symbol, by_type): Instead of provide either move |
| or copy constructor, always provide the copy one. |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): Check it. |
| |
| 2018-12-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix double free when a symbol_type was moved |
| Currently the following piece of code crashes (with parse.assert), |
| because we don't record that s was moved-from, and we invoke its dtor. |
| |
| { |
| auto s = parser::make_INT (42); |
| auto s2 = std::move (s); |
| } |
| |
| Reported by Wolfgang Thaller. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00077.html |
| |
| * data/c++.m4 (by_type): Provide a move-ctor. |
| (basic_symbol): Be sure not to read a moved-from value. |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): Check this case. |
| |
| 2018-12-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style: improve tests |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): Provide better |
| assertions. |
| Use them. |
| Avoid useless Bison invocations. |
| |
| 2018-12-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style: use consistently this/that instead of this/other |
| * data/c++.m4: here. |
| |
| 2018-12-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fixes |
| * tests/c++.at: Use AT_YYLEX_PROTOTYPE etc. |
| Which requires that we use the same argument names (lvalp, etc.). |
| * tests/local.at (AT_NAME_PREFIX): Fix regex. |
| |
| 2018-12-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style: rename a few macros for clarity |
| * data/c++.m4, data/lalr1.cc, data/variant.hh: |
| s/b4_symbol_constructor/b4_token_constructor/g, as this is really what |
| is being defined. |
| |
| 2018-12-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: exhibit a safe symbol_type |
| Instead of introducing make_symbol (whose name, btw, somewhat |
| infringes on the user's "name space", if she defines a token named |
| "symbol"), let's make the construction of symbol_type safer, using |
| assertions. |
| |
| For instance with: |
| |
| %token ':' <std::string> ID <int> INT; |
| |
| generate: |
| |
| symbol_type (int token, const std::string&); |
| symbol_type (int token, const int&); |
| symbol_type (int token); |
| |
| It does mean that now named token constructors (make_ID, make_INT, |
| etc.) go through a useless assert, but I think we can ignore this: I |
| assume any decent compiler will inline the symbol_type ctor inside the |
| make_TOKEN functions, which will show that the assert is trivially |
| verified, hence I expect no code will be emitted for it. And anyway, |
| that's an assert, NDEBUG controls it. |
| |
| * data/c++.m4 (symbol_type): Turn into a subclass of |
| basic_symbol<by_type>. |
| Declare symbol constructors when variants are enabled. |
| * data/variant.hh (_b4_type_constructor_declare) |
| (_b4_type_constructor_define): Replace with... |
| (_b4_symbol_constructor_declare, _b4_symbol_constructor_def): these. |
| Generate symbol_type constructors. |
| * doc/bison.texi (Complete Symbols): Document. |
| * tests/types.at: Check. |
| |
| 2018-12-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: provide symbol constructors per type |
| On |
| |
| %token <int> FOO BAR |
| |
| we currently generate make_FOO(int) and make_BAR(int). However, in |
| order to factor their scanners, some users would also like to have |
| make_symbol(tok, int), where tok is FOO or BAR. To ensure type |
| safety, add assertions that do check that value type and token type |
| match. Bind this assertion to the parse.assert %define variable. |
| |
| Suggested by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00034.html |
| Should also match expectations from Аскар Сафин. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00023.html |
| |
| * data/variant.hh: Use b4_token_visible_if where applicable. |
| (_b4_type_constructor_declare, _b4_type_constructor_define): New. |
| Use them. |
| |
| 2018-12-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style changes |
| * data/c++.m4, data/variant.hh: Improve layout of the generated code. |
| Avoid casts. |
| (_b4_symbol_constructor_declare, _b4_symbol_constructor_define): Rename |
| as... |
| (_b4_token_maker_declare, _b4_token_maker_define): these. |
| * tests/types.at: Improve pair printing. |
| |
| 2018-12-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: simplify tests |
| * tests/types.at: Simplify C++ instantiations. |
| |
| 2018-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use b4_token_visible_if |
| And other formatting/comment changes. |
| |
| * data/variant.hh: Here. |
| |
| 2018-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix token constructors for types with commas |
| Bitten by macros, again. |
| See 680b715518795c8648360fcf05f3772c04d2eed2. |
| |
| * data/variant.hh (_b4_symbol_constructor_declare) |
| (_b4_symbol_constructor_define): Do not use user types, which can |
| include commas as in `std::pair<int, int>`, to macros. |
| |
| * tests/local.at: Adjust the lex related macros to support the |
| case of token constructors. |
| * tests/types.at: Also check token constructors on types with commas. |
| |
| 2018-12-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-12-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: document the overhaul of symbol declarations |
| * doc/bison.texi (Symbol Decls): New. |
| |
| 2018-12-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: check more invalid declarations |
| * tests/input.at (Invalid %nterm uses): Rename as... |
| (Invalid symbol declarations): this. |
| Extend. |
| |
| 2018-12-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: check the previous commit |
| * tests/input.at (Symbol declarations): New. |
| |
| 2018-12-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-12-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: clean up their parsing |
| Prompted by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html |
| |
| We have four classes of directives that declare symbols: %nterm, |
| %type, %token, and the family of %left etc. Currently not all of them |
| support the possibility to have several type tags (`<type>`), and not |
| all of them support the fact of not having any type tag at all |
| (%type). Let's unify this. |
| |
| - %type |
| POSIX Yacc specifies that %type is for nonterminals only. However, |
| some Bison users want to use it for both tokens and nterms |
| (actually, Bison's own grammar does this in several places, e.g., |
| CHAR). So it should accept char/string literals. |
| |
| As a consequence cannot be used to declare tokens with their alias: |
| `%type foo "foo"` would be ambiguous (are we defining foo = "foo", |
| or are these two different symbols?) |
| |
| POSIX specifies that it is OK to use %type without a type tag. I'm |
| not sure what it means, but we support it. |
| |
| - %token |
| Accept token declarations with number and string literal: |
| (ID|CHAR) NUM? STRING?. |
| |
| - %left, etc. |
| They cannot be the same as %token, because we accept to declare the |
| symbol with %token, and to then qualify its precedence with %left. |
| Then `%left foo "foo"` would also be ambiguous: foo="foo", or two |
| symbols. |
| |
| They cannot be simply a list of identifiers, but POSIX Yacc says we |
| can declare token numbers here. I personally think this is a bad |
| idea, precedence management is tricky in itself and should not be |
| cluttered with token declaration issues. |
| |
| We used to accept declaring a token number on a string literal here |
| (e.g., `%left "token" 1`). This is abnormal. Either the feature is |
| useful, and then it should be supported in %token, or it's useless |
| and we should not support it in corner cases. |
| |
| - %nterm |
| Obviously cannot accept tokens, nor char/string literals. Does not |
| exist in POSIX Yacc, but since %type also works for terminals, it is |
| a nice option to have. |
| |
| * src/parse-gram.y: Avoid relying on side effects. For instance, get |
| rid of current_type, rather, build the list of symbols and iterate |
| over it to assign the type. |
| It's not always possible/convenient. For instance, we still use |
| current_class. |
| Prefer "decl" to "def", since in the rest of the implementation we |
| actually "declare" symbols, we don't "define" them. |
| (token_decls, token_decls_for_prec, symbol_decls, nterm_decls): New. |
| Use them for %token, %left, %type and %nterm. |
| * src/symlist.h, src/symlist.c (symbol_list_type_set): New. |
| * tests/regression.at b/tests/regression.at |
| (Token number in precedence declaration): We no longer accept |
| to give a number to string literals. |
| |
| 2018-12-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| symbols: set tag_seen when assigning a type to symbols |
| * src/reader.h, src/reader.c (tag_seen): Move to... |
| * src/symtab.h, src/symtab.c: here. |
| (symbol_type_set): Set it to true. |
| * src/parse-gram.y: Don't. |
| |
| 2018-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: isolate test about Yacc warnings |
| * tests/input.at (Yacc warnings): New. |
| (AT_CHECK_UNUSED_VALUES): Remove checks about yacc. |
| |
| 2018-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: warn about string literals in Yacc mode |
| * src/scan-gram.l (scan_integer): Warn. |
| * tests/input.at (Yacc warnings on symbols): Check. |
| |
| 2018-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: warn about hexadecimal token numbers in Yacc mode |
| * src/scan-gram.l (scan_integer): Warn. |
| * tests/input.at (Yacc warnings on symbols): Check. |
| |
| 2018-12-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: reprecate %nterm back |
| After having spent quite some time on cleaning the handling of symbol |
| declarations in the grammar files, I believe we should keep it. |
| |
| It looks like it's a duplicate of %type, but it is not. While POSIX |
| Yacc requires %type to apply only to nonterminal symbols, it appears |
| that both byacc and bison accept it for tokens too. And some |
| experienced users do actually expect this feature to group |
| symbols (terminal or not) by type ("On the other hand, it is generally |
| more useful IMHO to group terminals and non-terminals with the same |
| type tag together", |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html). |
| Even Bison's own parser does this today (see CHAR). |
| |
| Basically reverts 7928c3e6fbdf47ff81184966cee937e6aa694b94. |
| |
| * src/scan-gram.l (%nterm): Dedeprecate, but issue a Wyacc warning. |
| * tests/input.at: Adjust expectations. |
| (Yacc warnings on symbols): New. |
| * src/symtab.c (symbol_class_set): Fix error introduced in |
| 20b07467938cf880a1d30eb30d6e191843a21fec. |
| |
| 2018-12-11 Eduard Staniloiu <edi33416@gmail.com> |
| |
| CI: add dmd support |
| * .travis.yml: here. |
| |
| 2018-12-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: s/non-terminal/nonterminal/ |
| I personally prefer 'non terminal', or 'non-terminal', but |
| 'nonterminal' is the common spelling. |
| |
| * data/glr.c, src/parse-gram.y, src/symtab.c, src/symtab.h, |
| * tests/input.at, doc/refcard.tex: here. |
| |
| 2018-12-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: rename error functions for clarity |
| * src/symtab.c (symbol_redeclaration, semantic_type_redeclaration) |
| (user_token_number_redeclaration): |
| Rename as... |
| (complain_symbol_redeclared, complain_semantic_type_redeclared) |
| (complain_user_token_number_redeclared): |
| this. |
| |
| 2018-12-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: improve the error message for symbol class redefinition |
| Currently our error messages include both "symbol redeclared" and |
| "symbol redefined", and they mean something different. This is |
| obscure, let's make this clearer. |
| |
| I think the idea between 'definition' vs. 'declaration' is that in the |
| case of the nonterminals, the actual definition is its set of rules, |
| so %nterm would be about declaration. The case of %token is less |
| clear. |
| |
| * src/symtab.c (complain_class_redefined): New. |
| (symbol_class_set): Use it. |
| Simplify the logic of this function to clearly skip its body when the |
| preconditions are not met. |
| * tests/input.at (Symbol class redefinition): New. |
| |
| 2018-12-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: simplify computation of yydebug |
| * examples/c/lexcalc/parse.y: here. |
| |
| 2018-12-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: support variadic emplace |
| Suggested by Askar Safin. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00006.html |
| |
| * data/variant.hh: Implement. |
| * tests/types.at: Check. |
| * doc/bison.texi: Document. |
| |
| 2018-12-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add a simple Flex+Bison example in C |
| Suggested by Askar Safin. |
| http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00003.html |
| |
| * examples/c/lexcalc/Makefile, examples/c/lexcalc/README.md, |
| * examples/c/lexcalc/lexcalc.test, examples/c/lexcalc/local.mk, |
| * examples/c/lexcalc/parse.y, examples/c/lexcalc/scan.l: |
| New. |
| |
| 2018-12-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-12-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: sort them per language and complete them |
| Convert some of the READMEs to Markdown, which is now more common, and |
| nicely displayed in some git hosting services. |
| |
| Add missing READMEs and Makefiles. Generate XML, HTML and Dot files. Be |
| sure to ship the test files. Complete CLEANFILES to remove all generated |
| files. |
| |
| * examples/calc++: Move into... |
| * examples/c++: here. |
| * examples/mfcalc, examples/rpcalc: Move into... |
| * examples/c: here. |
| |
| * examples/README.md, examples/c++/calc++/Makefile, examples/c/local.mk, |
| * examples/c/mfcalc/Makefile, examples/c/rpcalc/Makefile, |
| * examples/d/README.md, examples/java/README.md: |
| New files. |
| |
| * examples/test (medir): Be robust to deeper directory nesting. |
| |
| 2018-12-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-12-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: minor refactoring |
| * src/parse-gram.y (symbol.prec): Reuse int.opt. |
| |
| 2018-12-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: move checks inside the called functions |
| Revamping the handling of the symbols is the grammar is much more |
| delicate than I anticipated. Let's first move things around for |
| clarity. |
| |
| * src/symtab.c (symbol_make_alias): Don't accept to alias |
| non-terminals. |
| (symbol_user_token_number_set): Don't accept user token numbers |
| for non-terminals. |
| Don't do anything in case of redefinition, instead of trying to |
| update. The flow is eaier to follow this way. |
| |
| 2018-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: fix double definition of YYSemanticType |
| * data/lalr1.d: When moving to b4_user_union_members, it also defines |
| b4_tag_seen_flag, so we had two definitions. |
| |
| 2018-12-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: fix incorrect condition to raise a syntax error |
| * src/parse-gram.y (symbol_def): Fix test. |
| |
| 2018-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: fix use of b4_union_members |
| * data/lalr1.d: Use b4_user_union_members instead. |
| |
| 2018-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * data/variant.hh: here. |
| |
| 2018-12-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| java, d: add a Makefile for the example |
| * examples/java/Makefile, examples/d/Makefile: New. |
| |
| 2018-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in ielr.c |
| * src/ielr.c: here. |
| |
| 2018-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: scope reduction in lalr.c |
| * src/lalr.c: here. |
| |
| 2018-12-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| d, java: compute static subtractions |
| * data/d.m4, data/java.m4: Use b4_subtract where appropriate. |
| |
| 2018-12-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: add an example |
| * examples/d/calc.test, examples/d/calc.y, examples/d/local.mk: |
| |
| 2018-12-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: update the skeleton |
| * data/d.m4, data/lalr1.d: Catch up with Bison. |
| And actually, also catch up with D. |
| |
| 2018-12-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: add experimental support for the D language |
| * configure.ac (ENABLE_D): New. |
| * src/getargs.c (valid_languages): Add d. |
| |
| 2018-12-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| d: add skeleton for the D language |
| Contributed by Oliver Mangold. |
| https://lists.gnu.org/archive/html/help-bison/2012-01/msg00000.html |
| |
| * README-D.txt, d-skel.m4, d.m4, lalr1.d: New. |
| |
| 2018-12-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: regenerate them when version.texi changes |
| When we extract the examples from the documentation, %require |
| "@value{VERSION}" is replaced with the current version. If we change |
| the git branch, without changing the documentation, the generated |
| examples will %require a version of Bison that differs from the actual |
| version. |
| |
| * examples/local.mk (extracted.stamp): Depend on doc/version.texi. |
| |
| 2018-12-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: start some technical documentation |
| * data/README: Convert to Markdown. |
| Start documenting some of the macros used in all our skeletons. |
| Simplify and fix the documentation of the macros in the skeletons. |
| |
| 2018-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| backend: revamp the handling of symbol types |
| Currently it is the front end that passes the symbol types to the |
| backend. For instance: |
| |
| %token <ival> NUM |
| %type <ival> exp1 exp2 |
| exp1: NUM { $$ = $1; } |
| exp2: NUM { $<ival>$ = $<ival>1; } |
| |
| In both cases, $$ and $1 are passed to the backend as having type |
| 'ival' resulting in code like `val.ival`. This is troublesome in the |
| case of api.value.type=union, since in that the case the code this: |
| |
| %define api.value.type union |
| %token <int> NUM |
| %type <int> exp1 exp2 |
| exp1: NUM { $$ = $1; } |
| exp2: NUM { $<int>$ = $<int>1; } |
| |
| because in this case, since the backend does not know the symbol being |
| processed, it is forced to generate casts in both cases: *(int*)(&val)`. |
| This is unfortunate in the first case (exp1) where there is no reason |
| at all to use a cast instead of `val.NUM` and `val.exp1`. |
| |
| So instead delegate the computation of the actual value type to the |
| backend: pass $<ival>$ as `symbol-number, ival` and $$ as |
| `symbol-number, MULL`, instead of passing `ival` before. |
| |
| * src/scan-code.l (handle_action_dollar): Find the symbol the action |
| is about, not just its tyye. Pass both symbol-number, and explicit |
| type tag ($<tag>n when there is one) to b4_lhs_value and b4_rhs_value. |
| |
| * data/bison.m4 (b4_symbol_action): adjust to the new signature to |
| b4_dollar_pushdef. |
| |
| * data/c-like.m4 (_b4_dollar_dollar, b4_dollar_pushdef): Accept the |
| symbol-number as new argument. |
| |
| * data/c.m4 (b4_symbol_value): Accept the symbol-number as new |
| argument, and use it. |
| (b4_symbol_value_union): Accept the symbol-number as new |
| argument, and use it to prefer ready a union member rather than |
| casting the union. |
| * data/yacc.c (b4_lhs_value, b4_rhs_value): Accept the new |
| symbol-number argument. |
| Adjust uses of b4_dollar_pushdef. |
| * data/glr.c (b4_lhs_value, b4_rhs_value): Adjust. |
| |
| * data/lalr1.cc (b4_symbol_value_template, b4_lhs_value): Adjust |
| to the new symbol-number argument. |
| * data/variant.hh (b4_symbol_value, b4_symbol_value_template): Accept |
| the new symbol-number argument. |
| |
| * data/java.m4 (b4_symbol_value, b4_rhs_data): New. |
| (b4_rhs_value): Use them. |
| * data/lalr1.java: Adjust to b4_dollar_pushdef, and use b4_rhs_data. |
| |
| 2018-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment and formatting changes |
| * data/bison.m4, data/c++.m4, data/glr.c, data/java.m4, data/lalr1.cc, |
| * data/yacc.c, src/scan-code.l: |
| Fix comments. |
| Prefer POS to denote the position of a symbol in a rule, since NUM |
| is also used to denote symbol numbers. |
| |
| 2018-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: make sure the build dir exists |
| * examples/java/local.mk (%D%/Calc.java): here. |
| |
| 2018-12-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: don't define variant<S>, directly define semantic_type |
| Instead of defining yy::variant<S> and then alias |
| yy::parser::semantic_type to variant<sizeof (union_type)>, directly |
| define yy::parser::semantic_type. |
| |
| This model is more appropriate if we want to sit the storage on top of |
| unions in C++11. |
| |
| * data/variant.hh (b4_variant_define): Specialize and inline the |
| definition into... |
| (b4_value_type_declare): Here. |
| Define union_type here. |
| * data/lalr1.cc: Adjust. |
| |
| 2018-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: use noexcept and constexpr |
| There are probably more opportunities for them. |
| So far, I observed no performance improvements. |
| |
| * data/c++.m4, data/lalr1.cc, data/stack.hh: here. |
| |
| 2018-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: also display the examples' test suite log |
| * .travis.yml: here. |
| |
| 2018-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: add an example |
| * examples/java/Calc.y: New, based on test 495: "Calculator |
| parse.error=verbose %locations". |
| * examples/java/Calc.test, examples/java/local.mk: New. |
| |
| * configure.ac (ENABLE_JAVA): New. |
| * examples/test (prog): Be ready to run Java programs. |
| |
| 2018-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: unsigned int -> unsigned |
| See |
| https://lists.gnu.org/archive/html/bison-patches/2018-08/msg00027.html |
| |
| * src/output.c (muscle_insert_unsigned_int_table): Rename as... |
| (muscle_insert_unsigned_table): this. |
| |
| 2018-12-01 Akim Demaille <akim.demaille@gmail.com> |
| |
| output: restore yyrhs and yyprhs |
| This was demanded several times. See for instance: |
| |
| - David M. Warme |
| https://lists.gnu.org/archive/html/help-bison/2011-04/msg00003.html |
| |
| - box12009 |
| http://lists.gnu.org/archive/html/bug-bison/2016-10/msg00001.html |
| |
| Basically, this reverts: |
| |
| - commit 3d3bc1fe30f356cf674a979409e86ea0f88de4a0 |
| Get rid of (yy)rhs and (yy)prhs |
| |
| - commit d333175f63f402dbadb647175e40ad88bf1defb5 |
| Avoid compiler warning. |
| |
| Note that since these tables are not needed in the generated parsers, |
| no skeleton requests them. This change only brings back their |
| definition to M4, making it possible to user-defined skeletons to use |
| these tables. |
| |
| * src/output.c (muscle_insert_item_number_table): Define. |
| (prepare_rules): Generate the rhs and prhs tables. |
| |
| 2018-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: shorten side-effects on current_type |
| * src/parse-gram.y (tag.opt): Don't change current_type. |
| Rather, return its value. |
| Adjust dependencies. |
| |
| 2018-11-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/symlist.c: here. |
| |
| 2018-11-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't name C++ files *.c |
| * tests/synclines.at (syncline escapes): Here. |
| Otherwise, Clang generates an error and skips the test. |
| |
| 2018-11-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-11-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: factor the symbol definition |
| * src/parse-gram.y (int.opt, string_as_id.opt): New. |
| (symbol_def): Use it. |
| |
| 2018-11-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: improve location of string alias errors |
| * src/parse-gram.y (symbol_def): Pass the right location for symbol_make_alias. |
| * tests/regression.at (Duplicate string): Move to... |
| * tests/input.at: here. |
| (Token collisions): New. |
| |
| 2018-11-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: complain about Bison directives when -Wyacc |
| * src/complain.h, src/complain.c (bison_directive): New. |
| * src/scan-gram.l (BISON_DIRECTIVE): New. |
| Use it for Bison extensions. |
| |
| 2018-11-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: here. |
| |
| 2018-11-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: fix quotation in the test suite |
| * tests/input.at: here. |
| |
| 2018-11-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| %nterm: do not accept character literals |
| Reported by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html |
| |
| * src/complain.h: Formatting change. |
| * src/parse-gram.y (id): Reject character literals used in a context |
| for non-terminals. |
| * tests/input.at (Invalid %nterm uses): Check that. |
| |
| 2018-11-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| %nterm: do not accept numbers nor string alias |
| Reported by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html |
| |
| * src/parse-gram.y (symbol_def): Refuse string aliases and numbers |
| for non-terminals. |
| (prologue_declaration): Recover from errors ended with ';'. |
| * tests/input.at (Invalid %nterm uses): New. |
| |
| 2018-11-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: update |
| |
| 2018-11-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: Here. |
| |
| 2018-11-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * tests/testsuite.at: here. |
| |
| 2018-11-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update ignores |
| |
| 2018-11-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update to use its bitsets |
| Bison's bitset were moved to gnulib. |
| |
| * lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c, |
| * lib/bitset.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, |
| * lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c, |
| * lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h, |
| * lib/lbitset.h, lib/vbitset.c, lib/vbitset.h: |
| Remove. |
| |
| * gnulib: Update. |
| * bootstrap.conf, lib/local.mk: Adjust. |
| |
| 2018-11-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: use conditional dependencies |
| * bootstrap.conf: here. |
| |
| 2018-11-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: run on xenial |
| Xenial (Ubuntu 16.04) is finally available on Travis. Let's use it. |
| |
| Among the changes: |
| |
| - Automake 1.14.1 -> 1.15.0 |
| - Doxygen 1.8.6 -> 1.8.11 |
| - Flex 2.5.35 -> 2.6.0, with plenty of new compiler warnings |
| - Gettext 0.18.3 -> 0.19.7 |
| - Graphviz 2.36.0 -> 2.38.0 |
| - Texinfo 5.2 -> 6.1 |
| |
| * .travis.yml: here. |
| |
| 2018-11-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: we don't need git show |
| * .travis.yml: Don't run it. |
| |
| 2018-11-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| warning: avoid warnings about unreachable code |
| Reported by Uxio Prego. |
| https://lists.gnu.org/archive/html/help-bison/2018-11/msg00031.html |
| |
| We also need to move the unreachable 'goto' to a reachable place, |
| otherwise clang complains about the code being unreachable anyway. |
| See also https://bugs.llvm.org/show_bug.cgi?id=39736. |
| |
| Interestingly, we don't have to apply that trick to |
| `#define YYCDEBUG if (false) std::cerr`, clang does not warn when the |
| code comes from macro expansion. |
| |
| * configure.ac: Use -Wunreachable-code when supported. |
| * data/lalr1.cc, data/yacc.c: Pacify clang's warning about `if (0)` |
| by using a macro. |
| Another possibility was to move this statement to a reachable place. |
| * tests/actions.at, tests/c++.at: Avoid generating unreachable code. |
| |
| 2018-11-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: avoid generating dead code |
| We should probably introduce some struct and functions to deal with |
| stack management, rather than open coding it. yyparse would be much |
| nicer to read, and a better model for possible other skeletons. |
| |
| * data/yacc.c (yyparse::yysetstate): Avoid generating code when |
| neither yyoverflow nor YYSTACK_RELOCATE is defined. |
| |
| 2018-11-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| %expect-rr: tune the number of conflicts per rule |
| Currently on a grammar such as |
| |
| exp : a '1' | a '2' | a '3' | b '1' | b '2' | b '3' |
| a: |
| b: |
| |
| we count only one rr-conflict on the `b:` rule, i.e., we expect: |
| |
| b: %expect-rr 1 |
| |
| although there are 3 conflicts in total. That's because in the |
| conflicted state we count only a single conflict, not three (one for |
| each of the lookaheads: '1', '2', '3'). |
| |
| State 0 |
| |
| 0 $accept: . exp $end |
| 1 exp: . a '1' |
| 2 | . a '2' |
| 3 | . a '3' |
| 4 | . b '1' |
| 5 | . b '2' |
| 6 | . b '3' |
| 7 a: . %empty ['1', '2', '3'] |
| 8 b: . %empty ['1', '2', '3'] |
| |
| '1' reduce using rule 7 (a) |
| '1' [reduce using rule 8 (b)] |
| '2' reduce using rule 7 (a) |
| '2' [reduce using rule 8 (b)] |
| '3' reduce using rule 7 (a) |
| '3' [reduce using rule 8 (b)] |
| $default reduce using rule 7 (a) |
| |
| exp go to state 1 |
| a go to state 2 |
| b go to state 3 |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2013-02/msg00106.html. |
| |
| * src/conflicts.c (rule_has_state_rr_conflicts): Rename as... |
| (count_rule_state_sr_conflicts): this. |
| DWIM. |
| (count_rule_rr_conflicts): Adjust. |
| * tests/conflicts.at (%expect-rr in grammar rules) |
| (%expect-rr too much in grammar rules) |
| (%expect-rr not enough in grammar rules): New. |
| |
| 2018-11-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| %expect-rr: fix the computation of the overall number of conflicts |
| On a grammar such as |
| |
| exp: "num" | "num" | "num" |
| |
| we currently report only one RR conflict, instead of two. |
| |
| This bug is present since the origins of Bison |
| |
| commit 08089d5d35ece0c7d41659cc1bc09638e2abb151 |
| Author: David MacKenzie <djm@djmnet.org> |
| Date: Tue Apr 20 05:42:52 1993 +0000 |
| |
| Initial revision |
| |
| and was preserved in |
| |
| commit 676385e29c4aedfc05d20daf1ef20cd4ccc84856 |
| Author: Paul Hilfinger <Hilfinger@CS.Berkeley.EDU> |
| Date: Fri Jun 28 02:26:44 2002 +0000 |
| |
| Initial check-in introducing experimental GLR parsing. See entry in |
| ChangeLog dated 2002-06-27 from Paul Hilfinger for details. |
| |
| See |
| https://lists.gnu.org/archive/html/bison-patches/2018-11/msg00011.html |
| |
| * src/conflicts.h, src/conflicts.c (count_state_rr_conflicts) |
| (count_rr_conflicts): Use only the correct count of conflicts. |
| * tests/glr-regression.at: Fix expectations. |
| |
| 2018-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: generate *.output files |
| * tests/glr-regression.at: here. |
| |
| 2018-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| %expect: tune the number of conflicts per rule |
| Currently on a grammar such as |
| |
| exp: "number" | exp "+" exp | exp "*" exp |
| |
| we count only one sr-conflict for both binary rules, i.e., we expect: |
| |
| exp: "number" | exp "+" exp %expect 1 | exp "*" exp %expect 1 |
| |
| although there are 4 conflicts in total. That's because in the states |
| in conflict, for instance that for the "+" rule: |
| |
| State 6 |
| |
| 2 exp: exp . "+" exp |
| 2 | exp "+" exp . [$end, "+", "*"] |
| 3 | exp . "*" exp |
| |
| "+" shift, and go to state 4 |
| "*" shift, and go to state 5 |
| |
| "+" [reduce using rule 2 (exp)] |
| "*" [reduce using rule 2 (exp)] |
| $default reduce using rule 2 (exp) |
| |
| we count only a single conflict, although there are two (one on "+" |
| and another with "*"). |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2013-02/msg00106.html. |
| |
| * src/conflicts.c (rule_has_state_sr_conflicts): Rename as... |
| (count_rule_state_sr_conflicts): this. |
| DWIM. |
| (count_rule_sr_conflicts): Adjust. |
| * tests/conflicts.at (%expect in grammar rules): New. |
| |
| 2018-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: reduce scopes |
| * src/conflicts.c, src/reader.c: Minor style changes. |
| |
| 2018-11-21 Paul Hilfinger <hilfingr@eecs.berkeley.edu> |
| |
| allow %expect and %expect-rr modifiers on individual rules |
| This change allows one to document (and check) which rules participate |
| in shift/reduce and reduce/reduce conflicts. This is particularly |
| important GLR parsers, where conflicts are a normal occurrence. For |
| example, |
| |
| %glr-parser |
| %expect 1 |
| %% |
| |
| ... |
| |
| argument_list: |
| arguments %expect 1 |
| | arguments ',' |
| | %empty |
| ; |
| |
| arguments: |
| expression |
| | argument_list ',' expression |
| ; |
| |
| ... |
| |
| Looking at the output from -v, one can see that the shift-reduce |
| conflict here is due to the fact that the parser does not know whether |
| to reduce arguments to argument_list until it sees the token AFTER the |
| following ','. By marking the rule with %expect 1 (because there is a |
| conflict in one state), we document the source of the 1 overall shift- |
| reduce conflict. |
| |
| In GLR parsers, we can use %expect-rr in a rule for reduce/reduce |
| conflicts. In this case, we mark each of the conflicting rules. For |
| example, |
| |
| %glr-parser |
| %expect-rr 1 |
| |
| %% |
| |
| stmt: |
| target_list '=' expr ';' |
| | expr_list ';' |
| ; |
| |
| target_list: |
| target |
| | target ',' target_list |
| ; |
| |
| target: |
| ID %expect-rr 1 |
| ; |
| |
| expr_list: |
| expr |
| | expr ',' expr_list |
| ; |
| |
| expr: |
| ID %expect-rr 1 |
| | ... |
| ; |
| |
| In a statement such as |
| |
| x, y = 3, 4; |
| |
| the parser must reduce x to a target or an expr, but does not know |
| which until it sees the '='. So we notate the two possible reductions |
| to indicate that each conflicts in one rule. |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2013-02/msg00105.html. |
| |
| * doc/bison.texi (Suppressing Conflict Warnings): Document %expect, |
| %expect-rr in grammar rules. |
| * src/conflicts.c (count_state_rr_conflicts): Adjust comment. |
| (rule_has_state_sr_conflicts): New static function. |
| (count_rule_sr_conflicts): New static function. |
| (rule_nast_state_rr_conflicts): New static function. |
| (count_rule_rr_conflicts): New static function. |
| (rule_conflicts_print): New static function. |
| (conflicts_print): Also use rule_conflicts_print to report on individual |
| rules. |
| * src/gram.h (struct rule): Add new fields expected_sr_conflicts, |
| expected_rr_conflicts. |
| * src/reader.c (grammar_midrule_action): Transfer expected_sr_conflicts, |
| expected_rr_conflicts to new rule, and turn off in current_rule. |
| (grammar_current_rule_expect_sr): New function. |
| (grammar_current_rule_expect_rr): New function. |
| (packgram): Transfer expected_sr_conflicts, expected_rr_conflicts |
| to new rule. |
| * src/reader.h (grammar_current_rule_expect_sr): New function. |
| (grammar_current_rule_expect_rr): New function. |
| * src/symlist.c (symbol_list_sym_new): Initialize expected_sr_conflicts, |
| expected_rr_conflicts. |
| * src/symlist.h (struct symbol_list): Add new fields expected_sr_conflicts, |
| expected_rr_conflicts. |
| * tests/conflicts.at: Add tests "%expect in grammar rule not enough", |
| "%expect in grammar rule right.", "%expect in grammar rule too much." |
| |
| 2018-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-11-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| remove ancient lint directives |
| * data/c++.m4, data/yacc.c: Remove surprising remains of lint |
| directives. |
| |
| 2018-11-21 Jannick <thirdedition@gmx.net> |
| |
| doc: calc++: remove ancient fix for flex |
| * doc/bison.texi (Calc++ Scanner): Remove fix for Flex 2.5.31-2.5.33. |
| |
| 2018-11-21 Jannick <thirdedition@gmx.net> |
| |
| doc: calc++: ignore \r in the scaner |
| * doc/bison.texi (Calc++ Scanner): Ignore \r. |
| |
| 2018-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: harmonize the labels of yyparse |
| * data/glr.c, data/lalr1.cc, data/yacc.c: Fix indentation and |
| other formatting issues. |
| |
| 2018-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: avoid lengthy actions |
| We also lack a consistent naming for directive implementations. |
| `directive_skeleton` is too long, `percent_skeleton` is not very nice |
| looking, `process_skeleton` looks ambiguous, `do_skeleton` is somewhat |
| ambiguous too, but seems a better track. |
| |
| * src/parse-gram.y (version_check): Rename as... |
| (do_require): this. |
| (do_skeleton): New. |
| Use it. |
| |
| 2018-11-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: using macros around user types breaks when they include comma |
| We may generate code such as |
| |
| basic_symbol (typename Base::kind_type t, YY_RVREF (std::pair<int,int>) v); |
| |
| which, of course, breaks, because YY_RVREF sees two arguments. Let's |
| not play tricks with _VA_ARGS__, I'm unsure about it portability. |
| Anyway, I plan to change more things in this area. |
| |
| Reported by Sébastien Villemot. |
| http://lists.gnu.org/archive/html/bug-bison/2018-11/msg00014.html |
| |
| * data/variant.hh (b4_basic_symbol_constructor_declare) |
| (b4_basic_symbol_constructor_define): Don't use macro on user types. |
| * tests/types.at: Check that we support pairs. |
| |
| 2018-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| README: update |
| |
| 2018-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: remove duplicate definition |
| Probably imported by 6d58c632025cb6928a90e4176577982bfb9c3981, a merge |
| commit. |
| |
| * tests/atlocal.in (POSIXLY_CORRECT_IS_EXPORTED): Define it once. |
| |
| 2018-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: fix use of _Noreturn |
| In C++, [[noreturn]] must not be between "static" and the rest of the |
| function signature, it must precede it. C's _Noreturn does not seem |
| to have such a constraint, but it is therefore compatible with the C++ |
| constraint. Since we #define _Noreturn as [[noreturn]] is modern C++, |
| be sure to push the _Noreturn first. |
| |
| Unfortunately this was not caught by the test suite, because it always |
| loads config.h first, and config.h contains another definition of |
| _Noreturn that does not use [[noreturn]], and hides ours. That's |
| probably a sign we should avoid always loading config.h. |
| |
| * data/glr.c (yyFail, yyMemoryExhausted): here. |
| |
| 2018-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: run the api.value.type tests for all C++ standards |
| * tests/local.at (AT_LANG_FOR_EACH_STD): New. |
| (AT_REQUIRE_CXX_VERSION): Rename as... |
| (AT_REQUIRE_CXX_STD): this. |
| Accept an argument for what to do when the requirement is not met. |
| * tests/types.at (api.value.type): Check all the C++ stds. |
| |
| 2018-11-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: split the ASAN job in two |
| The following commit introduce even more compilations/runs than |
| before, and with ASAN on, we go beyond to 50min credit from Travis. |
| |
| * .travis.yml (Clang 7 libc++ and ASAN): Split in two. |
| |
| 2018-11-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: use YY_CPLUSPLUS |
| * data/c++.m4: here. |
| |
| 2018-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: factor the handling of __cplusplus into YY_CPLUSPLUS |
| * data/c++.m4 (b4_cxx_portability): Define it. |
| Use it. |
| * data/lalr1.cc, data/variant.hh: Use it. |
| |
| 2018-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: formatting changes |
| * src/scan-gram.l: here. |
| |
| 2018-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: clarify some magic constant |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): here. |
| |
| 2018-11-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: remove useless includes |
| * examples/c++/variant-11.yy, examples/c++/variant.yy: here. |
| Fix warning when storing a long into an int. |
| |
| 2018-11-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: compile the C++ examples with warnings |
| * examples/c++/local.mk: Pass $(WARN_CXXFLAGS_TEST). |
| |
| 2018-11-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: deprecate %error-verbose |
| It is unfortunate that %error_verbose was properly diagnosed as |
| obsoleted by "%define parse.error verbose", but %error-verbose was |
| not. |
| |
| * src/parse-gram.y (%error-verbose): Remove support. |
| * src/scan-gram.l: Do it here instead, with a warning. |
| * tests/input.at (Deprecated directives): Check it. |
| |
| 2018-11-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: migrate from %error-verbose to %define parse.error verbose |
| * tests/actions.at, tests/c++.at, tests/conflicts.at, |
| * tests/cxx-type.at, tests/existing.at, tests/glr-regression.at, |
| * tests/headers.at, tests/input.at, tests/java.at, tests/javapush.at, |
| * tests/local.at, tests/regression.at, tests/skeletons.at, |
| * tests/torture.at: |
| Here. |
| |
| 2018-11-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| parser: deprecate %nterm |
| It has several weaknesses. |
| Reported by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html |
| |
| * src/scan-gram.l: here. |
| |
| 2018-11-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix syncline tests |
| These tests are skipped with GCC: |
| |
| "\"".c:1:5: error: function declaration isn't a prototype [-Werror=strict-prototypes] |
| int main() { return 0; } |
| ^~~~ |
| |
| * tests/synclines.at: Stop writing C++ in C. |
| * tests/local.at: Formatting changes. |
| |
| 2018-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: expected features of Bison 3.3 |
| |
| 2018-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc: reduce scope in push mode |
| * data/yacc.c (yypull_parse): Here. |
| |
| 2018-11-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * data/c++.m4, data/glr.c, data/lalr1.java, data/yacc.c |
| (yytranslate, YYTRANSLATE): Harmonize comments. |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: simplify a default construction |
| * data/lalr1.cc (yytnamerr_): here. |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: no longer accept %define variable names in quotes |
| It was never documented. |
| |
| * src/parse-gram.y (variable): Here. |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| dogfooding: use api.value.type union |
| * src/parse-gram.y (api.value.type): Set to union. |
| Replace occurrences of %union with explicit %types. |
| * src/scan-gram.l: Adjust yylval's field names. |
| (RETURN_VALUE): No longer needs the Field argument. |
| Use it more. |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| djgpp: remove |
| Support for DJGPP was announced to be removed in the NEWS of Bison |
| 3.1 (2018-08-27) unless someone expressed interest. There was no answer. |
| |
| * djgpp: Remove. |
| * NEWS, Makefile.am, cfg.mk, po/POTFILES.in: Adjust. |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| scanner: simplify use of gettext |
| * src/scan-gram.l (unexpected_end): Leave the actual call to gettext |
| to the caller. |
| |
| 2018-11-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean up the scanner and parser |
| * src/scan-gram.l: Formatting changes. |
| Add "missing" assertion for symmetry. |
| * src/parse-gram.y: Formatting changes. |
| |
| 2018-11-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2018-11-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.2.1 |
| * NEWS: Record release date. |
| |
| 2018-11-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix issues in the generated tarball |
| Reported by Andre da Costa Barros. |
| https://savannah.gnu.org/patch/?9716 |
| |
| * examples/calc++/local.mk: We no longer generate position.hh and |
| stack.hh. Leaving them here triggers their concurrent generation, |
| which fails. |
| (%C%_calc___CPPFLAGS): Fix the extracted headers in the source tree. |
| * examples/mfcalc/local.mk (%C%_mfcalc_CPPFLAGS): Ditto. |
| |
| 2018-11-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix typo |
| Reported by Horst Von Brand. |
| https://savannah.gnu.org/support/?109580 |
| |
| * examples/local.mk (.PHOMY): Rename as... |
| (.PHONY): this. |
| |
| 2018-11-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-11-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: ship them |
| Currently, the examples are extracted on the user's side. |
| Unfortunately, that requires that the user has Perl, which is |
| otherwise not needed for Bison. Let's ship the examples instead. |
| |
| The examples were handled this way so that we could depend on |
| configure flags: if --enable-gcc-warnings is passed, it is understood |
| as "I'm a maintainer", so the examples are generated with `#line`s. |
| Regular users should not see them, so they are now unconditionally |
| removed when rolling a tarball. |
| |
| Reported by Mike Frysinger. |
| https://lists.gnu.org/archive/html/bison-patches/2015-04/msg00000.html |
| |
| * examples/local.mk: Ship all the extracted files. |
| (examples-unline): New. |
| Make sure that the generated tarballs do not contain the #lines. |
| |
| 2018-11-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: minor fixes in doc/ |
| * doc/local.mk: Consistently use *.tmp for temporary files. |
| Fix comments. |
| |
| 2018-11-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: maximize chances of errors sooner |
| * .travis.yml: Try clang and icc soon, so that we don't have to wait |
| for the end of the run to know that they fail. |
| |
| 2018-11-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: improve the generated documentation |
| * data/lalr1.cc, data/location.cc: Improve documenting comments. |
| * tests/c++.at (Doxygen Documentation): Fix AT_BISON_OPTION_PUSHDEFS, |
| so that the generated yyerror is correct. |
| * tests/c++.at, tests/headers.at: Prefer %empty. |
| |
| 2018-11-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't fail if the C++ compiler does not work |
| Also, make sure that `make dist` generates a correct tarball even if |
| the C++ compiler does not work. |
| |
| Reported by Nelson H. F. Beebe. |
| |
| * m4/cxx.m4 (BISON_CXX_WORKS): Define to true/false instead of |
| true/exit 77. The latter is too dangerous to use (it directly quits). |
| (ENABLE_CXX): New name for the Automake conditional, for consistency |
| with ENABLE_CXX11 etc. |
| * tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Adjust to the new |
| semantics of BISON_CXX_WORKS. |
| * examples/c++/local.mk: Skip the variant test if C++ does not work. |
| * examples/calc++/local.mk: Likewise. |
| |
| 2018-11-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't disable C++ warnings in C files |
| This triggers error with GCC. |
| See eff6739124c61bb5660d78453210d1d6a17d30e7. |
| |
| * tests/testsuite.h: Disable -Wzero-as-null-pointer-constant only for |
| C++. |
| |
| 2018-11-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: workaround portability issue |
| On some systems (x86_64-pc-solaris2.11), with Developer Studio 12.5's |
| CC, we get: |
| |
| ".../include/CC/Cstd/vector.cc", line 127: Error: Cannot assign const yy::parser::stack_symbol_type to yy::parser::stack_symbol_type without "yy::parser::stack_symbol_type::operator=(const yy::parser::stack_symbol_type&)";. |
| ".../include/CC/Cstd/vector", line 475: Where: While instantiating "std::vector<yy::parser::stack_symbol_type>::__insert_aux(yy::parser::stack_symbol_type*, const yy::parser::stack_symbol_type&)". |
| ".../include/CC/Cstd/vector", line 475: Where: Instantiated from non-template code. |
| 1 Error(s) detected. |
| |
| Don't expect __cplusplus to be always defined. If it's not, consider |
| this is C++98. |
| |
| Reported by Nelson H. F. Beebe. |
| |
| * data/c++.m4, data/lalr1.cc, examples/c++/variant.yy, tests/local.at, |
| * tests/testsuite.h: |
| An undefined __cplusplus means pre C++11. |
| |
| 2018-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: work around getopt portability issues |
| On some systems, we don't use our getopt. As a consequence the error |
| messages vary: |
| |
| $ bison --skeleton |
| bison: option requires an argument -- skeleton |
| Try 'bison --help' for more information. |
| |
| instead of |
| |
| bison: option '--skeleton' requires an argument |
| Try 'bison --help' for more information. |
| |
| Reported by Jannick and Nelson H. F. Beebe. |
| https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00140.html |
| |
| * tests/input.at (Invalid number of arguments): work around getopt |
| portability issues. |
| |
| 2018-11-03 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: -Wzero-as-null-pointer-constant was added to GCC 4.7 |
| It is not supported by previous versions. |
| See https://www.gnu.org/software/gcc/gcc-4.7/changes.html |
| Reported by Nelson H. F. Beebe. |
| |
| * doc/bison.texi (Calc++ Scanner): here. |
| |
| 2018-11-02 Adam Sampson <ats@offog.org> |
| |
| examples: #include <cstring> in calc++ |
| strerror is defined by <string.h>, and recent versions of GNU libstdc++ |
| no longer include this automatically from <string>. |
| |
| 2018-10-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: provide a definition of _Noreturn that works for C++ |
| On Solaris, GCC 7.3 defines: |
| |
| -std=c++14 -std=c++17 |
| __cplusplus 201402L 201703L |
| __STDC_VERSION__ 199901L 201112L |
| |
| So the current #definition of _Noreturn sees that 201112 <= |
| __STDC_VERSION__, i.e., that C11 is supported, so it expects _Noreturn |
| to be supported. Apparently it is not. |
| |
| This is only for C++, the test suite works for C. However, the test |
| suite does not try several C standards, maybe we should... |
| |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00064.html |
| |
| * data/c.m4 (b4_attribute_define): Define _Noreturn as [[noreturn]] in |
| modern C++. |
| |
| 2018-10-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c: update the definition of _Noreturn |
| Does not work on Solaris 11.3 x86/64: |
| |
| 479. c++.at:1293: testing C++ GLR parser identifier shadowing ... |
| ======== Testing with C++ standard flags: '-std=c++17' |
| ./c++.at:1332: $BISON_CXX_WORKS |
| stderr: |
| stdout: |
| ./c++.at:1332: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS |
| stderr: |
| input.cc:837:8: error: '_Noreturn' does not name a type |
| static _Noreturn void |
| ^~~~~~~~~ |
| input.cc:845:8: error: '_Noreturn' does not name a type |
| static _Noreturn void |
| ^~~~~~~~~ |
| |
| Reported by Kiyoshi Kanazawa. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00051.html |
| |
| * data/c.m4 (b4_attribute_define): Use the snippet which is currently |
| in gnulib's m4/gnulib-common.m4 (which seems a little more advanced |
| than lib/_Noreturn.h). |
| |
| 2018-10-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: don't expect the shell to support 'local' |
| It doesn't work on Solaris 11.3 x86/64. |
| Reported by Kiyoshi Kanazawa. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00051.html |
| |
| * examples/test: Don't use 'local'. |
| |
| 2018-10-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: fix warning |
| Reported by Hans Åberg. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00047.html |
| |
| * lib/bitset.c (bitset_count_): here. |
| |
| 2018-10-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix use of gnulib Make variables |
| Reported by Kiyoshi Kanazawa. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00048.html |
| |
| * lib/local.mk (lib_libbison_a_LIBADD): Merge into... |
| * src/local.mk (src_bison_LDADD): here. |
| |
| 2018-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2018-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.2 |
| * NEWS: Record release date. |
| |
| 2018-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: don't depend on the libc to generate bison.help |
| The "Report translation bugs to..." part of --help is issued only on |
| glibc systems. So if the tarball is not wrapped on such a system, and |
| used on such a system (or the converse), then bison.help will differ |
| on the user's system, and help2man will be called to update bison.1. |
| |
| But help2man should not be a requirement. |
| |
| Reported by Alexandre Duret-Lutz. |
| |
| * doc/local.mk (doc/bison.help): Remove the possible doc about |
| translation bugs. |
| Pass LC_ALL=C, as reported in src/getargs.c's usage(). |
| (doc/cross-options.texi): Use bison.help instead of calling bison |
| --help. |
| |
| 2018-10-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: always issue the "generated by" message |
| Some users rely on this sentence to know that the file can be ignored. |
| Reported by Alexandre Duret-Lutz. |
| |
| * data/bison.m4 (b4_generated_by): New. |
| (b4_copyright): Use it. |
| * data/location.cc, data/stack.hh: Use it too, for the stub files |
| (position.hh and stack.hh). |
| |
| 2018-10-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| cfg.mk: remove exceptions for timevar |
| They appear to be no longer needed. |
| |
| * cfg.mk: here. |
| |
| 2018-10-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean up src/AnnotationList.c |
| * src/AnnotationList.c: Reduce scopes. |
| |
| 2018-10-28 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: clean up print.c |
| * src/print.c: Reduce scopes. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up bbitset.h |
| * lib/libiberty.h: Inline in... |
| * lib/bbitset.h: here. |
| * lib/local.mk: Adjust. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up bitset.h |
| * lib/bitset.h: Fix include order. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up vbitset.c |
| * lib/vbitset.c: Reduce scopes, etc. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up lbitset.c |
| * lib/lbitset.c: Reduce scopes, etc. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up ebitset.c |
| * lib/ebitset.c: Reduce scopes, etc. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up bitset_stats.c |
| * lib/bitset_stats.c: Reduce scopes, etc. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up bitset.c |
| * lib/bitset.c: Reduce scopes, etc. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bitset: clean up abitset.c |
| * lib/abitset.c: Reduce scopes, etc. |
| |
| 2018-10-27 Jannick <thirdedition@gmx.net> |
| |
| xml2dot.xsl: fix typos in comments |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix distcheck |
| The extracted example, simple.yy, does not use %require "3.2", so it |
| generates a stack.hh, which breaks distcheck. |
| |
| * doc/bison.texi: Fix it. |
| |
| 2018-10-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: prepare for 3.2 |
| |
| 2018-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: beware of Windows file name constraints |
| Don't expect to be able to build a file named '"\"".y' (6 characters) |
| on Windows. |
| |
| Reported by Jannick. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00042.html |
| |
| * tests/synclines.at (syncline escapes): Skip if we failed to create |
| the file. |
| |
| 2018-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix invocation of m4_map |
| * tests/actions.at, tests/synclines.at: m4_map takes a list of |
| arguments in $2, m4_map_args takes arguments in $2, $3, etc. |
| |
| 2018-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| * README, doc/bison.texi, examples/README, examples/c++/README: here. |
| |
| 2018-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add a Makefile for C++ short examples |
| * examples/c++/Makefile: New. |
| * examples/c++/local.mk, examples/c++/README: Adjust. |
| |
| 2018-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: some improvements |
| * doc/bison.texi (Calc++ Scanner): Show how exception can be thrown |
| from auxiliary functions. |
| Clarify the meaning of the various flex %options we use. |
| Get rid of a warning. |
| (Calc++ Parsing Driver): Use the parser as a functor. |
| |
| 2018-10-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: check the errors |
| * examples/test (run): Check stderr, unless -noerr is passed. |
| * examples/calc++/calc++.test, examples/mfcalc/mfcalc.test: Check |
| errors. |
| |
| 2018-10-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: minor fixes |
| * doc/bison.texi: Simplify wording. |
| Fix Texinfo error. |
| (Complete Symbols): Handle the token EOF. |
| (Calc++ Parser): In the modern C++ world, prefer assignment to swap. |
| (Strings are Destroyed): Prefer an explicit 'continue' to a comment. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| configure: quit on trying to get ICC and Flex be friends |
| The CI is using Flex 2.5.35. And ICC is too picky for it. Let's stop |
| making these warnings errors. I wish I could disable them in the |
| source files using the ICC version and the Flex version, but ICC's |
| pragma support is unclear, and I'm tired of fighting it. |
| |
| * configure.ac (FLEX_SCANNER_CXXFLAGS): Make warnings warnings. |
| * examples/c++/local.mk: Comment changes. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: mention earlier how to disable the generation of location.hh |
| Suggested by Victor Khomenko. |
| |
| * doc/bison.texi (C++ Bison Interface): Here. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: std::to_string is available in C++11 |
| Reported by Victor Khomenko. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00033.html |
| |
| * doc/bison.texi, examples/c++/variant-11.yy: Use std::to_string |
| instead of ours. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: move the variant examples into the C++ directory |
| * examples/variant-11.test examples/variant-11.yy, |
| * examples/variant.test examples/variant.yy: |
| Move into examples/c++/. |
| * examples/c++/README: New. |
| * examples/README, examples/c++/local.mk, examples/local.mk: |
| Adjust. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: an introductory example for C++ |
| Suggested by Victor Khomenko. |
| http://lists.gnu.org/archive/html/bug-bison/2018-08/msg00037.html |
| |
| * doc/bison.texi (A Simple C++ Example): New. |
| * examples/c++/local.mk, examples/c++/simple.test: New. |
| Extract, check, and install this new example. |
| * examples/local.mk: Adjust. |
| * examples/test: Adjust to the case where the dirname differs |
| from the test name. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: remove a few copies of the Copyright from the generated Makefile |
| * build-aux/local.mk, cfg.mk, examples/calc++/local.mk, |
| * examples/local.mk, examples/mfcalc/local.mk, |
| * examples/rpcalc/local.mk, lib/local.mk, src/local.mk, |
| * tests/local.mk: |
| Use Automake comments so that we don't get a copy of each in the |
| generated Makefile. |
| |
| 2018-10-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: make operator() an alias to the parse function |
| * data/glr.cc, data/lalr1.cc (operator()): New. |
| * doc/bison.texi: Update. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: enable more warnings during tests |
| Prompted by Derek Clegg. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00018.html |
| |
| * configure.ac: here. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: work around strange typing issues |
| On the CI, both GCC and Clang report: |
| |
| src/parse-gram.c: In function 'yy_lac': |
| src/parse-gram.c:1479:29: error: format '%hd' expects argument of type 'int', |
| but argument 3 has type 'yytype_int16 {aka long int}' [-Werror=format=] |
| YYDPRINTF ((stderr, " G%hd", yystate)); |
| ^ |
| |
| Although yytype_int16 is supposed to be a short int, not a long int. |
| This must be explored. |
| |
| * data/yacc.c (yy_lac): Work around typing issue. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: don't define _Noreturn uselessly |
| Clang warns: |
| |
| aux/x.h:97:11: error: macro name is a reserved identifier |
| [-Werror,-Wreserved-id-macro] |
| # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) |
| |
| Reported by Derek Clegg. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00024.html |
| |
| * data/c.m4 (b4_attribute_define): Don't define _Noreturn unconditionally. |
| * data/glr.c: Ask for _Noreturn. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| pacify ICC 16.0.3 20160415 |
| Found on the CI. |
| |
| yacc.c: |
| |
| error #2259: non-pointer conversion from "int" to "yytype_int16={short}" may lose significant bits |
| yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyesp |
| ^ |
| |
| glr.c: |
| |
| error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits |
| yybool yynormal YY_ATTRIBUTE_UNUSED = (yystackp->yysplitPoint == YY_NULLPTR); |
| ^ |
| |
| error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits |
| return yypact_value_is_default (yypact[yystate]); |
| ^ |
| |
| error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits |
| return 0 < yyaction; |
| ^ |
| |
| error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits |
| return yyaction == 0; |
| ^ |
| |
| error #2259: non-pointer conversion from "int" to "yybool={unsigned char}" may lose significant bits |
| yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY; |
| ^ |
| |
| * data/glr.c, data/yacc.c: Avoid these warnings. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| flex: work around more warnings |
| * doc/bison.texi: here. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: clang 5 defines nullptr as a macro |
| * examples/variant.yy: So don't do it. |
| * examples/variant-11.yy: Fix comment. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: be strict about types |
| * data/glr.c: Don't use `foo |= bar` with foo and bar being yybool: |
| the result appears to be an int, not a yybool. |
| Use yybool where appropriate. |
| Add casts where needed. |
| |
| 2018-10-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: fix warnings about integral types |
| Reported by Derek Clegg. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00018.html |
| |
| Rather than adding casts, we should be more careful with types. For |
| instance yystate should be a yytype_int16. But currently we can't: it |
| is also used sometimes for storing other things that state numbers. |
| |
| * data/yacc.c (yyparse): Add missing casts. |
| |
| 2018-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| yacc.c: clarify the computation of yystate |
| The yacc.c skeleton is old, and was using many tricks to save |
| registers. Today's register allocators can do this themselves. Let's |
| keep the code simpler to read and let compilers do their job. |
| |
| * data/yacc.c: Avoid using yystate for different types of content. |
| An inline function would be better, but doing this portably will be |
| a problem. |
| |
| 2018-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| printf returns a signed int |
| * tests/local.at: Adjust location_print's signature. |
| |
| 2018-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: be strict about types |
| * tests/actions.at, tests/c++.at, tests/cxx-type.at, |
| * tests/glr-regression.at, tests/local.at, tests/torture.at, |
| * tests/types.at: |
| Pay stricter attention to types to avoid warnings. |
| |
| 2018-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix signedness issues |
| * data/lalr1.cc, data/stack.hh: The callers of stack use int, while |
| stack is based on size_type. Add overloads to avoid warnings. |
| |
| 2018-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: minor changes |
| * data/lalr1.cc: Fix oldish comment. |
| * data/stack.hh: Prefer typename for type names. |
| Use size() instead of duplicating it. |
| * examples/variant-11.yy, examples/variant.yy (yylex): Use int, |
| as this is the type of the semantic value. |
| |
| 2018-10-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| all: display a clear warning about private macros |
| * data/bison.m4 (b4_disclaimer): New. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it. |
| |
| 2018-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: minor simplification |
| * data/stack.hh: Prefer a default argument value to two constructors. |
| |
| 2018-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| all: avoid useless comments and #lines |
| Currently we emit useless code for places where we might issue user |
| content, but there is none. This commit avoids this. Besides, some |
| of the comments looked like implementation details ("Copy the first |
| part of user declarations"), rather than made for the reader of the |
| result ("First part of user prologue"). |
| |
| On Bison's parse-gram.c we get: |
| |
| @@ -76,10 +76,6 @@ |
| #define yynerrs gram_nerrs |
| |
| -/* Copy the first part of user declarations. */ |
| - |
| -#line 82 "src/parse-gram.c" /* yacc.c:339 */ |
| - |
| |
| * data/bison.m4 (b4_define_user_code): Accept a comment to document |
| the section. |
| Do not emit any code if the content is empty. |
| Adjust callers to not emit the comment. |
| Do not |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, data/yacc.c: |
| Adjust. |
| |
| 2018-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: refactor |
| * tests/actions.at, tests/synclines.at: Prefer iteration to |
| copy-paste. |
| |
| 2018-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: rename AT_SKEL_CC_IF/AT_SKEL_JAVA_IF as AT_CXX_IF/AT_JAVA_IF |
| The previous name is too obscure, and the other macros for C++ use |
| CXX, not CC. |
| |
| * tests/local.at (AT_SKEL_CC_IF, AT_SKEL_JAVA_IF): Rename as... |
| (AT_CXX_IF, AT_JAVA_IF): these. |
| Adjust callers. |
| |
| 2018-10-21 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: check that emplace for rvalues works |
| See the previous commit. |
| |
| * tests/local.at (AT_REQUIRE_CXX_VERSION): New. |
| * tests/types.at (api.value.type): Check emplace in C++14. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: prefer a perfect forwarding version of variant's emplace |
| * data/variant.hh (emplace): In modern C++, use only a perfect |
| forwarding version. |
| And use it. |
| * doc/bison.texi: Document it. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: prefer 'emplace' to 'build' |
| When we introduced variants in Bison, C++ did not have the 'emplace' |
| functions, and we chose 'build'. Let's align with modern C++ and |
| promote 'emplace' rather than 'build'. |
| |
| * data/lalr1.cc, data/variant.hh (emplace): New. |
| (build): Deprecate in favor of emplace. |
| * doc/bison.texi: Adjust. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| %printer: promote yyo rather than yyoutput |
| * doc/bison.texi: Promote yyo rather than yyoutput. |
| |
| * data/c.m4, data/glr.cc, tests/types.at, tests/calc.at, |
| tests/regression.at: Adjust. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: improve the C++ section |
| * doc/bison.texi (C++ Parser): file.hh and location.hh are no longer |
| mandatory. |
| Various minor fixes. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: reorder C++ sections |
| * doc/bison.texi (C++ Parser Interface): Document before semantic_type |
| and location_type. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| git: don't ignore auxiliary Texinfo files |
| As a matter of fact, I think it is wrong to gitignore generated files |
| that belong to the build tree. There should be the strict minimum, |
| and it's up to people that build in place to adjust their own |
| ~/.gitignore. |
| |
| * doc/.gitignore: here. |
| Remove files we no longer produce (thanks to texi2dvi). |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: do not exhibit private macros |
| * examples/variant-11.yy: here. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: don't obfuscate std::move when not needed |
| * data/lalr1.cc, data/variant.hh: Avoid macros that depend on the |
| version of C++ when not needed. |
| |
| 2018-10-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: add missing gnulib libs |
| Reported by Denis Excoffier. |
| |
| * lib/local.mk, src/local.mk: here. |
| |
| 2018-10-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2018-10-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.1.91 |
| * NEWS: Record release date. |
| |
| 2018-10-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-10-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: force stack resizing with unique_ptr |
| In the previous commit we fixed a problem when the C++ stack was |
| resized. The test was using ints. Let's add a test with someone |
| quite touchy: unique_ptr |
| |
| * examples/variant-11.yy: Accept an argument, which is the number of |
| numbers to send to the parser. |
| * examples/variant-11.test: Check with many numbers. |
| |
| 2018-10-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: fix stack symbol move |
| In some casing, once we moved a stack symbol, we forget to mark the |
| source stack symbol as emptied. As a consequence, it may be destroyed |
| a second time. |
| |
| This happens when the stack has to be resized. |
| |
| * data/lalr1.cc (stack_symbol_type::stack_symbol_type): Record that |
| the source was emptied. |
| (stack_symbol_type::operator=): Likewise. |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): Force the stack |
| to be resized. Check its content. |
| |
| 2018-10-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: improve the doc of the examples |
| * examples/README: here. |
| |
| 2018-10-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: recognize C++ even when it's not lalr1.cc or glr.cc |
| * src/reader.c (grammar_rule_check_and_complete): If a user uses her |
| own skeleton but sets the language to C++, recognize it as C++. |
| |
| 2018-10-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2018-10-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.1.90 |
| * NEWS: Record release date. |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: don't generate the position/stack files |
| * examples/variant-11.yy, examples/variant.yy: Require 3.2. |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| pacify syntax-checks |
| * lib/lbitset.c, tests/c++.at: here. |
| * cfg.mk: Add exceptions. |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| generate the default action only for C++ |
| This commit adds restrictions to what was done in |
| 01898726e27c8cf64f8fcea7f26f8ce62f3f5cf2 [1]. |
| |
| Rici Lake [2] has shown that it's risky to disable the pre-action, at |
| least now. Also, generating the default $$ = $1 action can have bad |
| effects in some cases [3]. |
| |
| The original change [1] was prompted for C++. Let's try it there |
| only, for a start. We could restrict it further to lalr1.cc with |
| variants, but we need to see in the wild how this change behaves. And |
| it is not unreasonable to expect grammar files in C++ to behave better |
| wrt types. |
| |
| See |
| [1] https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00050.html |
| [2] https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00061.html |
| [3] https://lists.gnu.org/archive/html/bison-patches/2018-10/msg00066.html |
| |
| * src/getargs.c: Style changes. |
| * src/reader.c (grammar_rule_check_and_complete): Complete only for |
| C++. |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-10-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: let %require "3.2" disable the generation of obsolete files |
| The files stack.hh and position.hh are deprecated. Rather than |
| devoting specify %define variables to discard them (api.position.file |
| and api.stack.file), and rather than having to use special rules when |
| api.location.file is used, let's simply decide that from %require |
| "3.2" onwards, these files will not be generated. |
| |
| The only noticeable thing here is that, in order to be able to check |
| the behavior of %require "3.2", to have this version (which is still |
| 3.1-*) to accept %require "3.2". |
| |
| * src/gram.h, src/gram.c (required_version): New. |
| * src/parse-gram.y (version_check): Set it. |
| * src/output.c (prepare): Pass it m4. |
| * data/bison.m4 (b4_required_version_if): Receive it and use it. |
| * data/location.cc, data/stack.hh: Replace the api.*.file with only |
| required version comparison. |
| * tests/input.at: No longer check api.stack.file and api.position.file. |
| * NEWS, doc/bison.texi: Don't mention them. |
| Document the %require 3.2 behavior. |
| * tests/output.at: Use %require 3.2 instead. |
| |
| 2018-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| java: bump to Java SE 7 |
| macOS 10.14 no longer supports versions of Java earlier than 5. |
| And Java 6 will be deprecated by the end of this year. So let's move |
| our requirement to Java 7. |
| Reported by Yu Yijun. |
| https://lists.gnu.org/archive/html/bug-bison/2018-09/msg00060.html |
| Suggested by Paul Eggert and Bruno Haible. |
| http://lists.gnu.org/archive/html/bug-gnulib/2018-10/msg00094.html |
| |
| * configure.ac: Require Java 7, both compiler and runtime. |
| |
| 2018-10-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: do not advertise %nterm |
| Reported by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00000.html |
| |
| * NEWS, doc/bison.texi: here. |
| |
| 2018-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| generate the default semantic action |
| Currently, in C, the default semantic action is implemented by being |
| always run before running the actual user semantic action. As a |
| consequence, when the user action is run, $$ is already set as $1. |
| |
| In C++ with variants, we don't do that, since we cannot manipulate the |
| semantic value without knowing its exact type. When variants are |
| enabled, the only guarantee is that $$ is default contructed and ready |
| to the used. |
| |
| Some users still would like the default action to be run with |
| variants. Frank Heckenbach's parser in |
| C++17 (http://lists.gnu.org/archive/html/bug-bison/2018-04/msg00011.html) |
| provides this feature, but relying on std::variant's dynamic typing, |
| which we forbid in lalr1.cc. |
| |
| The simplest seems to be actually generating the default semantic |
| action (in all languages/skeletons). This makes the pre-action (that |
| sets $$ to $1) useless. But... maybe some users depend on this, in |
| spite of the comments that clearly warn againt this. So let's not |
| turn this off just yet. |
| |
| * src/reader.c (grammar_rule_check_and_complete): Rename as... |
| (grammar_rule_check_and_complete): this. |
| Install the default semantic action when applicable. |
| * examples/variant-11.yy, examples/variant.yy, tests/calc.at: |
| Exercise the default semantic action, even with variants. |
| |
| 2018-10-14 Jannick <thirdedition@gmx.net> |
| |
| xml2xhtml.xsl: add UTF-8 encoding |
| To make arrows appear nicely in the browser. Currently it is shown as |
| some garbled something in mine (Firefox). |
| |
| * data/xslt/xml2xhtml.xsl: here. |
| |
| 2018-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: reorder some calls to separate checks from assignments |
| * src/reader.c (packgram): Move assignments to rules[ruleno] after the |
| checks on the rule. |
| |
| 2018-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: style: add missing space before parens |
| * data/c++.m4, data/lalr1.cc, data/stack.hh, data/variant.hh, |
| * examples/variant-11.yy: here. |
| |
| 2018-10-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update timevar |
| See |
| https://lists.gnu.org/archive/html/bug-gnulib/2018-10/msg00005.html. |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/vbitset.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/vbitset.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/lbitset.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/lbitset.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/ebitset.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/ebitset.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitsetv.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitsetv.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitsetv-print.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitsetv-print.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitset_stats.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitset_stats.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitset.c |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bitset.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/bbitset.h |
| |
| 2018-10-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/abitset.c |
| |
| 2018-10-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: modernize lib/abitset.h |
| |
| 2018-10-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: issue a better CPP guard and Doxygen file command |
| Currently we use "<dir><api.location.file>" as \file argument, and as |
| base for the CPP guard. This is not nice when <dir> is absolute, in |
| which case it is expected that the user will use api.location.include |
| to get something nicer. If defined, use that name instead. |
| |
| * data/location.cc (b4_location_path): New. |
| Use it. |
| * tests/c++.at (Shared locations): Check the guard and Doxygen doc. |
| |
| 2018-10-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: remove stray empty line |
| * data/stack.hh: here. |
| |
| 2018-10-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: spell check |
| |
| 2018-10-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: document api.*.file and the like |
| * doc/bison.texi (Exposing the Location Classes): New. |
| (%define Summary): Document api.location.file, api.location.include, |
| api.stack.file and api.position.file. |
| (C++ Bison Interface): stack.hh and position.hh are deprecated. |
| |
| 2018-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: add missing gnulib libs |
| * src/local.mk (LDADD): Here. |
| |
| 2018-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: let timevar be dealt with by gnulib |
| * lib/local.mk (lib_libbison_a_SOURCES): Remove timevar. |
| |
| 2018-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix distcheck |
| Now that distcheck no longer fails (see previous commit), let's |
| address the shortcomings. |
| |
| * Makefile.am (CLEANDIRS, clean-local): New. |
| * doc/local.mk, examples/calc++/local.mk, examples/local.mk, |
| * examples/mfcalc/local.mk, examples/rpcalc/local.mk, |
| * src/local.mk |
| (CLEANDIRS): Get rid of Apple's *.dSYM directories. |
| (CLEANFILES): Get rid of *.output files. |
| * examples/variant-11.yy, examples/variant.yy: Don't generate |
| any of the auxiliary files (location.hh and the like). |
| |
| 2018-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| README: work around a nasty behavior of gettext |
| `make update-po` runs: |
| |
| package_gnu="$(PACKAGE_GNU)"; \ |
| test -n "$$package_gnu" || { \ |
| if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ |
| LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ |
| -size -10000000c -exec grep 'GNU @PACKAGE@' \ |
| /dev/null '{}' ';' 2>/dev/null; \ |
| else \ |
| LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ |
| fi; \ |
| } | grep -v 'libtool:' >/dev/null; then \ |
| package_gnu=yes; \ |
| else \ |
| package_gnu=no; \ |
| fi; \ |
| }; \ |
| |
| and based on the result, put GNU or not in the following line from |
| bison.pot: |
| |
| # This file is distributed under the same license as the GNU bison package. |
| |
| It turns out that in my environment some log files had the 'GNU bison' |
| string (note the lower case), but in distcheck, these files are no |
| longer visible, so the generate bison.pot was different, and distcheck |
| failed because we try to update bison.pot, which is read only in |
| distcheck. |
| |
| The heuristics should look accept 'GNU Bison', not just 'GNU bison'. |
| But let's please it to make sure we have our 'GNU'. |
| |
| * README: Mention 'GNU bison'. |
| |
| 2018-10-07 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: document api.*.file changes |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: provide a means to control how location.hh is included |
| Users may want to generate the location file elsewhere, say |
| $top_srcdir/include/ast/location.hh. Yet, we should not generate |
| `#include "$top_srcdir/include/ast/location.hh"` but probably |
| something like `#include <ast/location.hh>`, or `#include |
| "ast/location.hh", or `#include <location.hh>`. It entirely depends |
| on the compiler flags (-I/-isystem) that are used. Bison cannot guess |
| what is expected, so let's give the user a means to tell how the |
| location file should be included. |
| |
| * data/location.cc (b4_location_file): New. |
| * data/glr.cc, data/lalr1.cc: Use it. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: support absolute api.location.file names |
| In the case a user wants to create location.hh elsewhere, it can be |
| helpful to define api.location.file to some possibly absolute path |
| such as -Dapi.location.file='"$(top_srcdir)/include/ast/location.hh"'. |
| Currently this does not work with `-o foo/parser.cc`, as we join foo/ |
| and $(top_srcdir) together, the latter starting with slash. |
| |
| We should not try to do that in m4, manipulating file names is quite |
| complex when you through Windows file name in. Let m4 delegate this |
| to gnulib. |
| |
| * src/scan-skel.l (at_output): Accept up to two arguments. |
| * data/bison.m4 (b4_output): Adjust. |
| * tests/skeletons.at (Fatal errors but M4 continues producing output): |
| Adjust to keep the error. |
| |
| * data/location.cc, data/stack.hh: Leave the concatenation to @output. |
| * tests/output.at: Exercise api.location.file with an absolute path. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: when api.location.file is defined, don't generate stack.hh |
| Make it easier to have fewer files. |
| |
| * data/stack.hh: Don't generate stack.hh when api.location.file is |
| specified. |
| * tests/calc++.at, tests/output.at: Adjust tests. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: make position.hh completely useless |
| Let's put the definition of position into location.hh, there's no real |
| value in keeping them separate: they are small, and share the same |
| requirements. |
| |
| To help users transition to this new model, still generate position.hh |
| by default, but as a simple include to location.hh. |
| |
| * data/location.cc (api.position.file): Accept only 'none' as possible |
| value. |
| (position.hh): Make it a stub. |
| (location.hh): Adjust. |
| (b4_position_define): Merge into... |
| (b4_location_define): this. |
| * data/glr.cc, data/lalr1.cc, tests/input.at, tests/output.at: Adjust. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: make stack.hh completely useless |
| Let's completely deprecate stack.hh. Don't provide a means to give it |
| a new name, allow only its removal. |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00151.html |
| and https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00182.html. |
| |
| * data/stack.hh: Reduce stack.hh to a simple comment explaining how to |
| get rid of it. |
| * data/lalr1.cc: Adjust |
| * tests/input.at (%define file variables): Adjust. |
| * tests/output.at: Remove cases where stack.hh was removed. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: add support for api.position.file and api.location.file |
| * data/location.cc: Sort includes. |
| (b4_position_file, b4_location_file): New. |
| When there's a file for locations but not for positions, include the |
| definition of position in the location file. |
| * data/lalr1.cc (b4_shared_declarations): Include the |
| position/location file when it exists. |
| Otherwise, define the class. |
| * data/glr.cc: Likewise. |
| * tests/input.at (%define file variables): Check them. |
| * tests/output.at (C++ output): Check various cases with |
| api.position.file and api.location.file. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: provide control over the stack.hh file name |
| It was not a good idea to generate the file stack.hh. It never was. |
| But now we have to deal with backward compatibility: if we stop |
| generating it, the build system of some build system will probably |
| break. |
| |
| So offer the user a means to (i) decide what the name of the output |
| file should be, and (ii) not generate this file at all (its content |
| will be inline where the parser is defined). |
| |
| * data/lalr1.cc (b4_percent_define_check_file_complain) |
| (b4_percent_define_check_file): New. |
| * data/stack.hh: Generate the file only if api.stack.file is not |
| empty. |
| In that case, use it as file name. |
| * data/lalr1.cc: Adjust to include the right file, or to include |
| the definition of stack. |
| * tests/calc.at, tests/output.at: Exercise api.stack.file. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: c++: don't fuse prefix and namespace |
| They are not the same concept. It appears that we still consider that |
| api.prefix is the default for api.namespace. We should stop that. |
| |
| * tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): |
| Separate namespace and prefix. |
| Adjust dependencies. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: tests: factor file extension computations |
| * tests/local.at (AT_LANG_HDR): New. |
| * tests/calc.at, tests/headers.at, tests/synclines.at: Use it, and |
| AT_LANG_EXT. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style changes |
| * data/lalr1.cc: Formatting changes. |
| Remove duplicate definition of YY_NULLPTR. |
| Add quotes to help Emacs track balanced parens. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| lib: introduce xpath_join |
| * lib/path-join.h, lib/path-join.c: New. |
| * lib/local.mk: Adjust. |
| * src/output.c: Use it. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: travis finally knows about llvm-toolchain-trusty-7 |
| See https://github.com/travis-ci/apt-source-safelist/pull/392. |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-10-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: restore spello made on purpose |
| |
| 2018-10-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| THANKS: add Josh Soref |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: whether |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: typedef |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: troubleshooting |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: transparent |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: translated |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: transitions |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: transition |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: tracking |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: suppress |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: succesful |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: storage |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: safely |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: responsibility |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: resources |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: releases |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: reduction |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: reachable |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: rawtoknumflag |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: possibly |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: persistent |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: outputting |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: otherwise |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: occurrence |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: namespace |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: minimal |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: invocations |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: initialize |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: incorrectly |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: included |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: illicit |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: handling |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: gratuitously |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: grammar |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: generation |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: generate |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: forewarn |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: fnchange |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: family |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: extensions |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: enum |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: diagnostics |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: determined |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: detailed |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: descriptive |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: definitions |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: declaration |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: corrupted |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: consuming |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: consistently |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: conflicts |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: concatenation |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: complete |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: compatibility |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: comparison |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: combination |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: characters |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: builddir |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: assoc |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: appropriate |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: alignment |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: aggregate |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: adjust |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: additional |
| |
| 2018-10-05 Josh Soref <jsoref@users.noreply.github.com> |
| |
| spelling: accurately |
| |
| 2018-10-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| README-hacking: details about make check-local |
| |
| 2018-10-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-10-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| main: fix error message for missing argument |
| * src/getargs.c (getargs): Don't display any argv other that argv[0] |
| when reporting a missing argument. |
| * tests/bison.in: Neutralize path differences in stderr. |
| * tests/input.at (Invalid number of arguments): New. |
| |
| 2018-09-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: move timevar to it |
| * lib/timevar.c, lib/timevar.h, m4/timevar.m4: Remove. |
| * gnulib: Update. |
| * configure.ac: Adjust. |
| * lib/timevar.def: Use lower case for the timevvars. |
| Adjust dependencies. |
| |
| 2018-09-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: comment changes |
| * data/glr.cc, data/lalr1.cc: here. |
| |
| 2018-09-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-09-29 Paul Eggert <eggert@cs.ucla.edu> |
| |
| getargs: use LC_MESSAGES trick only on glibc |
| * src/getargs.c (usage): Rely on setlocale (LC_MESSAGES, NULL) |
| trick only on glibc, as POSIX does not specify the output |
| of setlocale in this case, and the Gnulib localename module |
| source code indicates that the trick works only on glibc. |
| |
| 2018-09-29 Paul Eggert <eggert@cs.ucla.edu> |
| |
| uniqstr: avoid need for VLAs |
| C11 no longer requires support for variable-length arrays, and |
| VS2015 does not have them. Redo UNIQSTR_CONCAT to use a method |
| that is simpler and better anyway. |
| * src/uniqstr.c (uniqstr_vsprintf): Remove; no longer needed. |
| * src/uniqstr.h (UNIQSTR_GEN_FORMAT, UNIQSTR_GEN_FORMAT_): |
| * src/uniqstr.c (uniqstr_concat): New function. |
| * src/uniqstr.h (UNIQSTR_CONCAT): Use it instead of using |
| uniqstr_vsprintf. |
| |
| 2018-09-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clean up the C++ section |
| * doc/bison.texi: Minor fixes in typography. |
| It is no longer require to pass --defines for C++ (it was addressed |
| long ago). |
| No longer refer to the `variant` define variable, it was replaced by |
| `api.value.type variant`. |
| Prefer nullptr to 0 for the null pointer. |
| Use deftypeop for constructors. |
| (Complete Symbols): Give the expected signature of yylex. |
| Don't document the symbol_type constructors, as we want users to focus |
| on make_TOKEN. |
| Also show the case without locations. |
| |
| 2018-09-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: fixes for clang and asan |
| Bison's test 464 (Syntax error as exception) fails on the CI. |
| Do not use clang with asan on Ubuntu's libc++. |
| https://bugs.llvm.org/show_bug.cgi?id=17379 |
| |
| * .travis.yml (Clang 7 libc++ and ASAN): New. |
| (Clang 6 -O3 and libc++): Really use libc++. |
| (Clang 5): Don't use libc++, nor asan (does not work either, same |
| reason). |
| |
| 2018-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in muscle-tab.c |
| |
| 2018-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: remove useless parens |
| * data/bison.m4, data/glr.c, data/glr.cc, data/lalr1.cc, |
| * data/lalr1.java, data/location.cc, data/yacc.c: Call b4_output_end |
| without parens. |
| |
| 2018-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix warning message for automove |
| * src/scan-code.l: Remove 'enabled'. |
| Use only $k (numeric), even for named references, for clarity. |
| * tests/c++.at: Adjust expectations. |
| |
| 2018-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: minor refactoring |
| * data/bison.m4: Formatting changes. |
| * src/scan-code.l: Avoid loops, prefer standard string functions. |
| (find_prefix_end): Be const correct. |
| Avoid useless intermediate variables. |
| (variant_add): Be const correct. |
| (parse_ref): Prefer variable definitions to assignments. |
| |
| 2018-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: don't exit |
| * .travis.yml: Prefer `false` to `exit`, as it completely ends the |
| script (so we don't get the logs). |
| |
| 2018-09-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: really use Clang 3.3 and 3.4, not 5.0 |
| * .travis.yml: Don't define CC/CXX, it does not work. |
| Use `[[...]]` instead of `[...]`. |
| Show the compiler versions. |
| (Clang 3.3, Clang 3.4): Specify the path to avoid using |
| /usr/local/clang-5.0.0/bin's clang. |
| |
| 2018-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: more compiler configurations |
| * .travis.yml (GCC 8): Use sanitizers. |
| (Clang 5 -O3): Remove, replaced by... |
| (Clang 7 ASAN and libc++, Clang 6 -O3 and libc++): New. |
| |
| 2018-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: rename and simplify the -std checks for C++ |
| Too much code duplication. |
| |
| * m4/bison-cxx-std.m4: s/BISON_CXX_COMPILE_STDCXX/BISON_CXXSTD/. |
| (BISON_CXXSTD): New. |
| * configure.ac: Use it. |
| |
| 2018-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: check for C++98 and 03 like the others |
| * m4/bison-cxx-std.m4 (BISON_CXX_COMPILE_STDCXX_98) |
| (BISON_CXX_COMPILE_STDCXX_03): New. |
| * configure.ac: Use them. |
| |
| 2018-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: use our own version of ax_check_link_flag |
| The message on configure is misleading: |
| |
| checking whether the linker accepts -std=c++11... yes |
| checking whether the linker accepts -std=c++14... yes |
| checking whether the linker accepts -std=c++17... no |
| |
| It is the compiler that we check, not just the linker. |
| |
| * m4/ax_check_link_flag.m4: Remove. |
| * m4/bison-check-compiler-flag.m4: New. |
| * m4/bison-cxx-std.m4: Use it. |
| |
| 2018-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix Autoconf macros to check for C++ standard flags |
| * m4/bison-cxx-std.m4: Since now we link the program, we need a |
| program: main was missing and linking was failing. |
| |
| 2018-09-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix a memory leak |
| This has been bugging me for while. I was hard to reproduce: it |
| worked only on GNU/Linux, probably because libc++ implements the small |
| string optimization, while libstdc++ did not and actually allocated on |
| the heap for this small string. |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00110.html. |
| |
| * tests/types.at (api.value.type): Do not provide a semantic value to |
| EOF. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: work around Flex's use of 'register' |
| The CI uses an old version of Flex. |
| See 65fa634cdcfc5cf59b8b074670f488bba4df57cd. |
| |
| * doc/bison.texi (calc++/scanner.ll): Here. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: don't declare getrusage if we don't use it |
| This fails on MinGW. |
| Reported by Simon Sobisch. |
| http://lists.gnu.org/archive/html/bug-bison/2018-09/msg00058.html |
| |
| * lib/timevar.c: Don't provide default prototypes for functions |
| we don't use. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: get rid of a useless macro |
| * lib/timevar.h (timevar_report): Rename as... |
| (timevar_enabled): this. |
| * lib/timevar.c (TIMEVAR_ENABLE): Remove. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: introduce and use get_current_time |
| * lib/timevar.c: here. |
| Remove useless prototypes. |
| (timevar_accumulate): Be const correct. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: rename get_time as set_to_current_time |
| * lib/timevar.c: here. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: reduce scopes |
| * lib/timevar.c: here. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: document in the header, not in the implementation |
| * lib/timevar.c: Move documentation from here... |
| * lib/timevar.h: to there. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: remove useless 'extern' for prototypes |
| * lib/timevar.h, lib/timevar.c: here. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: rename init_timevar as timevar_init |
| * lib/timevar.h, lib/timevar.c: here. |
| * src/main.c: Adjust. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: we don't care about backward compatibility |
| * lib/timevar.h, lib/timevar.c (get_run_time, print_time): Remove. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: prefer #elif |
| * lib/timevar.c: Use #if/#elif to be clearer about mutually exclusive |
| cases. |
| Indent CPP nested directives. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: assume ANSI C |
| Suggested by Bruno Haible. |
| https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00102.html |
| |
| * lib/timevar.c: Wow... This was still KnR C! |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| timevar: remove remains of GCC |
| * lib/timevar.h, lib/timevar.c: Rename the header guard. |
| Get rid of parts meant for GCC only. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| news: c++: move semantics |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: issue a warning with a value is moved several times |
| Suggested by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2018-09/msg00022.html |
| |
| * src/scan-code.l (parse_ref): Check multiple occurrences of rhs |
| values. |
| * tests/c++.at (Multiple occurrences of $n and api.value.automove): New. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: introduce api.value.automove |
| Based on work by Frank Heckenbach. |
| See http://lists.gnu.org/archive/html/bug-bison/2018-04/msg00000.html |
| and http://lists.gnu.org/archive/html/bug-bison/2018-09/msg00019.html. |
| |
| * data/lalr1.cc (b4_rhs_value): Use YY_MOVE api.rhs.automove is set. |
| * doc/bison.texi (%define Summary): Document api.rhs.automove. |
| * examples/variant-11.yy: Use it. |
| |
| * tests/local.at (AT_AUTOMOVE_IF): New. |
| * tests/c++.at (Variants): Check move semantics. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: c++: use a custom string type |
| The forthcoming automove feature, to be properly checked, will require |
| that we can rely on the value of a moved-from string, which is not |
| something the C++ standard guarantees. So introduce our own wrapper. |
| |
| Suggested by Frank Heckenbach. |
| https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00111.html |
| |
| * tests/c++.at (Variants): Introduce and use a new 'string' class. |
| |
| 2018-09-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: prepare a test for automove |
| The 'Variants' tests are well suited to check support for move, and in |
| particular for the forthcoming automove feature. But the tests were |
| written to show the best practice in C++98, using swap: |
| |
| list "," item { std::swap ($$, $1); $$.push_back ($3); } |
| |
| This cannot work with std::move. So, make this example simpler, based |
| on regular assignment instead of swap, which is a regression for |
| C++98 (as the new traces show), but will be an improvement for modern |
| C++ with automove. |
| |
| * tests/c++.at (Variants): Stop using swap. |
| We don't generate a header file, so remove the 'require' code section. |
| Adjust expectations. |
| |
| 2018-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in gram.c |
| * src/gram.c: here. |
| |
| 2018-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in reduce.c |
| * src/reduce.c: Here. |
| |
| 2018-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-09-20 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: work around ICC's limitations |
| Several types of failures. First, unable to pass the file name |
| properly to the linker. |
| |
| ./synclines.at:416: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o \"\\\"\" \"\\\"\".c $LIBS |
| stderr: |
| ld: cannot open output file "/"": No such file or directory |
| stdout: |
| |
| Unable to save under such a file name. |
| |
| ./synclines.at:421: $CXX $CXXFLAGS $CPPFLAGS -c $LDFLAGS -o \"\\\"\" \"\\\"\".cc $LIBS |
| stderr: |
| error: can't open file "/"" for write |
| compilation aborted for "\"".cc (code 1) |
| |
| Spurious output because of warning flags is failed to reject as an |
| error during configure: |
| |
| ./headers.at:343: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx || |
| exit 77 |
| --- /dev/null 2018-09-18 21:21:37.745649000 +0000 |
| +++ /home/travis/build/akimd/bison/tests/testsuite.dir/at-groups/222/stderr 2018-09-18 21:28:17.291919519 +0000 |
| @@ -0,0 +1,7 @@ |
| +icpc: command line warning #10006: ignoring unknown option '-Wcast-align' |
| +icpc: command line warning #10006: ignoring unknown option '-fparse-all-comments' |
| +icpc: command line warning #10006: ignoring unknown option '-Wdocumentation' |
| +icpc: command line warning #10006: ignoring unknown option '-Wnull-dereference' |
| +icpc: command line warning #10006: ignoring unknown option '-Wnoexcept' |
| +icpc: command line warning #10006: ignoring unknown option '-fno-color-diagnostics' |
| +icpc: command line warning #10006: ignoring unknown option '-Wno-keyword-macro' |
| stdout: |
| |
| * tests/local.at (AT_SKIP_IF_CANNOT_LINK_C_AND_CXX): Also ignore |
| stderr, as with ICC we get |
| * tests/synclines.at (syncline escapes): Don't link the output. |
| |
| 2018-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix typo |
| Introduced in the previous commit. |
| |
| * doc/bison.texi: here. |
| |
| 2018-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use midrule only, not mid-rule |
| The code was already using midrule only, never mid_rule. This is |
| simpler to remember, and matches a similar change we made from |
| look-ahead to lookahead. |
| |
| * NEWS, doc/bison.texi, src/reader.c, src/scan-code.h, src/scan-code.l |
| * tests/actions.at, tests/c++.at, tests/existing.at: here. |
| |
| 2018-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: use _foo for private macros, not foo_ |
| We use both styles, let's stick to a single one. Autoconf uses the |
| prefix one, let's do the same. |
| |
| * data/bison.m4, data/c++.m4, data/c-like.m4, data/lalr1.cc, |
| * data/variant.hh, data/yacc.c: Rename all the b4_*_ macros |
| as _b4_*. |
| |
| 2018-09-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: don't accept a broken standard lib for C++ |
| On the CI, we had failures such as: |
| |
| ./c++.at:401: $PREPARSER ./list |
| stderr: |
| ./list: error while loading shared libraries: libc++.so.1: |
| cannot open shared object file: No such file or directory |
| |
| because we accepted `-std=c++ -stdlib=libc++` although libc++ is not |
| installed on the machine. |
| |
| * m4/ax_check_compile_flag.m4 (AX_CHECK_COMPILE_FLAG): Rewrite as... |
| * m4/bison-check-compile-flag.m4 (BISON_CHECK_COMPILE_FLAG): this, so |
| that we use AC_LINK_IFELSE to check the compiler (and its std lib) |
| instead of AC_COMPILE_IFELSE. |
| |
| 2018-09-18 Paul Eggert <eggert@cs.ucla.edu> |
| |
| doc: document older compiler issues |
| * doc/bison.texi (Compiler Requirements for GLR): |
| Rename from Compiler Requirements. |
| (I can't build Bison): Add FAQ for older compilers. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: work around ICC limitations |
| The CI is littered with |
| |
| # -*- compilation -*- |
| 423. regression.at:907: testing Dancer %glr-parser ... |
| ./regression.at:907: bison -fno-caret -o dancer.c dancer.y |
| ./regression.at:907: $BISON_C_WORKS |
| stderr: |
| stdout: |
| ./regression.at:907: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS |
| stderr: |
| icc: command line warning #10006: ignoring unknown option '-Wcast-align' |
| icc: command line warning #10006: ignoring unknown option '-fparse-all-comments' |
| icc: command line warning #10006: ignoring unknown option '-Wdocumentation' |
| icc: command line warning #10006: ignoring unknown option '-Wnull-dereference' |
| icc: command line warning #10006: ignoring unknown option '-Wbad-function-cast' |
| icc: command line warning #10006: ignoring unknown option '-fno-color-diagnostics' |
| icc: command line warning #10006: ignoring unknown option '-Wno-keyword-macro' |
| dancer.c(755): error #1628: function declared with "noreturn" does return |
| } |
| ^ |
| |
| dancer.c(761): error #1628: function declared with "noreturn" does return |
| } |
| ^ |
| |
| compilation aborted for dancer.c (code 2) |
| |
| ICC sees that `longjmp(buf, 1);` does not return, it sees that |
| `abort();` does not either, but fails to see it for |
| `longjmp(buf, 1); abort();` |
| |
| * data/glr.c (YYLONGJMP): Be even clearer on the fact this does not |
| return. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: more |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: change strategy to pass CXXFLAGS and the like |
| Putting them in the env is useless. We don't want to pass |
| `CPPFLAGS="$CPPFLAGS"` to configure, as it means "set it to nothing" |
| when $CPPFLAGS is not set, which is not what we want. |
| |
| This correctly started to use libc++, but it is not installed on the |
| Ubuntu. We will see later if we can use it. |
| |
| * .travis.yml: Define CONFIGUREFLAGS, and pass it to configure. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: also use GCC 4.7 and 4.8 |
| * .travis.yml (matrix): here. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: name the items of the matrix |
| * .travis.yml: here. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: also check with ICC |
| * build-aux/install-icc.sh: New. |
| * .travis.yml (icc): New. |
| Use -k to get as many errors as possible from the start. |
| * src/complain.c (warnings_types): Use a more precise type. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: be sure to exit on failures |
| a807cfa6eb1a5362ead0b7c99bdc8fd2f4f896da completely broke the whole |
| point of having a CI: we always exit with success! |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: strengthen the C++ standard flag test |
| On the CI, we have this spurious failure with clang 3.9 with |
| -std=c++17: |
| |
| In file included from list.y:23: |
| In file included from /usr/include/c++/4.8/iostream:39: |
| In file included from /usr/include/c++/4.8/ostream:38: |
| In file included from /usr/include/c++/4.8/ios:42: |
| In file included from /usr/include/c++/4.8/bits/ios_base.h:41: |
| In file included from /usr/include/c++/4.8/bits/locale_classes.h:40: |
| In file included from /usr/include/c++/4.8/string:52: |
| In file included from /usr/include/c++/4.8/bits/basic_string.h:2815: |
| In file included from /usr/include/c++/4.8/ext/string_conversions.h:43: |
| /usr/include/c++/4.8/cstdio:120:11: error: no member named 'gets' in the global namespace |
| using ::gets; |
| ~~^ |
| |
| This shows that our test, based on gl_WARN_ADD, is a joke. We have to |
| really check for at least a bit of C++. |
| |
| * m4/ax_check_compile_flag.m4, m4/bison-cxx-std.m4: New. |
| * configure.ac: Use them to make sure the compiler actually works. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix memory leak |
| This was reported by ASAN on the CI. |
| |
| * tests/types.at (api.value.type): Don't set a semantic value to EOF. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr.c: prefer true/false to 1/0 in C++ |
| * data/glr.c: here. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: work around Flex's use of 'register' |
| The CI uses an old version of Flex. |
| |
| * doc/bison.texi (calc++/scanner.ll): Here. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fight G++ warnings about zero as null pointer constant |
| In C++ pre C++11 it is standard practice to use 0 for the null pointer. |
| But GCC pre 8 -std=c++98 with -Wzero-as-null-pointer-constant warns about |
| this. |
| |
| So disable -Wzero-as-null-pointer-constant when compiling C++ pre 11. |
| Let's do this in AT_DATA_SOURCE_PROLOGUE (which is pasted on top of |
| all the test grammar files). Unfortunately, that shifts all the |
| locations in the expected error messages, which would be too noisy. |
| Instead, let's introduce testsuite.h, which can vary in length, and |
| include it in AT_DATA_SOURCE_PROLOGUE. |
| |
| * tests/testsuite.h: New. |
| Disable -Wzero-as-null-pointer-constant's warning with GCC pre 8, |
| C++ pre 11. |
| * tests/local.at (AT_DATA_SOURCE_PROLOGUE): Use it. |
| * tests/atlocal.in (CPPFLAGS): Find it. |
| * tests/local.mk: Ship it. |
| * data/c.m4 (YY_NULLPTR): Prefer ((void*)0) to 0 in C. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: make sure `git describe` works |
| For some reasons, the checkout on travis may not have any tags, so |
| `git describe` fails, so bootstrap fails. |
| |
| * .travis.yml: If git describe fails, install some tag. |
| |
| 2018-09-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: install Doxygen |
| * .travis.yml: here, so that its tests are not skipped. |
| Remove valgrind: it's too expensive on the CI, and asan does the job. |
| |
| 2018-09-16 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: prefer %D% in Automake files |
| * tests/local.mk: Prefer %D%/ to tests/. |
| |
| 2018-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in complain.c |
| |
| 2018-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in tables.c |
| * src/tables.c: here. |
| * src/state.h: Formatting changes. |
| |
| 2018-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in graphviz.c |
| |
| 2018-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in LR0.c |
| |
| 2018-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes in print_graph.c |
| * src/print_graph.c: here. |
| |
| 2018-09-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: formatting changes |
| * doc/bison.texi: No changes in the output. |
| |
| 2018-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: run the C++ tests on all the available standards |
| This is much of course more efficient than in the matrix of the CI (or |
| on our own machines), but a bit more tedious. |
| |
| * configure.ac (CXX03_CXXFLAGS, CXX11_CXXFLAGS, CXX14_CXXFLAGS) |
| (CXX17_CXXFLAGS, CXX2A_CXXFLAGS, STDCXX_FLAGS): New. |
| * tests/atlocal.in: Receive them. |
| * tests/local.at (AT_FOR_EACH_CXX): New. |
| * tests/c++.at: Use AT_FOR_EACH_CXX. |
| |
| 2018-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: allow to override variables with envvars |
| * tests/atlocal.in: Allow the user to change interesting variables |
| (CFLAGS, CXXFLAGS, etc.). |
| |
| 2018-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: modern C++ no longer needs an assignment for symbols |
| Reported by Frank Heckenbach. |
| http://lists.gnu.org/archive/html/bug-bison/2018-03/msg00002.html |
| |
| Actually the assignment operator should never be needed: the C++98 |
| requirements for vector::push_back is CopyInsertable, which does not require |
| an assignment operator. However, libstdc++ shipped with GCC up to (and |
| including) 6 uses the assignment operator (which affects Clang on top of |
| libstdc++, but also ICC). So let's keep it for legacy C++. |
| |
| See https://gcc.godbolt.org/z/q0XXmC. |
| |
| * data/lalr1.cc (stack_symbol_type::operator=): Remove. |
| * data/c++.m4 (basic_symbol::operator=): Ditto. |
| * tests/c++.at (C++ Variant-based Symbols Unit Tests): Adjust. |
| |
| 2018-09-13 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: support move semantics |
| Modern C++ (i.e., C++11 and later) introduced "move only" types: types such |
| as std::unique_ptr<T> that can never be duplicated. They must never be |
| copied (by assignments and constructors), they must be "moved". The |
| implementation of lalr1.cc used to copy symbols (including their semantic |
| values). This commit ensures that values are only moved in modern C++, yet |
| remain compatible with C++98/C++03. |
| |
| Suggested by Frank Heckenbach, who provided a full implementation on |
| top of C++17's std::variant. |
| See http://lists.gnu.org/archive/html/bug-bison/2018-03/msg00002.html, |
| and https://lists.gnu.org/archive/html/bison-patches/2018-04/msg00002.html. |
| |
| Symbols (terminal/non terminal) are handled by several functions that used |
| to take const-refs, which resulted eventually in a copy pushed on the stack. |
| With modern C++ (C++11 and later) the callers must use std::move, and the |
| callees must take their arguments as rvalue refs (foo&&). In order to avoid |
| duplicating these functions to support both legacy C++ and modern C++, let's |
| introduce macros (YY_MOVE, YY_RVREF, etc.) that rely on copy-semantics for |
| C++98/03, and move-semantics for modern C++. |
| |
| That's easy for inner types, when the parser's functions pass arguments to |
| each other. Functions facing the user (make_NUMBER, make_STRING, etc.) |
| should support both rvalue-refs (for instance to support move-only types: |
| make_INT (std::make_unique<int> (1))), and lvalue-refs (so that we can pass |
| a variable: make_INT (my_int)). To avoid the multiplication of the |
| signatures (there is also the location), let's take the argument by value. |
| |
| See: |
| https://lists.gnu.org/archive/html/bison-patches/2018-09/msg00024.html. |
| |
| * data/c++.m4 (b4_cxx_portability): New. |
| (basic_symbol): In C++11, replace copy-ctors with move-ctors. |
| In C++11, replace copies with moves. |
| * data/lalr1.cc (stack_symbol_type, yypush_): Likewise. |
| Use YY_MOVE to avoid useless copies. |
| * data/variant.hh (variant): Support move-semantics. |
| (make_SYMBOL): In C++11, in order to support both read-only lvalues, |
| and rvalues, take the argument as a copy. |
| * data/stack.hh (yypush_): Use rvalue-refs in C++11. |
| * tests/c++.at: Use move semantics. |
| |
| * tests/headers.at: Adjust to the new macros (YY_MOVE, etc.). |
| |
| * configure.ac (CXX98_CXXFLAGS, CXX11_CXXFLAGS, CXX14_CXXFLAGS) |
| (CXX17_CXXFLAGS, ENABLE_CXX11): New. |
| * tests/atlocal.in: Receive them. |
| |
| * examples/variant.yy: Don't define things in std. |
| * examples/variant-11.test, examples/variant-11.yy: New. |
| Check the support of move-only types. |
| * examples/README, examples/local.mk: Adjust. |
| |
| 2018-09-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: factor the definition of full compilation |
| * tests/local.at (AT_LANG_EXT): New. |
| (AT_FULL_COMPILE): Simplify. |
| |
| 2018-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: use clang with libc++ |
| GCC uses libstdc++. Let's also check libc++. |
| |
| * .travis.yml: here. |
| |
| 2018-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: use address sanitizer |
| * .travis.yml (matrix): Use the latest (available) clang with asan. |
| |
| 2018-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: sort the matrix in reverse-chronological |
| There are only three builds at a time: show the result of modern |
| compilers first. |
| |
| * .travis.yml (matrix): Sort in reverse-chronological. |
| |
| 2018-09-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: use -fparse-all-comments with -Wdocumentation |
| Clang checks only /** ... */ comments without this flag. |
| |
| * configure.ac (warn_common): Also check -fparse-all-comments. |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| TODO: minor updates |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix support for --disable-dependency-tracking |
| Reported by Juan Manuel Guerrero. |
| https://lists.gnu.org/archive/html/bug-bison/2014-07/msg00000.html. |
| |
| * examples/local.mk (%D%/extracted.stamp): Make sure the output |
| directory exists. |
| * examples/extexi (process): Likewise. |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| configure.ac: fix definition of NO_EXCEPTIONS_CXXFLAGS |
| * configure.ac: Always define it, not just when --enable-gcc-warnings |
| is passed. |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| skeletons: style/comment changes |
| * data/c++.m4, data/c.m4, data/glr.c: Here. |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| variant: indent better the generated code |
| * data/variant.hh (b4_basic_symbol_constructor_declare) |
| (b4_basic_symbol_constructor_define): here. |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: don't generate useless constructors when variant is used |
| This generates less code, which is nicer to read, but also takes less |
| chances with compilers such as G++ 4.8 that are too strict and check |
| "dead code" (templated code that is not instantiated). |
| |
| * data/c++.m4 (b4_symbol_type_declare, b4_symbol_type_define): When |
| variants are used, don't generate code meant for non variants. |
| |
| 2018-09-09 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: Clang 6.0 is not available |
| But Clang 3.3 and 3.4 are. |
| |
| * .travis.yml (addons): Remove, it appears to be ignore if the matrix |
| also defines it. |
| (matrix): Update. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: work around warnings in Flex |
| See ea0db44fedc8d5cbdc5c3180bef0285d7ae83803. We also need to disable |
| the warning in the examples (but don't want to clutter the |
| documentation with such details). |
| |
| * doc/bison.texi (scanner.ll): Disable Clang's -Wdocumentation. |
| While at it, hide the other kludges. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: more compiler configurations |
| * .travis.yml: here. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| configure: reveal the name of the Valgrind suppression file we use |
| * configure.ac: here. |
| * build-aux/Linux.valgrind (libstdcxx_init): New. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: work around warnings in Flex 2.5.35 |
| That's the version on Ubuntu Precise. |
| See also 1dac131ec45ffa1e382319a94640c65bd10f6aa5. |
| |
| * src/flex-scanner.h: Disable -Wdocumentation. |
| * doc/bison.texi: Turn off a warning triggered by Flex 2.6.4. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: show the version of the tools we use |
| We have failures on Flex output, which are probably related to an old |
| release. Let's check. |
| |
| In file included from src/scan-code-c.c:3: |
| src/scan-code.c:2198:21: error: empty paragraph passed to '@param' command |
| [-Werror,-Wdocumentation] |
| * @param line_number |
| ~~~~~~~~~~~~~~~~~^ |
| |
| * .travis.yml: here. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: run more maintainer tests and show the logs |
| Running all these tests might be overkill: it is very long, and don't |
| need full portability checks. Besides, some tests under Valgrind are |
| too slow and get killed by the CI (timeout of 10min without output). |
| |
| * .travis.yml: here. |
| |
| 2018-09-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: enable compiler warnings |
| * .travis.yml: here. |
| * README-hacking: We no longer aim at K&R C. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: work around GCC warnings on Flex code |
| See ef98967ada3c1cd48c177d7349e65a709bb49b97. |
| |
| * src/flex-scanner.h: Disable -Wnull-dereference for GCC 6+. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix target naming convention |
| We have some maintainer-check-foo and some maintainer-foo-check. Keep |
| only the former. |
| |
| * tests/local.mk (maintainer-push-check, maintainer-xml-check) |
| (maintainer-release-check): Rename as... |
| (maintainer-check-push, maintainer-check-xml) |
| (maintainer-check-release): these. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix variable naming convention |
| Most of our variables for C++ flags are named FOO_CXXFLAGS, not |
| CXXFLAGS_FOO. |
| |
| * configure.ac, tests/atlocal.in, tests/calc.at |
| (NO_EXCEPTIONS_CXXFLAGS): Rename as... |
| (CXXFLAGS_NO_EXCEPTIONS): this. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix maintainer-check-g++ make recipe |
| Clang++ issues warnings when it's used to compile C. This make target |
| is precisely checking whether we can do that. |
| |
| * configure.ac (NO_DEPRECATED_CXXFLAGS): New. |
| * tests/atlocal.in: Use it. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix maintainer-check-valgrind make recipe |
| * tests/local.mk (maintainer-check-valgrind): Run the with Valgrind |
| when it's available, not the converse. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| CI: prepare for travis |
| * .travis.yml: New. |
| |
| 2018-09-06 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of shell portability issues |
| This completes 2d7e7438024e47650c3a0c9f5f313c6eb6acae2d. |
| |
| Some shells don't grok "local var=`cmd`" very well: they need the rhs |
| to be quoted. |
| |
| ./examples/test: 72: local: you.,: bad variable name |
| FAIL examples/variant.test (exit status: 2) |
| |
| Reported by Étienne Renault. |
| |
| * examples/test (run): Quote the values in 'local' assignments. |
| |
| 2018-09-04 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style changes |
| * tests/c++.at: Formatting changes. |
| Use 'using' to shorten the code. |
| |
| 2018-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: disable GCC7 warnings for some tests |
| With GCC7 we have warnings (false positive): |
| |
| x8.c: In function 'x8_parse': |
| x8.c:1233:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| yylval = *yypushed_val; |
| ~~~~~~~^~~~~~~~~~~~~~~ |
| x8.c: In function 'x8_pull_parse': |
| x8.c:1233:16: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| yylval = *yypushed_val; |
| ~~~~~~~^~~~~~~~~~~~~~~ |
| |
| See also 9645a2b20ee7cbfa8bb4ac2237f87d598afe349c. |
| |
| * tests/local.at (AT_PUSH_IF): New. |
| (AT_BISON_OPTION_POPDEFS): Pop it, and pop AT_PURE_IF. |
| * tests/headers.at (Several parsers, Several parsers): Disable these |
| warnings when in push parser. |
| |
| 2018-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: don't issue the definition of symbol_type when not used |
| Currently, in glr.cc, we emit the definitions of basic_symbol and |
| symbol_type, although there are not used. |
| |
| * data/c++.m4 (b4_public_types_declare): Extract these definitions from |
| here, and move them... |
| (b4_symbol_type_declare): here. |
| (b4_public_types_declare): Also remove the definition of the symbol |
| constructors. |
| * data/lalr1.cc (b4_shared_declarations): Adjust: call |
| b4_symbol_type_declare and b4_symbol_constructor_declare. |
| |
| 2018-09-02 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: beware of shell portability issues |
| Some shells don't grok `local var=$val` very well: they need the rhs |
| to be quoted. |
| |
| ./examples/test: 66: local: you.,: bad variable name |
| FAIL examples/variant.test (exit status: 2) |
| |
| Reported by Étienne Renault. |
| |
| * examples/test (run): Quote the values in 'local' assignments. |
| |
| 2018-08-31 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: leave 'inline' on the definition, not the declaration |
| This is for consistency with the other uses of 'inline' in the C++ |
| skeletons. On examples/variant.yy, this change gives: |
| |
| --- examples/variant.hh 2018-08-31 07:16:57.214222580 +0200 |
| +++ examples/variant.hh 2018-08-31 07:19:52.285431997 +0200 |
| @@ -444,15 +444,15 @@ |
| typedef basic_symbol<by_type> symbol_type; |
| |
| // Symbol constructors declarations. |
| - static inline |
| + static |
| symbol_type |
| make_END_OF_FILE (const location_type& l); |
| |
| - static inline |
| + static |
| symbol_type |
| make_TEXT (const ::std::string& v, const location_type& l); |
| |
| - static inline |
| + static |
| symbol_type |
| make_NUMBER (const int& v, const location_type& l); |
| |
| @@ -945,19 +945,23 @@ |
| }; |
| return static_cast<token_type> (yytoken_number_[type]); |
| } |
| + |
| // Implementation of make_symbol for each symbol type. |
| + inline |
| parser::symbol_type |
| parser::make_END_OF_FILE (const location_type& l) |
| { |
| return symbol_type (token::END_OF_FILE, l); |
| } |
| |
| + inline |
| parser::symbol_type |
| parser::make_TEXT (const ::std::string& v, const location_type& l) |
| { |
| return symbol_type (token::TEXT, v, l); |
| } |
| |
| + inline |
| parser::symbol_type |
| parser::make_NUMBER (const int& v, const location_type& l) |
| { |
| @@ -967,7 +971,7 @@ |
| |
| } // yy |
| -#line 971 "examples/variant.hh" // lalr1.cc:380 |
| +#line 975 "examples/variant.hh" // lalr1.cc:380 |
| |
| and no changes on variant.cc. |
| |
| * data/c++.m4 (b4_public_types_define): Formatting changes. |
| * data/variant.hh (b4_symbol_value_template_, b4_symbol_constructor_declare_): |
| Move the 'inline' from declaration to implementation. |
| |
| 2018-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: style changes |
| Instead of |
| |
| parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) |
| : super_type (that.state, that.location) |
| { |
| value = that.value; |
| } |
| |
| generate |
| |
| parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) |
| : super_type (that.state, that.value, that.location) |
| {} |
| |
| * data/lalr1.cc (stack_symbol_type): Improve the copy ctor, when not |
| using the variants. |
| (yypush_): Rename arguments for clarity. |
| |
| 2018-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: the assignment operator does not have to be const |
| * data/lalr1.cc (stack_symbol_type::operator=): Don't copy the |
| argument, move it. |
| |
| 2018-08-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style changes |
| * tests/c++.at (C++ Variant-based Symbols): Rename as... |
| (C++ Variant-based Symbols Unit Tests): this. |
| Comment/style changes. |
| |
| 2018-08-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2018-08-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.1 |
| * NEWS: Record release date. |
| |
| 2018-08-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: tabs are ok in a Makefile |
| * cfg.mk: TABs are ok in examples/calc++/Makefile. |
| |
| 2018-08-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: make sure the generated header is self container |
| See the previous commit. |
| |
| * data/lalr1.cc: Be sure to define YY_NULLPTR. |
| * tests/headers.at: Check the case that was failing. |
| |
| 2018-08-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check that headers are sane |
| The header generated for variants with assertions but without |
| locations, is not self-contained. Prepare a check for this. |
| |
| * tests/headers.at (Sane headers): New, extracted from... |
| (Several parsers): here. |
| |
| 2018-08-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| "C++: restore copy-constructor for stack_symbol_type |
| Benchmarks show that it is more efficient to keep this copy |
| constructor, rather than forcing the use of the default constructor |
| and then assignment. |
| |
| This reverts commit 7ab25ad0208d00f509613e1e151aa3043cf2862f. |
| |
| 2018-08-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: calc++: a Makefile and a README |
| * examples/calc++/Makefile, examples/calc++/README: New. |
| * examples/calc++/local.mk: Ship and install them. |
| * doc/bison.texi: Formatting changes. |
| |
| 2018-08-25 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| |
| 2018-08-25 Jiahao Li <jiahaoli@fb.com> |
| |
| variant: fix uninitialized memory access in `variant<>` |
| Currently, in bison's C++ parser template (`lalr.cc`), the `variant<>` |
| struct's `build()` method uses placement-new in the form `new (...) T` |
| to initialize a variant type. However, for POD variant types, this |
| will leave the memory space uninitialized. If we subsequently tries |
| to `::move` into a variant object in such state, the call can trigger |
| clang's undefined behavior sanitizer due to accessing the |
| uninitialized memory. |
| |
| https://lists.gnu.org/archive/html/bison-patches/2018-08/msg00098.html |
| |
| * data/variant.hh (build): Always initialize the stored value. |
| |
| 2018-08-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-08-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: calc++: minor improvements |
| * doc/bison.texi (A Complete C++ Example): Prefer throw exceptions |
| from the scanner. |
| Show the invalid characters. |
| Since the scanner sends exceptions, it no longer needs to report |
| errors, so we can get rid of the driver's routine to report error, |
| do it in yyerror. |
| Use @group/@end group to improve rendering. |
| |
| 2018-08-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: calc++: make sure the file name in location is set |
| Reported by Hans Åberg. |
| http://lists.gnu.org/archive/html/bug-bison/2018-08/msg00039.html |
| |
| * doc/bison.texi (A Complete C++ Example): Move the token's location |
| from the scanner to the driver. |
| |
| 2018-08-24 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: calc++: remove prefixes |
| This example uses the calcxx_ prefix for each class. That's uselessly |
| heavy. |
| |
| * doc/bison.texi (A Complete C++ Example): Simplify the class names. |
| Since now 'driver' denotes the class, use 'drv' for the values. |
| Formatting changes. |
| |
| 2018-08-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix the leading empty line |
| * examples/extexi: Really avoid the first empty line. |
| Remove useless `next`. |
| |
| 2018-08-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: shorten the name of the calc++ files |
| * doc/bison.texi: Turn the calc++- prefix into calc++/. |
| * examples/extexi (%file_wanted): Replace with |
| (&file_wanted): this. |
| * examples/calc++/local.mk: Adjust. |
| |
| 2018-08-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: disable -Wmaybe-uninitialized in some tests |
| On these tests, at -O2 and above, GCC 8 complains that yylval may be |
| uninitialized. But it seems wrong: it is initialized. Rather than |
| turning off the warning in the skeleton (hence possibility hiding |
| relevant warnings of user parsers), let's turn it off in the tests |
| only. |
| |
| 163: parse.error=verbose and consistent errors: FAILED (conflicts.at:625) |
| 165: parse.error=verbose and consistent errors: lr.default-reduction=consistent FAILED (conflicts.at:635) |
| 166: parse.error=verbose and consistent errors: lr.default-reduction=accepting FAILED (conflicts.at:641) |
| 167: parse.error=verbose and consistent errors: lr.type=canonical-lr FAILED (conflicts.at:645) |
| 168: parse.error=verbose and consistent errors: parse.lac=full FAILED (conflicts.at:650) |
| 169: parse.error=verbose and consistent errors: parse.lac=full lr.default-reduction=accepting FAILED (conflicts.at:655) |
| |
| We get: |
| |
| input.c: In function 'yyparse': |
| input.c:980:9: error: 'yylval' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); |
| ^~~~~~ |
| cc1: all warnings being treated as errors |
| |
| See https://lists.gnu.org/archive/html/bison-patches/2018-08/msg00063.html. |
| |
| * tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Disable |
| -Wmaybe-uninitialized. |
| |
| 2018-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify that the push parser object can be reused |
| Suggested by Rici Lake. |
| https://lists.gnu.org/archive/html/bug-bison/2018-08/msg00033.html |
| |
| * doc/bison.texi: Complete description of the first node in the main |
| @menu. |
| (Push Decl): Remove the 'experimental' warnings about push parser. |
| Clarify that the push parser object can be reused in several parses. |
| |
| 2018-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: support compilation with disabled support for exceptions |
| Reported by Brooks Moses <bmoses@google.com> |
| http://lists.gnu.org/archive/html/bison-patches/2018-02/msg00000.html |
| |
| * data/lalr1.cc (YY_EXCEPTIONS): New. |
| Use it to disable try/catch clauses. |
| |
| * doc/bison.texi (C++ Parser Interface): Document it. |
| |
| * configure.ac (CXXFLAGS_NO_EXCEPTIONS): New. |
| * tests/atlocal.in: Receive it. |
| * tests/local.at (AT_FULL_COMPILE, AT_LANG_COMPILE): |
| Accept a new argument, extra compiler flags. |
| * tests/calc.at: Run the C++ calculator with exception support disabled. |
| |
| 2018-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: add empty lines |
| Currently the examples are too dense, let's put empty lines where |
| '#line' would be issued. And also remove some spurious empty |
| lines (remains from @group, @end group, etc.). |
| |
| * examples/extexi: Do that. |
| * examples/local.mk (extexiFLAGS): Rename as... |
| (EXTEXIFLAGS): this. |
| |
| 2018-08-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: check the variant example |
| * examples/mfcalc/local.mk, examples/rpcalc/local.mk: Define the |
| programs in a more natural order, source, preproc, then linker. |
| |
| * examples/test: Be ready to work on programs that are not in |
| a subdir. |
| * examples/variant.test: New. |
| * examples/local.mk: Use it. |
| * examples/variant.yy: Don't use 0 for nullptr. |
| Use a more natural output for a list of string. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: fix portability issue with MSVC 2017 |
| Visual Studio issues a C4146 warning on '-static_cast<unsigned>(rhs)'. |
| The code is weird, probably to cope with INT_MIN. Let's go back to |
| using std::max (whose header is still included in position.hh...) like |
| originally, but with the needed casts. |
| |
| Reported by 長田偉伸, and with help from Rici Lake. |
| |
| See also |
| http://lists.gnu.org/archive/html/bug-bison/2013-02/msg00000.html |
| and commit 75ae8299840bbd854fa2474d38402bbb933c6511. |
| |
| * data/location.cc (position::add_): Take min as an int. |
| Use std::max. |
| While here, get rid of a couple of useless inlines. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: fix concurrent build failure |
| Reported by Dengke Du and Robert Yang. |
| https://lists.gnu.org/archive/html/bison-patches/2017-07/msg00000.html |
| |
| * src/local.mk (src/yacc): Make sure the directory exists. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| lalr1.cc: remove debug comment |
| * data/lalr1.cc: Remove a comment about indentation. |
| I'm not sure it would be nice to indent even more, it's already quite |
| of the right. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix the name of the GFDL section |
| Reported by dine <2500418497@qq.com>. |
| http://lists.gnu.org/archive/html/bug-bison/2016-10/msg00000.html |
| |
| I mirrored what the Coreutils do. |
| |
| * doc/bison.texi (Copying This Manual): Rename as... |
| (GNU Free Documentation License): this, since that the name we |
| used in the preamble. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: clarify the destructor selection example |
| Reported by Gary L Peskin. |
| http://lists.gnu.org/archive/html/help-bison/2016-02/msg00000.html |
| |
| * doc/bison.texi (Destructor Decl): here. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| portability: don't use _Pragma with ICC |
| ICC defines __GNUC__ [1], but does not support GCC's _Pragma for |
| diagnostics. As a matter of fact, I believe it does not support |
| _Pragma at all (only #pragma) [2]. |
| |
| Reported by Maxim Prohorenko. |
| https://savannah.gnu.org/support/index.php?108339 |
| |
| [1] https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-gcc-compatibility-and-interoperability |
| [2] https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-pragmas |
| |
| * data/c.m4 (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): Exclude ICC from |
| the club. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: typed mid-rule actions |
| * doc/bison.texi (Mid-Rule Actions): Restructure to insert... |
| (Typed Mid-Rule Actions): this new section. |
| Move the manual translation of mid-rule actions into regular actions |
| to... |
| (Mid-Rule Action Translation): here. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| escape properly the file names in #line for printer/destructor |
| Reported by Jannick. |
| http://lists.gnu.org/archive/html/bug-bison/2017-05/msg00001.html |
| |
| "Amusingly" enough, we have the same problem with %defines when the |
| parser file name has backslashes or quotes: we generate #includes with |
| an incorrect C string. |
| |
| * src/output.c (prepare_symbol_definitions): Escape properly the file |
| names before passing them to M4. |
| * data/bison.m4, data/lalr1.cc: Don't simply put the file name between |
| two quotes (that should have been strong enough a smell...), expect |
| the string to be properly quoted. |
| * tests/synclines.at: New tests to check this. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix title and improve quoting |
| * tests/synclines.at: here. |
| Also, prefer '%code' to ;%{...%}' for yylex/yyerror prototypes. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/output.c: here. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/scan-code.l: here. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/parse-gram.y: Declare iterator within the for-loop. |
| |
| 2018-08-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style changes |
| * tests/c++.at, tests/local.at: Formatting and title changes. |
| |
| 2018-08-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| reader: simplify the search of the start symbol |
| Suggested by Paul Eggert. |
| |
| * src/reader.c (find_start_symbol): Don't check 'res', we know it is |
| not null. That suffices to avoid the GCC warnings. |
| * bootstrap.conf: We don't need 'assume', which doesn't exist anyway. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: fix GCC8 warnings about uninitialized values |
| In 0931d14728fb4a2272399f2c927ae78e2607b4fb I removed too many |
| initializations from some ctors: some were not about base ctors, but |
| about member variables. In fact, more of them were missing to please |
| GCC 8. |
| |
| While at it, generate more natural code for C++ without variant: |
| instead of |
| |
| template <typename Base> |
| parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other) |
| : Base (other) |
| , value () |
| { |
| value = other.value |
| } |
| |
| generate |
| |
| template <typename Base> |
| parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other) |
| : Base (other) |
| , value (other.value) |
| {} |
| |
| * data/c++.m4 (basic_symbol::basic_symbol): Always initialize 'value', |
| it might be a POD without a ctor. |
| * data/lalr1.cc (stack_symbol_type::stack_symbol_type): Likewise. |
| * data/variant.hh (variant::variant): Default initialize the buffer too. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: style: use %empty |
| * tests/conflicts.at: here. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix warnings in push mode |
| Fix warning with GCC 8, -DNDEBUG. |
| |
| 422. push.at:83: testing Multiple impure instances ... |
| input.y: In function 'main': |
| input.c:1022:12: error: potential null pointer dereference [-Werror=null-dereference] |
| if (!yyps->yynew && yyps->yyss != yyps->yyssa) |
| ~~~~^~~~~~~ |
| |
| * data/yacc.c (pstate_delete): Do nothing if called on null pointer. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: avoid GCC 8 warnings |
| GCC 8 issues warnings whose root cause was a bit hard to find. |
| |
| calc.cc: In member function 'virtual int yy::parser::parse()': |
| calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used uninitialized in this function [-Wmaybe-uninitialized] |
| , location (l) |
| ^ |
| calc.cc: In member function 'void yy::parser::yypush_(const char*, yy::parser::stack_symbol_type&)': |
| calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used uninitialized in this function [-Wmaybe-uninitialized] |
| , location (l) |
| ^ |
| calc.cc: In member function 'void yy::parser::yypush_(const char*, yy::parser::state_type, yy::parser::symbol_type&)': |
| calc.cc:810:18: warning: '*((void*)&<anonymous> +8)' may be used uninitialized in this function [-Wmaybe-uninitialized] |
| , location (l) |
| ^ |
| |
| The problem is with locations that don't have a constructor, such as |
| Span (in calc.cc) which is POD. It is POD on purpose: so that we can |
| use that structure to test glr.cc which cannot use non POD in its |
| (C) stacks. |
| |
| * data/c++.m4 (basic_symbol): Also ensure that 'location' is |
| initialized. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: avoid compiler warnings |
| * tests/calc.at (AT_CALC_MAIN): Declare yyparse and operator<< in an |
| unnamed namespace to avoid "not declared" warnings (clang |
| -Weverything). |
| Remove useless prototypes. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| build: work around GCC warnings on Flex code |
| With GCC 7.3.0 and Flex 2.6.4, we get warnings on all the generated |
| scanners: |
| |
| examples/calc++/calc++-scanner.cc: In function 'void yyrestart(FILE*)': |
| examples/calc++/calc++-scanner.cc:1611:20: error: potential null pointer dereference [-Werror=null-dereference] |
| /* %endif */ |
| ~~~~~~~~~~~ ^ |
| examples/calc++/calc++-scanner.cc:1607:19: error: potential null pointer dereference [-Werror=null-dereference] |
| /* %if-c-only */ |
| ~~~~~~~~~~~~~~~ ^ |
| examples/calc++/calc++-scanner.cc:1611:20: error: potential null pointer dereference [-Werror=null-dereference] |
| /* %endif */ |
| ~~~~~~~~~~~ ^ |
| examples/calc++/calc++-scanner.cc:1607:19: error: potential null pointer dereference [-Werror=null-dereference] |
| /* %if-c-only */ |
| ~~~~~~~~~~~~~~~ ^ |
| cc1plus: all warnings being treated as errors |
| |
| Obviously the lines are incorrect, and the warnings are emitted twice. |
| Still, let's get rid of these warnings. |
| |
| * doc/bison.texi, src/flex-scanner.h: Disable these warnings in code |
| generated by Flex. |
| |
| 2018-08-15 Akim Demaille <akim.demaille@gmail.com> |
| |
| fix incorrect C code |
| Commit 3df32101e7978eaafa63bce8908de3dcae4d9cda introduced invalid C |
| code. Caught by GCC 7.3.0. |
| |
| * bootstrap.conf (gnulib_modules): We need assume. |
| * src/reader.c (find_start_symbol): Fix the signature (too much C++, |
| sorry...). |
| Prefer 'assume' to 'assert', so that we don't have these warnings even |
| when NDEBUG is defined. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: fix Englishoes |
| * examples/README: Fix my mistakes. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| examples: ship and install variant.yy |
| This file was meant to be shown as an example. Install it. |
| |
| * README, data/README: Put Emacs metadata in the final section. |
| * examples/README: New. |
| * examples/variant.yy: Use %empty. |
| * examples/local.mk: Install both these files. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: remove useless copy-constructor |
| We currently generate copy constructors such as the following |
| one (taken from examples/variant.yy): |
| |
| parser::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that) |
| : super_type (that.state, that.location) |
| { |
| switch (that.type_get ()) |
| { |
| case 3: // TEXT |
| case 8: // item |
| value.copy< ::std::string > (that.value); |
| break; |
| |
| case 7: // list |
| value.copy< ::std::vector<std::string> > (that.value); |
| break; |
| |
| case 4: // NUMBER |
| value.copy< int > (that.value); |
| break; |
| |
| default: |
| break; |
| } |
| } |
| |
| they are actually useless: we never need it. |
| |
| * data/lalr1.cc: Don't generate the stack_symbol_type copy ctor. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: symbol constructors: add a missing reference |
| Fix a typo so that instead of |
| |
| basic_symbol::basic_symbol (typename Base::kind_type t, const int v) |
| |
| we now generate |
| |
| basic_symbol::basic_symbol (typename Base::kind_type t, const int& v) |
| |
| * data/variant.hh (b4_basic_symbol_constructor_declare) |
| (b4_basic_symbol_constructor_define): Add missing reference. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: remove useless calls to the base default constructor |
| * data/c++.m4, data/stack.hh, data/variant.hh: here. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: prefer size_type to unsigned for indexes |
| * data/stack.hh (size_type): New, based on the container type. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: m4: remove useless reference to 'int' in integral types |
| * m4/cxx.m4: Prefer 'unsigned' to 'unsigned int'. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: doc: remove useless reference to 'int' in integral types |
| * doc/bison.texi: Prefer 'unsigned' to 'unsigned int'. Likewise for |
| long and short. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: lib: remove useless reference to 'int' in integral types |
| * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h, |
| * lib/bitset_stats.c, lib/bitsetv-print.c, lib/bitsetv.c, |
| * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/timevar.c, |
| * lib/vbitset.c: |
| Prefer 'unsigned' to 'unsigned int'. Likewise for long and short. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: src: remove useless reference to 'int' in integral types |
| * src/AnnotationList.c, src/AnnotationList.h, src/InadequacyList.h, |
| * src/closure.c, src/closure.h, src/gram.c, src/gram.h, src/ielr.c, |
| * src/location.c, src/output.c, src/reader.c, src/relation.c, |
| * src/scan-code.l, src/scan-gram.l, src/tables.c, src/tables.h: |
| Prefer 'unsigned' to 'unsigned int'. Likewise for long and short. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: tests: remove useless reference to 'int' in integral types |
| * tests/actions.at, tests/cxx-type.at: Prefer 'unsigned' to 'unsigned |
| int'. Likewise for long and short. |
| |
| 2018-08-14 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: data: remove useless reference to 'int' in integral types |
| * data/c.m4, data/glr.c, data/yacc.c: Prefer 'unsigned' to 'unsigned |
| int'. Likewise for long and short. |
| |
| 2018-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| * bootstrap.conf: gnulib_mk is defined again by bootstrap. |
| |
| 2018-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: avoid type aliases |
| * doc/bison.texi (C++ Location Values): Use 'unsigned' instead of |
| 'uint'. |
| |
| 2018-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: remove the "experimental" warning for some features |
| Several features were flagged 'experimental' and waiting for user |
| feedback to 'stabilize', but i. AFAIK, no user ever reported anything |
| about them, ii. they'be been here long enough to prove they don't do |
| harm. |
| |
| * doc/bison.texi: No longer experimental: default %printer and |
| %destructor (typed: <*> and untyped: <>), %define api.value.type union |
| and variant, Java parsers, XML output, LR family (lr, ielr, lalr), |
| semantic predicates (%?). |
| |
| 2018-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check variants and typed mid-rule actions |
| See |
| http://lists.gnu.org/archive/html/bison-patches/2018-08/msg00013.html |
| |
| * tests/c++.at (Variants and Typed Mid-rule Actions): New. |
| |
| 2018-08-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix minor issues |
| * tests/actions.at: Fix some log messages. |
| Prefer #error to fprintf: it fixes the invalid use of yyoutput in |
| %destructor, and it is an even stronger check: that the code is not |
| even emitted. The portability of #error is not really a problem here, |
| since the point is anyway to have the compilation fail. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| c++: variant: add more assertions |
| * data/variant.hh (variant::as): Check yytypeid_ before |
| checking *yytypeid_. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: -fcaret is enabled by default |
| * doc/bison.texi (Mid-Rule Action Translation): So no need to pass it. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/closure.c, src/conflicts.c: here. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| rule actions cannot be typed |
| Make sure that we cannot apply a type to the (main) action of a rule. |
| |
| * src/reader.c (grammar_rule_check): Issue the warning. |
| * tests/input.at (Cannot type action): Check the warning. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| warn about typed mid-rule actions in Yacc mode |
| * src/reader.c (grammar_current_rule_action_append): Warn. |
| * tests/input.at (AT_CHECK_UNUSED_VALUES): Check. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check typed mid-rule actions |
| * tests/input.at (_AT_UNUSED_VALUES_DECLARATIONS): Check |
| typed mid-rule actions. |
| * tests/report.at (Reports): Check that types of typed mid-rule |
| actions are reported. |
| * tests/actions.at (Typed mid-rule actions): Check that |
| the values of typed mid-rule actions are correct. |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-08-11 Akim Demaille <akim.demaille@gmail.com> |
| |
| add support for typed mid-rule actions |
| Prompted on Piotr Marcińczyk's message: |
| http://lists.gnu.org/archive/html/bug-bison/2017-06/msg00000.html. |
| See also http://lists.gnu.org/archive/html/bug-bison/2018-06/msg00001.html. |
| |
| Because their type is unknown to Bison, the values of midrule actions are |
| not treated like the others: they don't have %printer and %destructor |
| support. In addition, in C++, (Bison) variants cannot work properly. |
| |
| Typed midrule actions address these issues. Instead of: |
| |
| exp: { $<ival>$ = 1; } { $<ival>$ = 2; } { $$ = $<ival>1 + $<ival>2; } |
| |
| write: |
| |
| exp: <ival>{ $$ = 1; } <ival>{ $$ = 2; } { $$ = $1 + $2; } |
| |
| * src/scan-code.h, src/scan-code.l (code_props): Add a `type` field to |
| record the declared type of an action. |
| (code_props_rule_action_init): Add a type argument. |
| * src/parse-gram.y: Accept an optional type tag for actions. |
| * src/reader.h, src/reader.c (grammar_current_rule_action_append): Add |
| a type argument. |
| (grammar_midrule_action): When a mid-rule is typed, pass its type to |
| the defined dummy non terminal symbol. |
| |
| 2018-08-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: make room for more cases |
| * tests/input.at (AT_CHECK_UNUSED_VALUES): Add an empty line |
| to allow more symbols, and adjust line numbers. |
| Use a more consistent m4 quoting scheme. |
| |
| 2018-08-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| warnings: address -Wnull-dereference in reader.c |
| Based on a patch by David Michael. |
| http://lists.gnu.org/archive/html/bison-patches/2018-07/msg00000.html |
| |
| * src/reader.c (find_start): New, extracted from... |
| (check_and_convert_grammar): here. |
| |
| 2018-08-05 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: ielr: reduce scopes |
| * src/ielr.c: Use modern C to reduce the scopes of some variables. |
| |
| 2018-07-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: move to C99 to reduce scopes |
| * src/symtab.c, src/reader.c: Freely mix statements and variable |
| definitions. And use for-loops with initializers. |
| |
| 2018-07-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: split a function in two |
| grammar_current_rule_action_append was used in two different places: |
| for actual action (`{...}`), and for predicates (`%?{...}`). Let's |
| split this in two different functions. |
| |
| * src/reader.h, src/reader.c (grammar_current_rule_predicate_append): New. |
| Extracted from... |
| (grammar_current_rule_action_append): here. |
| Remove arguments that don't apply. |
| Adjust dependencies. |
| |
| 2018-07-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix typo |
| * tests/actions.at: Remove (harmless) stray character. |
| |
| 2018-07-26 Akim Demaille <akim.demaille@gmail.com> |
| |
| print: remove unused function |
| This function was unused since 1991's original import by |
| rms (e06f0c34427faedc7afbec9554adbffc4c87312e). |
| |
| * src/print.c (print_token): Remove. |
| |
| 2018-06-23 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: fix Texinfo syntax error |
| * doc/bison.texi (Understanding): here. |
| |
| 2018-06-22 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: we now show the type of the symbols |
| * doc/bison.texi (Understanding Your Parser): Update the output |
| from Bison. |
| Use types in the example, and show them in the report. |
| * NEWS: Update. |
| |
| 2018-06-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: check the typed symbols in the reports |
| * tests/report.at: New. |
| * tests/local.mk, tests/testsuite.at: Use it. |
| |
| 2018-06-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| report: display the type of the symbols |
| * src/print.c (print_nonterminal_symbols, print_terminal_symbols): |
| Also should the type of the symbols. |
| |
| 2018-06-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/print.c (print_terminal_symbols, print_nonterminal_symbols): Here. |
| |
| 2018-06-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: split large function |
| * src/print.c (print_grammar): Split into... |
| (print_terminal_symbols, print_nonterminal_symbols): these. |
| Adjust dependencies. |
| |
| 2018-06-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: reduce scopes |
| * src/print.c (print_grammar): Shorten scopes. |
| |
| 2018-06-18 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| Fixes the `make install-pdf` problem reported by Hans Åberg in |
| http://lists.gnu.org/archive/html/bug-bison/2018-06/msg00000.html |
| that had already been fixed by Joel E. Denny in |
| http://lists.gnu.org/archive/html/bug-bison/2012-04/msg00011.html |
| Final fix in |
| http://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00019.html |
| |
| 2018-06-17 Akim Demaille <akim.demaille@gmail.com> |
| |
| Merge maint into master |
| * upstream/maint: (48 commits) |
| THANKS: update an address |
| tests: adjust syncline tests to GCC 7 |
| glr: fix improperly placed synclines |
| bison: be git grep friendly |
| Replace ftp with https |
| maint: post-release administrivia |
| version 3.0.5 |
| bison: style: indentation fixes |
| regen |
| bison: please address sanitizer |
| C++: style: fix indentation |
| NEWS: update |
| C++: style: prefer `unsigned` to `unsigned int` |
| C++: style: space before paren |
| C++: fix -Wdeprecated warnings |
| tests: fix -Wdeprecated warning |
| maint: update syntax-check exclusions |
| autoconf: update |
| regen |
| Update copyright years |
| ... |
| |
| 2018-05-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| THANKS: update an address |
| |
| 2018-05-30 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: adjust syncline tests to GCC 7 |
| GCC 7 also underlines the error. |
| |
| syncline.c:4:2: error: #error "4" |
| #error "4" |
| ^~~~~ |
| |
| * tests/synclines.at (_AT_SYNCLINES_COMPILE): Remove tildas from GCC 7. |
| |
| 2018-05-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| glr: fix improperly placed synclines |
| Predicates with GLR are issued with synclines in the middle of C code: |
| |
| case 2: |
| if (! (#line 6 "sempred.y" /* glr.c:816 */ |
| new_syntax)) YYERROR; |
| #line 793 "sempred.tab.c" /* glr.c:816 */ |
| break; |
| |
| Reported by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2018-05/msg00033.html |
| |
| * data/c.m4 (b4_predicate_case): Be sure to start on column 0. |
| It would be nicer if b4_syncline could ensure this by itself |
| (that would avoid ugly code when synclines are disabled), but that's |
| way more work. |
| * tests/glr-regression.at (Predicates): Be a real end-to-end test. |
| This would have caught this error years ago... |
| |
| 2018-05-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: be git grep friendly |
| * src/output.c (user_actions_output): Make calls to b4_case and |
| b4_predicate_case explicit. |
| |
| 2018-05-29 Akim Demaille <akim.demaille@gmail.com> |
| |
| Replace ftp with https |
| Reported by Hans Åberg. |
| |
| * README, cfg.mk, doc/bison.texi: here. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| version 3.0.5 |
| * NEWS: Record release date. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: style: indentation fixes |
| * src/parse-gram.y: here. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| bison: please address sanitizer |
| * src/parse-gram.y (add_param): Asan does not like that the second |
| argument of strspn is not 0-terminated. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: style: fix indentation |
| * data/variant.hh (b4_symbol_variant): De-indent, as the callers are |
| indented. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| NEWS: update |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: style: prefer `unsigned` to `unsigned int` |
| * data/c++.m4: here. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: style: space before paren |
| * data/c++.m4, data/lalr1.cc: here. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: fix -Wdeprecated warnings |
| For instance on test 99: |
| |
| In file included from @@.cc:56: |
| @@.hh:409:26: error: definition of implicit copy constructor for |
| 'stack_symbol_type' is deprecated because it |
| has a user-declared copy assignment operator |
| [-Werror,-Wdeprecated] |
| stack_symbol_type& operator= (const stack_symbol_type& that); |
| ^ |
| |
| Reported by Derek Clegg. |
| https://lists.gnu.org/archive/html/bison-patches/2018-05/msg00036.html |
| |
| * configure.ac (warn_tests): Add -Wdeprecated. |
| * data/lalr1.cc (stack_symbol_type): Add an explicit copy ctor. |
| We cannot rely on the explicit default implementation (`= default`) |
| as we support C++ 98. |
| |
| 2018-05-27 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: fix -Wdeprecated warning |
| With recent compilers: |
| |
| input.yy:49:5: error: definition of implicit copy assignment |
| operator for 'Object' is deprecated because |
| it has a user-declared destructor |
| [-Werror,-Wdeprecated] |
| ~Object () |
| ^ |
| input.yy:130:35: note: in implicit copy assignment operator for |
| 'Object' first required here |
| { yylhs.value.as< Object > () = yystack_[0].value.as< Object > (); } |
| |
| * tests/c++.at (Object): Add missing assignment operator. |
| |
| 2018-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| maint: update syntax-check exclusions |
| sc_two_space_separator_in_usage complains about bootstrap: |
| |
| two_space_separator_in_usage |
| /Users/akim/src/gnu/bison/bootstrap:905: --aux-dir $build_aux\ |
| /Users/akim/src/gnu/bison/bootstrap:906: --doc-base $doc_base\ |
| /Users/akim/src/gnu/bison/bootstrap:907: --lib $gnulib_name\ |
| /Users/akim/src/gnu/bison/bootstrap:908: --m4-base $m4_base/\ |
| /Users/akim/src/gnu/bison/bootstrap:909: --source-base $source_base/\ |
| /Users/akim/src/gnu/bison/bootstrap:910: --tests-base $tests_base\ |
| /Users/akim/src/gnu/bison/bootstrap:911: --local-dir $local_gl_dir\ |
| maint.mk: help2man requires at least two spaces between an option and its description |
| |
| * cfg.mk: Exclude bootstrap from this check. |
| |
| 2018-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| autoconf: update |
| * submodules/autoconf: Update to latest master. |
| No difference on the M4 files we use. |
| |
| 2018-05-19 Akim Demaille <akim.demaille@gmail.com> |
| |
| regen |
| |
| 2018-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| Update copyright years |
| Run `make update-copyright`. |
| |
| 2018-05-12 Nate Guerin <nathan.guerin@riseup.net> |
| |
| Add a missing word in the documentation |
| Small patch adds the word 'to' to the documentation. |
| |
| 2018-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| Examples: improve C++ style |
| * examples/variant.yy: Prefer vector to list. |
| Remove useless inline. |
| |
| 2018-05-12 Akim Demaille <akim.demaille@gmail.com> |
| |
| Avoid compiler warnings |
| At least GCC 7.3, with -O1 or -O2 (but not -O0 or -O3) generates |
| warnings with -Wnull-dereference when using yyformat: it fails to see |
| yyformat cannot be null. |
| |
| Reported by Frank Heckenbach, https://savannah.gnu.org/patch/?9620. |
| |
| * configure.ac: Use -Wnull-dereference if supported. |
| * data/glr.c, data/lalr1.cc, data/yacc.c: Define yyformat in such |
| a way that GCC cannot not see that yyformat is defined. |
| Using `default: abort();` also addresses the issue, but forces |
| the inclusion of `stdlib.h`, which we avoid. |
| |
| 2018-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: fix uses of `inline` |
| Sometimes `inline` would be used in *.cc files on symbols that are not |
| exported (useless but harmless), and sometimes on exported symbols |
| such as the constructor of syntax_error (harmful: linking fails). |
| |
| Reported several times, including: |
| |
| - by Dennis T |
| http://lists.gnu.org/archive/html/bug-bison/2016-03/msg00002.html |
| - by Frank Heckenbach |
| https://savannah.gnu.org/patch/?9616 |
| |
| * data/c++.m4 (b4_inline): New: expands to `inline` or nothing. |
| Use it where appropriate. |
| * data/lalr1.cc: Use it where appropriate. |
| |
| * tests/c++.at (Syntax error as exception): Put the scanner in another |
| compilation unit to exercise the constructor of syntax_error. |
| |
| 2018-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: remove useless `inline` in CC files |
| * data/glr.cc, data/lalr1.cc: Remove `inline` from implementations |
| that are not in headers. |
| |
| 2018-05-10 Akim Demaille <akim.demaille@gmail.com> |
| |
| C++: remove useless `inline` on templates |
| Templates are implicitly `inline`. |
| |
| * data/c++.m4, data/lalr1.cc: Remove `inline` from templates. |
| |
| 2018-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| style: don't use std::endl |
| * data/lalr1.cc, doc/bison.texi, etc/bench.pl.in, examples/variant.yy, |
| * tests/actions.at, tests/atlocal.in, tests/c++.at, tests/headers.at, |
| * tests/local.at, tests/types.at: |
| Don't use std::endl, it flushes uselessly, and is considered bad |
| style. |
| |
| 2018-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| doc: wrap |
| * README-hacking: Refill paragraphs. |
| |
| 2018-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| gnulib: update |
| * README-hacking: Commit before bootstrapping. |
| * bootstrap.conf: gnulib_mk is no longer defined by bootstrap. |
| * bootstrap, gnulib, lib/.gitignore, m4/.gitignore: Update/regen. |
| |
| 2018-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| tests: we might need to find gnulib headers |
| 315. calc.at:596: testing Calculator ... |
| ++ cat |
| ++ test x = x1 |
| ++ set +x |
| bison/tests/calc.at:596: bison -fno-caret -o calc.c calc.y |
| ++ bison -fno-caret -o calc.c calc.y |
| ++ set +x |
| bison/tests/calc.at:596: $BISON_C_WORKS |
| stderr: |
| stdout: |
| ++ set +x |
| bison/tests/calc.at:596: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS |
| ++ ccache clang-mp-6.0 -Qunused-arguments -O3 -g -Wall -Wextra -Wno-sign-compare -Wcast-align -Wdocumentation -Wformat -Wpointer-arith -Wwrite-strings -Wbad-function-cast -Wshadow -Wstrict-prototypes -Wmissing-declarations -Wmissing-prototypes -Wmissing-declarations -Wmissing-prototypes -Wundef -pedantic -Wsign-compare -fno-color-diagnostics -Wno-keyword-macro -Werror -Ibison/_build/6s/lib -DNDEBUG -isystem /opt/local/include -I/opt/local/include -L/opt/local/lib -o calc calc.c bison/_build/6s/lib/libbison.a -lintl -Wl,-framework -Wl,CoreFoundation |
| stderr: |
| In file included from calc.y:198: |
| bison/_build/6s/lib/unistd.h:592:11: fatal error: 'getopt-pfx-core.h' file not found |
| # include <getopt-pfx-core.h> |
| ^~~~~~~~~~~~~~~~~~~ |
| 1 error generated. |
| stdout: |
| bison/tests/calc.at:596: exit code was 1, expected 0 |
| 315. calc.at:596: 315. Calculator (calc.at:596): FAILED (calc.at:596) |
| |
| * tests/atlocal.in (CPPFLAGS): Find gnulib's headers. |
| |
| 2018-05-08 Akim Demaille <akim.demaille@gmail.com> |
| |
| getargs: rename argument to avoid gnulib's renaming |
| With Clang 6.0: |
| |
| CC src/bison-getargs.o |
| bison/src/getargs.c:67:12: error: parameter 'option' not found in the |
| function declaration [-Werror,-Wdocumentation] |
| * \param option option being decoded. |
| ^~~~~~ |
| bison/src/getargs.c:67:12: note: did you mean 'rpl_option'? |
| |
| * src/getargs.c: Don't use `option` as a documentation argument. |
| |
| 2017-09-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Capitalize "Polish" when it's a proper adjective |
| |
| 2017-09-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| Adjust to recent Gnulib changes |
| |
| 2017-09-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| autoconf: update |
| |
| 2017-09-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| gnulib: update |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1, yacc: use the default location as initial error location |
| Currently lalr1.cc makes an out-of-bound access when trying to read @1 |
| in rules with an empty rhs (i.e., when there is no @1) that raises an |
| error (YYERROR). |
| |
| glr.c already gracefully handles this by using @$ as initial location |
| for the errors. Let's do that in yacc.c and lalr1.cc. |
| |
| * data/lalr1.cc, data/yacc.c: Use @$ to initialize the error location. |
| * tests/actions.at: Check that case. |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: formatting and comment changes |
| * data/glr.c: Avoid empty lines. |
| * data/lalr1.cc: Use the same comments as in glr.c and yacc.c. |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: style: use "unsigned", not "unsigned int" |
| This style appears to be more traditional, at least in C++. |
| For instance in the standard, [facets.examples]. |
| There are occurrences using "unsigned int" too though. |
| |
| * data/lalr1.cc, data/location.cc, data/stack.hh: here. |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: style: remove useless "inline" and fix space issues |
| * data/lalr1.cc, data/c++.m4: Formatting changes. |
| * data/stack.hh: Remove useless "inline". |
| Add documentation. |
| * data/location.cc: Prefer {} for empty bodies. |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: beware of additional warnings from GCC 5 |
| * tests/synclines.at (AT_SYNCLINES_COMPILE): Avoid warnings about |
| unused functions. |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: beware that clang warns about "#define private public" |
| We use this trick to write some test about internal details. But |
| since we use -Werror, clang++ 3.6 dies issueing a warning about it. |
| |
| * configure.ac (warn_tests): Disable this warning. |
| |
| 2015-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: update our Valgrind suppression files |
| * build-aux/linux-gnu.valgrind, build-aux/darwin11.4.0.valgrind: Rename as... |
| * build-aux/Linux.valgrind, build-aux/Darwin.valgrind: these. |
| * build-aux/Linux.valgrind: Add suppression clause. |
| * configure.ac: Update. |
| * tests/local.mk: Use it. |
| |
| 2015-03-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: improve html and pdf rendering |
| * doc/bison.texi: Help html conversion to understand where the |
| function names end. |
| Beware of PDF width. |
| |
| 2015-03-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fixes in the C++ part |
| Reported by Askar Safin. |
| |
| http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00018.html |
| http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00019.html |
| |
| * doc/bison.texi (Split Symbols): Fix access to token types. |
| yylval is a pointer, so use ->. |
| Fix coding style issues: space before paren. |
| |
| 2015-02-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: be robust to platforms that support UTF-8 even with LC_ALL=C |
| Because musl supports UTF-8 with LC_ALL=C, gcc produces: |
| |
| input.y: In function ‘yyparse’: |
| |
| instead of: |
| |
| input.y: In function 'yyparse': |
| |
| Reported by Ferdinand Thiessen. |
| http://lists.gnu.org/archive/html/bug-bison/2015-02/msg00001.html |
| |
| * tests/synclines.at (AT_SYNCLINES_COMPILE): Skip syncline tests when |
| we can't trust error messages issued about a function body. |
| |
| 2015-02-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: java: avoid recent Java features |
| Tests 463 and 464 fail with Java 1.4 compilers. |
| |
| Reported by Michael Felt. |
| <http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00091.html> |
| |
| * tests/javapush.at: Use StringBuffer instead of StringBuilder. |
| |
| 2015-01-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: c++: fix symbol lookup issue |
| Sun C 5.13 SunOS_sparc 2014/10/20 reports errors on tests 430-432. |
| |
| Reported by Dennis Clarke. |
| <http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00087.html> |
| |
| * tests/c++.at (Variants): Be sure to emit operator<< before using it: |
| use "%code top" rather than "%code". |
| Prefer std::vector to std::list. |
| Do not define anything in std::, to avoid undefined behavior. |
| |
| 2015-01-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: post-release administrivia |
| version 3.0.4 |
| gnulib: update |
| build: re-enable compiler warnings, and fix them |
| tests: c++: fix a C++03 conformance issue |
| tests: fix a title |
| c++: reserve 200 slots in the parser's stack |
| tests: be more robust to unrecognized synclines, and try to recognize xlc |
| tests: fix C++ conformance |
| build: fix some warnings |
| build: avoid infinite recursions on include_next |
| |
| 2015-01-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2015-01-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 3.0.4 |
| * NEWS: Record release date. |
| |
| 2015-01-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2015-01-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: re-enable compiler warnings, and fix them |
| There are warnings (-Wextra) in generated C++ code: |
| |
| ltlparse.cc: In member function 'ltlyy::parser::symbol_number_type |
| ltlyy::parser::by_state::type_get() const': |
| ltlparse.cc:452:33: warning: enumeral and non-enumeral type in |
| conditional expression |
| return state == empty_state ? empty_symbol : yystos_[state]; |
| |
| Reported by Alexandre Duret-Lutz. |
| |
| It turns out that -Wall and -Wextra were disabled because of a stupid |
| typo. |
| |
| * configure.ac: Fix the stupid typo. |
| * data/lalr1.cc, src/AnnotationList.c, src/InadequacyList.c, |
| * src/ielr.c, src/print.c, src/scan-code.l, src/symlist.c, |
| * src/symlist.h, src/symtab.c, src/tables.c, tests/actions.at, |
| * tests/calc.at, tests/cxx-type.at, tests/glr-regression.at, |
| * tests/named-refs.at, tests/torture.at: |
| Fix warnings, mostly issues about variables used only with assertions, |
| which are disabled with -DNDEBUG. |
| |
| 2015-01-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: c++: fix a C++03 conformance issue |
| This fixes test 241 on xLC: |
| |
| "input.y", line 42.11: 1540-0274 (S) The name lookup for "report" did not find a declaration. |
| "input.y", line 42.11: 1540-1292 (I) Static declarations are not considered for a function call if the function is not qualified. |
| |
| where report is: |
| |
| static void |
| report (std::ostream& yyo, int ival, float fval) |
| { |
| yyo << "ival: " << ival << ", fval: " << fval; |
| } |
| |
| and line 42 is: |
| |
| %printer { report (yyo, $$, $<fval>$); } <ival>; |
| |
| It turns out that indeed this function must not be declared static, |
| <http://stackoverflow.com/a/17662745/1353549>. Let's put it into an |
| anonymous namespace. |
| |
| Reported by Thomas Jahns. |
| http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html |
| |
| * tests/actions.at (Qualified $$ in actions): Don't use "static", |
| prefer anonymous namespace. |
| |
| 2015-01-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix a title |
| * tests/conflicts.at: De-overquote. |
| |
| 2015-01-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: reserve 200 slots in the parser's stack |
| This is consistent with what is done with yacc.c and glr.c. Because |
| it also avoids that the stack needs to be resized very soon, it should |
| help keeping tests about destructors more reliable. |
| |
| Indeed, if the stack is created too small, very soon the C++ library |
| needs to enlarge it, which means creating a new one, copying the |
| elements from the initial one onto it, and then destroy the elements |
| of the initial stack: that would be a spurious call to a destructor. |
| |
| Reported by Thomas Jahns. |
| http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html |
| |
| * data/stack.hh (stack::stack): Reserve 200 slots. |
| * tests/c++.at: Remove traces of stack expansions. |
| |
| 2015-01-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: be more robust to unrecognized synclines, and try to recognize xlc |
| Reported by Thomas Jahns. |
| http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html |
| |
| * tests/synclines.at (AT_SYNCLINES_COMPILE): Rename as... |
| (_AT_SYNCLINES_COMPILE): this. |
| Try to recognize xlc locations. |
| (AT_SYNCLINES_COMPILE): New. Skips the test if we can't read the |
| synclines. |
| |
| 2015-01-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix C++ conformance |
| Reported by Thomas Jahns. |
| http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html |
| |
| * tests/c++.at (Exception safety): Add missing include. |
| Don't use const_iterator for erase. |
| |
| 2015-01-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix some warnings |
| Reported by John Horigan. |
| http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00034.html |
| |
| * src/graphviz.c, src/symtab.h: Address compiler warnings. |
| |
| 2015-01-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' into origin/master |
| * origin/maint: |
| doc: minor fixes |
| gnulib: strtoul is considered obsolete and now useless |
| c++: avoid warnings when destructors don't use $$ |
| maint: post-release administrivia |
| version 3.0.3 |
| gnulib: update |
| |
| 2015-01-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: avoid infinite recursions on include_next |
| On MacOS X 10.5 PPC with Apple's GCC 4.0.1: |
| |
| % uname -a |
| Darwin aria.cielonegro.org 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:57:0 |
| 1 PDT 2009; root:xnu-1228.15.4~1/RELEASE_PPC Power Macintosh |
| % gcc --version |
| powerpc-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493) |
| Copyright (C) 2005 Free Software Foundation, Inc. |
| This is free software; see the source for copying conditions. There is NO |
| warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| |
| building in place enters into an infinite recursion on "#include_next": |
| |
| % gmake V=1 |
| [snip] |
| depbase=`echo lib/math.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ |
| gcc -std=gnu99 -I. -Ilib -I. -I./lib -g -O2 -MT lib/math.o -MD -MP -MF $depbase.Tpo -c -o lib/math.o lib/math.c &&\ |
| mv -f $depbase.Tpo $depbase.Po |
| In file included from lib/math.h:27, |
| from lib/math.h:27, |
| from lib/math.h:27, |
| from lib/math.h:27, |
| [snip] |
| from lib/math.h:27, |
| from lib/math.h:27, |
| from lib/math.c:3: |
| lib/math.h:27:23: error: #include nested too deeply |
| Makefile:3414: recipe for target 'lib/math.o' failed |
| gmake[2]: *** [lib/math.o] Error 1 |
| |
| Using -I./lib instead of -Ilib fixes the problem. |
| |
| Reported by Pho. |
| <https://lists.gnu.org/archive/html/bison-patches/2014-01/msg00000.html> |
| |
| * Makefile.am (AM_CPPFLAGS): Use -I./lib instead of -Ilib. |
| |
| 2015-01-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: minor fixes |
| * doc/bison.texi: Fix warnings about colon in reference names. |
| * data/bison.m4, src/files.h: Fix comments. |
| * doc/Doxyfile.in: update. |
| |
| 2015-01-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: strtoul is considered obsolete and now useless |
| * bootstrap.conf: here. |
| |
| 2015-01-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: avoid warnings when destructors don't use $$ |
| * data/c++.m4: here. |
| |
| 2015-01-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2015-01-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 3.0.3 |
| * NEWS: Record release date. |
| |
| 2015-01-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2015-01-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| symbol: use the first occurrence as an LHS as defining location |
| Currently on the following grammar: |
| |
| %type <foo> foo |
| %% |
| start: foo | bar | "baz" |
| foo: foo |
| bar: bar |
| |
| bison reports: |
| |
| warning: 2 nonterminals useless in grammar [-Wother] |
| warning: 4 rules useless in grammar [-Wother] |
| 1.13-15: warning: nonterminal useless in grammar: foo [-Wother] |
| %type <foo> foo |
| ^^^ |
| 3.14-16: warning: nonterminal useless in grammar: bar [-Wother] |
| start: foo | bar | "baz" |
| ^^^ |
| [...] |
| |
| i.e., the location of the first occurrence of a symbol is taken as its |
| definition point. In the case of nonterminals, the first occurrence |
| as a left-hand side of a rule makes more sense: |
| |
| warning: 2 nonterminals useless in grammar [-Wother] |
| warning: 4 rules useless in grammar [-Wother] |
| 4.1-3: warning: nonterminal useless in grammar: foo [-Wother] |
| foo: foo |
| ^^^ |
| 5.1-3: warning: nonterminal useless in grammar: bar [-Wother] |
| bar: bar |
| ^^^ |
| [...] |
| |
| * src/symtab.h, src/symtab.c (symbol::location_of_lhs): New. |
| (symbol_location_as_lhs_set): New. |
| * src/parse-gram.y (current_lhs): Use it. |
| * tests/reduce.at: Update locations. |
| |
| 2015-01-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| reduce: don't complain about rules whose lhs is useless |
| In the following grammar, the 'exp' nonterminal is trivially useless. |
| So, of course, its rules are useless too. |
| |
| %% |
| input: '0' | exp |
| exp: exp '+' exp | exp '-' exp | '(' exp ')' |
| |
| Previously all the useless rules were reported, including those whose |
| left-hand side is the 'exp' nonterminal: |
| |
| warning: 1 nonterminal useless in grammar [-Wother] |
| warning: 4 rules useless in grammar [-Wother] |
| 2.14-16: warning: nonterminal useless in grammar: exp [-Wother] |
| input: '0' | exp |
| ^^^ |
| 2.14-16: warning: rule useless in grammar [-Wother] |
| input: '0' | exp |
| ^^^ |
| ! 3.6-16: warning: rule useless in grammar [-Wother] |
| ! exp: exp '+' exp | exp '-' exp | '(' exp ')' |
| ! ^^^^^^^^^^^ |
| ! 3.20-30: warning: rule useless in grammar [-Wother] |
| ! exp: exp '+' exp | exp '-' exp | '(' exp ')' |
| ! ^^^^^^^^^^^ |
| ! 3.34-44: warning: rule useless in grammar [-Wother] |
| ! exp: exp '+' exp | exp '-' exp | '(' exp ')' |
| ! ^^^^^^^^^^^ |
| |
| The interest of being so verbose is dubious. I suspect most of the |
| time nonterminals are not expected to be useless, so the user wants to |
| fix the nonterminal, not remove its rules. And even if the user |
| wanted to get rid of its rules, the position of these rules probably |
| does not help more that just having the name of the nonterminal. |
| |
| This commit discard these messages, marked with '!', and keep the |
| others. In particular, we still report: |
| |
| 2.14-16: warning: rule useless in grammar [-Wother] |
| input: '0' | exp |
| ^^^ |
| |
| All the useless rules (including the '!' ones) are still reported in |
| the reports (xml, text, etc.); only the diagnostics on stderr change. |
| |
| * src/gram.c (grammar_rules_useless_report): Don't complain about |
| useless rules whose lhs is useless. |
| * src/reduce.h, src/reduce.c (reduce_nonterminal_useless_in_grammar): |
| Take a sym_content as argument. |
| Adjust callers. |
| * tests/reduce.at (Useless Rules, Underivable Rules, Reduced Automaton): |
| Adjust. |
| |
| 2015-01-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: reduce: use unsigned to count a number of objects |
| * src/reduce.h, src/reduce.c (nuseful_productions, nuseless_productions) |
| (nuseful_nonterminals, nuseless_nonterminals): Declare as unsigned. |
| Simplify "0 <" tests into non-zero tests. |
| |
| 2015-01-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: reduce: introduce and use a swap for bitset |
| * src/reduce.c (bitset_swap): New. |
| Use it. |
| |
| 2015-01-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: reduce: reduce scopes and other stylistic changes |
| * src/reduce.c: Various stylistic changes: |
| Reduce scopes. |
| Prefer ++i to i++. |
| Prefer < to >. |
| |
| 2015-01-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| tests: split a large test case into several smaller ones |
| package: a bit of trouble shooting indications |
| doc: liby's main arms the internationalization |
| bison: avoid warnings from static code analysis |
| c++: fix the use of destructors when variants are enabled |
| style: tests: simplify the handling of some C++ tests |
| c++: symbols can be empty, so use it |
| c++: variants: don't leak the lookahead in error recovery |
| c++: provide a means to clear symbols |
| c++: clean up the handling of empty symbols |
| c++: comment and style changes |
| c++: variants: comparing addresses of typeid.name() is undefined |
| c++: locations: complete the API and fix comments |
| build: do not clean figure sources in make clean |
| |
| 2015-01-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: split a large test case into several smaller ones |
| * tests/conflicts.at (AT_CONSISTENT_ERRORS_CHECK): Move AT_SETUP/AT_CLEANUP |
| into it, so that we don't skip non Java tests following a test case in Java. |
| |
| 2015-01-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| package: a bit of trouble shooting indications |
| * README-hacking: here. |
| |
| 2015-01-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: liby's main arms the internationalization |
| Reported by Nicolas Bedon. |
| <https://lists.gnu.org/archive/html/bug-bison/2014-11/msg00005.html> |
| |
| * doc/bison.texi (Yacc Library): Document the call the setlocale. |
| |
| 2015-01-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| bison: avoid warnings from static code analysis |
| A static analysis tool reports that some callers of symbol_list_n_get |
| might get NULL and not handle it properly. This is not the case, yet |
| we can suppress this pattern. |
| |
| Reported by Mike Sullivan. |
| <https://lists.gnu.org/archive/html/bug-bison/2013-12/msg00027.html> |
| |
| * src/symlist.c (symbol_list_n_get): Actually it is never called |
| to return 0. Enforce this postcondition via aver. |
| (symbol_list_n_type_name_get): Simplify accordingly. In particular, |
| discards a (translated) useless error message. |
| * src/symlist.h: Adjust documentation. |
| * src/scan-code.l: Style change. |
| |
| 2015-01-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: fix the use of destructors when variants are enabled |
| When using variants, destructors generate invalid code. |
| <http://lists.gnu.org/archive/html/bug-bison/2014-09/msg00005.html> |
| Reported by Michael Catanzaro. |
| |
| * data/c++.m4 (~basic_symbol): b4_symbol_foreach works on yysym: |
| define it. |
| * tests/c++.at (Variants): Check it. |
| |
| 2015-01-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: tests: simplify the handling of some C++ tests |
| * tests/c++.at: here. |
| (Doxygen): Pass %define, so that files such as position.hh etc. |
| are generated, instead of putting everything into input.hh. |
| |
| 2015-01-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: symbols can be empty, so use it |
| The previous patches ensure that symbols (symbol_type and |
| stack_symbol_type) can be empty, cleared, and their emptiness can be |
| checked. Therefore, yyempty, which codes whether yyla is empty or |
| not, is now useless. |
| |
| In C skeletons (e.g., yacc.c), the fact that the lookahead is empty is |
| coded by "yychar = YYEMPTY", which is exactly what this patch |
| restores, since yychar/yytoken corresponds to yyla.type. |
| |
| * data/lalr1.cc (yyempty): Remove. |
| Rather, depend on yyla.empty (). |
| |
| 2015-01-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: variants: don't leak the lookahead in error recovery |
| During error recovery, when discarding the lookeahead, we don't |
| destroy it, which is caught by parse.assert assertions. |
| |
| Reported by Antonio Silva Correia. |
| With an analysis and suggested patch from Michel d'Hooge. |
| <http://savannah.gnu.org/support/?108481> |
| |
| * tests/c++.at (Variants): Strengthen the test to try syntax errors |
| with discarded lookahead. |
| |
| 2015-01-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: provide a means to clear symbols |
| The symbol destructor is currently the only means to clear a symbol. |
| Unfortunately during error recovery we might have to clear the |
| lookahead, which is a local variable (yyla) that has not yet reached |
| its end of scope. |
| |
| Rather that duplicating the code to destroy a symbol, or rather than |
| destroying and recreating yyla, let's provide a means to clear a |
| symbol. |
| |
| Reported by Antonio Silva Correia, with an analysis from Michel d'Hooge. |
| <http://savannah.gnu.org/support/?108481> |
| |
| * data/c++.m4, data/lalr1.cc (basis_symbol::clear, by_state::clear) |
| (by_type::clear): New. |
| (basic_symbol::~basic_symbol): Use clear. |
| |
| 2015-01-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: clean up the handling of empty symbols |
| * data/c++.m4, data/lalr1.cc (yyempty_): Remove, replaced by... |
| (empty_symbol, by_state::empty_state): these. |
| (basic_symbol::empty): New. |
| |
| 2015-01-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: comment and style changes |
| * data/c++.m4, data/lalr1.cc: More documentation. |
| Tidy. |
| * tests/c++.at (string_cast): Rename as... |
| (to_string): this C++11 name. |
| |
| 2015-01-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: variants: comparing addresses of typeid.name() is undefined |
| Instead of storing and comparing pointers to names of types, store |
| pointers to the typeids, and compares the typeids. |
| Reported by Thomas Jahns. |
| <http://lists.gnu.org/archive/html/bug-bison/2014-03/msg00001.html> |
| |
| * data/variant.hh (yytname_): Replace with... |
| (yytypeid_): this. |
| |
| 2015-01-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: locations: complete the API and fix comments |
| There are no support for += between locations, and some comments are wrong. |
| Reported by Alexandre Duret-Lutz. |
| |
| * data/location.cc: Fix. |
| * doc/bison.texi: Document. |
| * tests/c++.at: Check. |
| |
| 2015-01-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: do not clean figure sources in make clean |
| "make clean && make" fails in in-tree builds. |
| |
| * doc/local.mk (CLEANDIRS): Replace with... |
| (CLEANFILES): this safer list of files to clean. |
| |
| 2015-01-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| build: don't try to generate docs when cross-compiling |
| package: fix a reporter's name |
| %union: fix the support for named %union |
| package: bump to 2015 |
| flex: don't trust YY_USER_INIT |
| yacc.c: fix broken union when api.value.type=union and %defines are used |
| doc: fix missing xref |
| gnulib: update |
| location: remove some ugly debugging code traces |
| build: use abort to pacify compiler errors |
| package: bump to 2014 |
| doc: specify documentation encoding |
| |
| 2015-01-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: don't try to generate docs when cross-compiling |
| When cross-compiling don't run the generated bison to update the docs. |
| Reported by Aaro Koskinen. |
| <http://lists.gnu.org/archive/html/bison-patches/2014-03/msg00000.html> |
| |
| * configure.ac (CROSS_COMPILING): New. |
| * doc/local.mk: Use it. |
| |
| 2015-01-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| package: fix a reporter's name |
| * THANKS, build-aux/git-log-fix: s/Bernd Edligner/Bernd Edlinger/. |
| |
| 2015-01-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| %union: fix the support for named %union |
| Bison supports a union tag, for obscure reasons. But it does a poor |
| job at it, especially since Bison 3.0. |
| Reported by Stephen Cameron and Tobias Frost. |
| |
| It did not ensure that the name was not given several times. An easy |
| way to do this is to make the %union tag be handled as a %define |
| variable, as they cannot be defined several times. |
| |
| Since Bison 3.0, the synclines were wrongly placed, resulting in |
| invalid code. Addressing this issue, because of the way the union tag |
| was stored (as a code muscle), would have been tedious. Unless we |
| rather define the %union tag as a %percent variable, whose synclines |
| are easier to manipulate. |
| |
| So replace the b4_union_name muscle by the api.value.union.name |
| %define variable, document, and check. |
| |
| * data/bison.m4: Make sure that api.value.union.name has a keyword value. |
| * data/c++.m4: Make sure that api.value.union.name is not defined. |
| * data/c.m4 (b4_union_name): No longer use it, use api.value.union.name. |
| * doc/bison.texi (%define Summary): Document it. |
| * src/parse-gram.y (union_name): No longer define b4_uion_name, but |
| api.value.union.name. |
| * tests/input.at (Redefined %union name): New. |
| * tests/synclines.at (%union name syncline): New. |
| * tests/types.at: Check named %unions. |
| |
| 2015-01-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| package: bump to 2015 |
| Which also requires: |
| |
| * gnulib: Update. |
| |
| 2014-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| flex: don't trust YY_USER_INIT |
| Reported by Bernd Edlinger and others. |
| |
| * src/scan-gram.l: here. |
| |
| 2014-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: fix broken union when api.value.type=union and %defines are used |
| Reported by Rich Wilson. |
| |
| * data/c.m4 (b4_symbol_type_register): Append to b4_union_members, |
| not b4_user_union_members. |
| The latter invokes the former, but it is the former which is reinitialized |
| to empty by b4_value_type_setup_union. |
| * tests/types.at: Check it. |
| |
| This reveals another bug, this time in the case of glr.c parsers. |
| |
| * data/glr.c: Generate the header file before the implementation file, |
| to be sure that the setup is run before what depends on it. |
| |
| 2014-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix missing xref |
| Reported by xolodho. |
| |
| * doc/bison.texi (Printer Decl): here. |
| |
| 2014-12-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2014-02-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| location: remove some ugly debugging code traces |
| * data/location.cc: here. |
| |
| 2014-02-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: use abort to pacify compiler errors |
| clang, with -DNDEBUG and -Werror fails on some functions that might |
| lack a return. This is because aver is just another assert, discarded |
| with -DNDEBUG. So use abort. |
| |
| * src/muscle-tab.c, src/scan-skel.l: here. |
| |
| 2014-02-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| package: bump to 2014 |
| * AUTHORS, ChangeLog-2012, Makefile.am, NEWS, PACKAGING, README, |
| * README-alpha, README-hacking, THANKS, TODO, bootstrap.conf, |
| * build-aux/darwin11.4.0.valgrind, build-aux/local.mk, |
| * build-aux/update-b4-copyright, |
| * build-aux/update-package-copyright-year, cfg.mk, configure.ac, |
| * data/README, data/bison.m4, data/c++-skel.m4, data/c++.m4, |
| * data/c-like.m4, data/c-skel.m4, data/c.m4, data/glr.c, data/glr.cc, |
| * data/java-skel.m4, data/java.m4, data/lalr1.cc, data/lalr1.java, |
| * data/local.mk, data/location.cc, data/stack.hh, data/variant.hh, |
| * data/xslt/bison.xsl, data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl, |
| * data/xslt/xml2xhtml.xsl, data/yacc.c, djgpp/Makefile.maint, |
| * djgpp/README.in, djgpp/config.bat, djgpp/config.sed, |
| * djgpp/config.site, djgpp/config_h.sed, djgpp/djunpack.bat, |
| * djgpp/local.mk, djgpp/subpipe.c, djgpp/subpipe.h, |
| * djgpp/testsuite.sed, doc/bison.texi, doc/local.mk, doc/refcard.tex, |
| * etc/README, etc/bench.pl.in, etc/local.mk, |
| * examples/calc++/calc++.test, examples/calc++/local.mk, |
| * examples/extexi, examples/local.mk, examples/mfcalc/local.mk, |
| * examples/mfcalc/mfcalc.test, examples/rpcalc/local.mk, |
| * examples/rpcalc/rpcalc.test, examples/test, examples/variant.yy, |
| * lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c, |
| * lib/bitset.h, lib/bitset_stats.c, lib/bitset_stats.h, |
| * lib/bitsetv-print.c, lib/bitsetv-print.h, lib/bitsetv.c, |
| * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/get-errno.c, |
| * lib/get-errno.h, lib/lbitset.c, lib/lbitset.h, lib/libiberty.h, |
| * lib/local.mk, lib/main.c, lib/timevar.c, lib/timevar.def, |
| * lib/timevar.h, lib/vbitset.c, lib/vbitset.h, lib/yyerror.c, |
| * m4/bison-i18n.m4, m4/c-working.m4, m4/cxx.m4, m4/flex.m4, |
| * m4/timevar.m4, src/AnnotationList.c, src/AnnotationList.h, |
| * src/InadequacyList.c, src/InadequacyList.h, src/LR0.c, src/LR0.h, |
| * src/Sbitset.c, src/Sbitset.h, src/assoc.c, src/assoc.h, |
| * src/closure.c, src/closure.h, src/complain.c, src/complain.h, |
| * src/conflicts.c, src/conflicts.h, src/derives.c, src/derives.h, |
| * src/files.c, src/files.h, src/flex-scanner.h, src/getargs.c, |
| * src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c, |
| * src/graphviz.h, src/ielr.c, src/ielr.h, src/lalr.c, src/lalr.h, |
| * src/local.mk, src/location.c, src/location.h, src/main.c, |
| * src/muscle-tab.c, src/muscle-tab.h, src/named-ref.c, |
| * src/named-ref.h, src/nullable.c, src/nullable.h, src/output.c, |
| * src/output.h, src/parse-gram.c, src/parse-gram.y, src/print-xml.c, |
| * src/print-xml.h, src/print.c, src/print.h, src/print_graph.c, |
| * src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c, |
| * src/reduce.h, src/relation.c, src/relation.h, src/scan-code.h, |
| * src/scan-code.l, src/scan-gram.h, src/scan-gram.l, src/scan-skel.h, |
| * src/scan-skel.l, src/state.c, src/state.h, src/symlist.c, |
| * src/symlist.h, src/symtab.c, src/symtab.h, src/system.h, |
| * src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h, |
| * tests/actions.at, tests/atlocal.in, tests/bison.in, tests/c++.at, |
| * tests/calc.at, tests/conflicts.at, tests/cxx-type.at, |
| * tests/existing.at, tests/glr-regression.at, tests/headers.at, |
| * tests/input.at, tests/java.at, tests/javapush.at, tests/local.at, |
| * tests/local.mk, tests/named-refs.at, tests/output.at, tests/push.at, |
| * tests/reduce.at, tests/regression.at, tests/sets.at, |
| * tests/skeletons.at, tests/synclines.at, tests/testsuite.at, |
| * tests/torture.at, tests/types.at: |
| here. |
| |
| 2014-01-03 Paul Eggert <eggert@cs.ucla.edu> |
| |
| doc: specify documentation encoding |
| * doc/bison.texi: Add '@documentencoding UTF-8'; needed since the |
| manual contains UTF-8 characters. This will cause the .info files |
| to contain UTF-8 quotes and the like, which should be OK nowadays. |
| Add @documentlanguage while we're at it. |
| |
| 2013-12-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| symbols: properly fuse the properties of two symbol aliases |
| This completes and fixes a7280757105b2909f6a58fdd1c582de8e278319a. |
| Reported by Valentin Tolmer. |
| |
| Before it Bison used to put the properties of the symbols |
| (associativity, printer, etc.) in the 'symbol' structure. An |
| identifier-named token (FOO) and its string-named alias ("foo") |
| duplicated these properties, and symbol_check_alias_consistency() |
| checked that both had compatible properties and fused them, at the end |
| of the parsing of the grammar. |
| |
| The commit a7280757105b2909f6a58fdd1c582de8e278319a introduces a |
| sym_content structure that keeps all these properties, and ensures |
| that both aliases point to the same sym_content (instead of |
| duplicating). However, it removed symbol_check_alias_consistency, |
| which resulted in the non-fusion of *existing* properties: |
| |
| %token FOO "foo" |
| %left FOO %left "foo" |
| |
| was properly diagnosed as a redeclaration, but |
| |
| %left FOO %left "foo" |
| %token FOO "foo" |
| |
| was not, as the properties of FOO and "foo" were not checked before |
| fusion. It certainly also means that |
| |
| %left "foo" |
| %token FOO "foo" |
| |
| did not transfer properly the associativity to FOO. |
| |
| The fix is simple: reintroduce symbol_check_alias_consistency (under a |
| better name, symbol_merge_properties) and call it where appropriate. |
| |
| Also, that commit made USER_NUMBER_HAS_STRING_ALIAS useless, but left |
| it. |
| |
| * src/symtab.h (USER_NUMBER_HAS_STRING_ALIAS): Remove, unused. |
| Adjust dependencies. |
| * src/symtab.c (symbol_merge_properties): New, based on the former |
| symbol_check_alias_consistency. |
| * tests/input.at: Re-enable tests that we now pass. |
| |
| 2013-12-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| package: install the examples |
| package: install README and the like in docdir |
| diagnostics: fix the order of multiple declarations reports |
| symbol: provide an easy means to compare them in source order |
| |
| 2013-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| package: install the examples |
| Currently, we do not install the various examples extracted from the |
| documentation. Let's do it, as they are useful starting points. |
| |
| * configure.ac: When --enable-gcc-warnings is set, enable ENABLE_GCC_WARNINGS. |
| * examples/extexi: No longer issue synclines by default. |
| * examples/local.mk: Except if ENABLE_GCC_WARNINGS. |
| * examples/calc++/local.mk, examples/mfcalc/local.mk, |
| * examples/rpcalc/local.mk: Install the example files. |
| |
| 2013-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| package: install README and the like in docdir |
| * Makefile.am: here. |
| |
| 2013-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: fix the order of multiple declarations reports |
| On |
| |
| %token FOO "foo" |
| %printer {} "foo" |
| %printer {} FOO |
| |
| we report |
| |
| /tmp/foo.yy:2.10-11: error: %printer redeclaration for FOO |
| %printer {} "foo" |
| ^^ |
| /tmp/foo.yy:3.10-11: previous declaration |
| %printer {} FOO |
| ^^ |
| |
| * src/symtab.c (locations_sort): New. |
| Use it. |
| * tests/input.at (Invalid Aliases): Stress the order of diagnostics. |
| |
| 2013-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| symbol: provide an easy means to compare them in source order |
| * src/symtab.c (symbols_sort): New. |
| (user_token_number_redeclaration): Taken from here. |
| |
| 2013-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: (43 commits) |
| maint: post-release administrivia |
| version 3.0.2 |
| gnulib: update |
| output: do not generate source files when late errors are caught |
| output: record what generated files are source or report files |
| output: do not generate source files when early errors are caught |
| xml: also use "%empty" with html output |
| style: formatting changes |
| xml: also display %empty for empty right-hand sides |
| reports: display %empty in the generated pointed-rules |
| news: YYERROR vs variants |
| style: scope reduction in lalr.cc |
| lalr1.cc: formatting changes |
| lalr1.cc: fix the support of YYERROR with variants |
| tests: check $$'s destruction with variant, YYERROR, and no error recovery |
| tests: simplify useless obfuscation |
| skeletons: use better names when computing a "goto" |
| maint: post-release administrivia |
| version 3.0.1 |
| aver: it is no longer "protected against NDEBUG" |
| ... |
| |
| 2013-12-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2013-12-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 3.0.2 |
| * NEWS: Record release date. |
| |
| 2013-12-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| * gnulib: here. |
| |
| 2013-12-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| output: do not generate source files when late errors are caught |
| Reported by Alexandre Duret-Lutz as "second problem" in: |
| http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html |
| |
| * bootstrap.conf: We need the "unlink" module. |
| * src/files.h, src/files.c (unlink_generated_sources): New. |
| * src/output.c: Use it. |
| * tests/output.at: Check the case of late errors. |
| |
| 2013-12-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| output: record what generated files are source or report files |
| * src/files.h, src/files.c (output_file_name_check): Take an additional |
| argument to record whether a file is a source or report file. |
| * src/files.c (generated_file): New. |
| (file_names, file_names_count): Replace with... |
| (generated_files, generated_files_size): these. |
| * src/scan-skel.l: Adjust. |
| |
| 2013-12-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| output: do not generate source files when early errors are caught |
| Reported by Alexandre Duret-Lutz as "second problem" in: |
| http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html |
| |
| One problem is that some errors are caught early, before the |
| generation of output files, while others can only be detected |
| afterwards (since, for instance, skeletons can raise errors |
| themselves). |
| |
| This will be addressed in two steps: early errors do not generate |
| source files at all, while later errors will remove the files that |
| have already been generated. |
| |
| * src/scan-skel.l (yyout): Open to /dev/null when there are errors. |
| * tests/output.at (AT_CHECK_FILES): Factored out of... |
| (AT_CHECK_OUTPUT): this. |
| Fuse the "SHELLIO" argument in the "FLAGS" one. |
| Use $5 to denote the expected exit status. |
| Add a test case for early errors. |
| |
| 2013-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| xml: also use "%empty" with html output |
| * data/xslt/xml2xhtml.xsl: No longer issue an Epsilon, display as in |
| dot and text formats. |
| |
| 2013-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: formatting changes |
| * src/print-xml.c: here. |
| |
| 2013-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| xml: also display %empty for empty right-hand sides |
| * data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl: Display %empty where needed. |
| |
| 2013-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| reports: display %empty in the generated pointed-rules |
| * src/print.c (print_core): Use %empty for empty rules. |
| * src/print_graph.c (print_core): Ditto. |
| * tests/conflicts.at, tests/output.at, tests/reduce.at: Adjust |
| expectations. |
| |
| 2013-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: YYERROR vs variants |
| |
| 2013-11-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: scope reduction in lalr.cc |
| * src/lalr.c: Shorten variable scopes. |
| (lookahead_tokens_print): Use the same variable name in two loops |
| iterating over the same structure. |
| |
| 2013-11-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: formatting changes |
| * data/lalr1.cc: Fix indentation. |
| |
| 2013-11-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: fix the support of YYERROR with variants |
| When variant are enabled, the yylhs variable (the left-hand side of |
| the rule being reduced, i.e. $$ and @$) is explicitly destroyed when |
| YYERROR is called. This is because before running the user code, $$ |
| is initialized, so that the user can properly use it. |
| |
| However, when quitting yyparse, yylhs is also reclaimed by the C++ |
| compiler: the variable goes out of scope. |
| |
| Instead of trying to be too smart, let the compiler do its job: reduce |
| the scope of yylhs to exactly the reduction. This way, whatever the |
| type of scope exit (regular, exception, return, goto...) this variable |
| will be properly reclaimed. |
| |
| Reported by Paolo Simone Gasparello. |
| <http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00003.html> |
| |
| * data/lalr1.cc (yyparse): Reduce the scope of yylhs. |
| * tests/c++.at: We now pass this test. |
| |
| 2013-11-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check $$'s destruction with variant, YYERROR, and no error recovery |
| When variant are enabled, the yylhs variable (the left-hand side of |
| the rule being reduced, i.e. $$ and @$) is explicitly destroyed when |
| YYERROR is called. This is because before running the user code, $$ |
| is initialized, so that the user can properly use it. |
| |
| However, when quitting yyparse, yylhs is also reclaimed by the C++ |
| compiler: the variable goes out of scope. |
| |
| This was not detected by the test suite because (i) the Object tracker |
| was too weak, and (ii) the problem does not show when there is error |
| recovery. |
| |
| Reported by Paolo Simone Gasparello. |
| <http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00003.html> |
| |
| * tests/c++.at (Exception safety): Improve the objects logger to make |
| sure that we never destroy twice an object. |
| Also track copy-constructors. |
| Use a set instead of a list. |
| Display the logs before running the function body, this is more |
| useful in case of failure. |
| Generalize to track with and without error recovery. |
| |
| 2013-11-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: simplify useless obfuscation |
| * tests/c++.at: $$ is not special for M4, there is no need to "escape" |
| it. |
| |
| 2013-11-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: use better names when computing a "goto" |
| * data/glr.c (yyLRgotoState): Name the symbol argument yysym, instead |
| of yylhs. |
| * data/lalr1.cc (yy_lr_goto_state_): Likewise. |
| * data/lalr1.java (yy_lr_goto_state_): New, modeled after the previous |
| two routines. |
| Use it. |
| |
| 2013-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2013-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 3.0.1 |
| * NEWS: Record release date. |
| |
| 2013-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| aver: it is no longer "protected against NDEBUG" |
| Apply the same rules for aver as for assert: no side effects, |
| especially not important ones. |
| |
| * src/AnnotationList.c, src/muscle-tab.c: Adjust aver uses to resist |
| to -DNDEBUG. |
| |
| 2013-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| parsers: rename YY_NULL as YY_NULLPTR to avoid conflicts with Flex |
| Flex also defines YY_NULL (to 0). Avoid gratuitous conflicts. |
| |
| * data/c.m4 (b4_null_define): Rename YY_NULL as YY_NULLPTR. |
| |
| * data/glr.c, data/lalr1.cc, data/location.cc, data/variant.hh, |
| * data/yacc.c, src/parse-gram.c, tests/actions.at, tests/c++.at, |
| * tests/cxx-type.at, tests/glr-regression.at, tests/headers.at, |
| * tests/push.at, tests/regression.at: |
| Adjust. |
| |
| 2013-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: use Automake 1.14's non-recursive Makefile features |
| * configure.ac: Require Automake 1.14. |
| * examples/calc++/local.mk, examples/local.mk, examples/mfcalc/local.mk, |
| * examples/rpcalc/local.mk, tests/local.mk: Use %D% and %C%. |
| |
| 2013-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: restore maintainer-push-check |
| * tests/local.mk: here. |
| |
| 2013-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: use __attribute__((__pure__)) to avoid warnings |
| Building C++ parsers with -Wsuggest-attribute=const and |
| -Wsuggest-attribute=noreturn triggers warning in generated code. |
| |
| * data/lalr1.cc: Call b4_attribute_define. |
| (debug_stream, debug_level): Flag as pure. |
| * tests/headers.at (Several parsers): There are now more YY macros |
| that "leak". |
| |
| 2013-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: update the handling of compiler attributes |
| * data/c.m4 (b4_attribute_define): Instead of defining __attribute__, |
| define YY_ATTRIBUTE conditionally. |
| (YY_ATTRIBUTE_PURE, YY_ATTRIBUTE_UNUSED, _Noreturn): New. |
| Use them. |
| * data/glr.c: Use them. |
| |
| 2013-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2013-10-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: use /* ... */ comments |
| * src/complain.c: Here. |
| |
| 2013-10-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: skip C++ tests that are too demanding for some compilers |
| Some tests now fail when compiled with G++ 4.3 or 4.4 on MacPorts. |
| |
| * tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): New. |
| * tests/c++.at (Exception safety): Use it. |
| |
| 2013-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| install: do not install yacc.1 when --disable-yacc |
| * configure.ac (ENABLE_YACC): New conditional. |
| (YACC_SCRIPT, YACC_LIBRARY): Remove. |
| * lib/local.mk, src/local.mk: Use the former instead of the latter. |
| * doc/local.mk: Use ENABLE_YACC to avoid installing yacc.1. |
| |
| 2013-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: avoid tabs |
| * src/scan-code.l: here. |
| |
| 2013-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: fix generated doxygen comments |
| * configure.ac: Enable -Wdocumentation if supported. |
| * data/lalr1.cc: Fix comments. |
| |
| 2013-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix: uniqstr are already pointers |
| * src/uniqstr.c (uniqstr_assert): Remove incorrect double indirection, |
| and now useless cast. |
| |
| 2013-10-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| bison: pacify Sun C 5.12 |
| * src/scan-code.l (show_sub_message): |
| Redo initializations to work around a bogus Sun C 5.12 warning. |
| (parse_ref): Remove unreachable code that Sun C 5.12 complains about. |
| * src/uniqstr.h (uniqstr_vsprintf): Use |
| _GL_ATTRIBUTE_FORMAT_PRINTF (...) instead of __attribute__ |
| ((__format__ (__printf__, ...))). Otherwise, Sun C 5.12 |
| complains about an unknown attribute. |
| |
| 2013-10-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| maint: git now ignores rpcalc |
| * examples/rpcalc/.gitignore: Ignore rpcalc. |
| |
| 2013-10-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| build: examples/calc++/calc++ requires flex |
| * configure.ac (FLEX_CXX_WORKS): New AM_CONDITIONAL. |
| * examples/calc++/local.mk (examples/calc++/calc++): |
| Build if FLEX_CXX_WORKS, not BISON_CXX_WORKS. |
| |
| 2013-10-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| maint: mention help2man, texinfo, apt-get |
| * README-hacking: Add help2man, texinfo. |
| Describe how to add packages if you're using Debian. |
| |
| 2013-10-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| maint: git now ignores .log and .trs files |
| * .gitignore: Add *.log, *.trs. |
| |
| 2013-10-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix incorrect object construction |
| Reported by Ken Moffat. |
| http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00009.html |
| |
| * tests/c++.at (Exception safety): Here. |
| |
| 2013-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: allow spaces between "%?" and "{" in predicates |
| Reported by Rici Lake. |
| http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00004.html |
| http://stackoverflow.com/questions/19330171/ |
| |
| * src/scan-gram.l: Do not try to be too smart when diagnosing invalid |
| directives. |
| * tests/glr-regression.at (Predicates): New test. |
| |
| 2013-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: "-Werror -Wno-error=foo" must not emit errors |
| Currently "-Werror -Wno-error=foo" still turns "foo" warnings into errors. |
| Reported by Alexandre Duret-Lutz. |
| See http://lists.gnu.org/archive/html/bug-bison/2013-09/msg00015.html. |
| |
| * src/complain.c (errority, errority_flag): New. |
| (complain_init): Initialize the latter. |
| (warning_argmatch): Extract the loop iterating on the flag's bits. |
| Set and unset errority_flag here. |
| (warnings_argmatch): -Wno-error is not the same as -Wno-error=everything: |
| we must remember if category foo was explicitly turned in an error/warning |
| via -W(no-)error=foo. |
| (warning_severity): Use errority_flag. |
| |
| * tests/input.at (Symbols): Just check --yacc, not -Wyacc, that's the |
| job of tests on -W. |
| (-Werror is not affected by -Wnone and -Wall): Rename as... |
| (-Werror combinations): this. |
| Tests more combinations of -W, -W(no-)error, and -W(no-)error=foo. |
| * tests/local.at (AT_BISON_CHECK_WARNINGS): Don't expect -Werror |
| to turn runs that issue warnings into runs with errors, as the |
| warnings might be enforced as warnings by -Wno-error=foo, in which |
| case -Werror does not change anything. |
| |
| * doc/bison.texi (Bison Options): Try to be clearer about how |
| -W(no-)error and -W(no-)error=foo interact. |
| |
| 2013-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| comment changes |
| * src/complain.h, src/complain.c: More documentation, more comments. |
| |
| 2013-10-04 Andreas Schwab <schwab@linux-m68k.org> |
| |
| location: fix EOF check |
| * location.c (location_caret): Use int, not char, for values from |
| getc. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: variant: remove empty line |
| * data/variant.hh (b4_symbol_constructor_define_): Remove |
| stray eol. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| glr: more assertions |
| glr: shorten scopes |
| glr: formatting changes |
| glr: better use of tracing macros |
| examples: improve the output of the "variant" example |
| variant: remove useless assertion |
| tests: remove stray debugging traces |
| tests: do not use grep -q |
| build: don't require flex for ordinary builds |
| maint: update .gitignore |
| build: port to pre-5.8.7 perl |
| tests: minor change to make it easier to test other skeletons |
| uniqstr: fix assertion |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: simplify the invocation of YYLLOC_DEFAULT |
| The commit which introduces yyresolveLocations (commit |
| 8710fc41aaebc5d167a2783a4b8b60849a803869) saves and restores the |
| look-ahead (type, value and location) for no clear reason. This |
| appears to be useless. |
| |
| * data/glr.c (yyresolveLocations): Don't save/restore the current |
| look-ahead to call YYLLOC_DEFAULT. |
| Minor style changes. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: more assertions |
| * data/glr.c (yyaddDeferredAction, yyglrShiftDefer, yypdumpstack): |
| More assertions. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: shorten scopes |
| * data/glr.c (yyglrReduce): Define yyflag with its value. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: formatting changes |
| * data/glr.c: here. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: better use of tracing macros |
| * data/glr.c (yydestroyGLRState): Use YY_SYMBOL_PRINT instead of |
| yy_symbol_print. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| examples: improve the output of the "variant" example |
| * examples/variant.yy: Improve the printing of lists. |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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"). |
| |
| 2013-09-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove stray debugging traces |
| * tests/atlocal.in: Remove traces. |
| Be ready to remove conftest.dSYM generated on OS X. |
| |
| 2013-09-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-08-25 Paul Eggert <eggert@cs.ucla.edu> |
| |
| 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>. |
| |
| 2013-08-25 Paul Eggert <eggert@cs.ucla.edu> |
| |
| maint: update .gitignore |
| * .gitignore: Add *.eps, *.o, *.pdf, *.png, *.stamp, *~, |
| .deps, .dirstamp. Needed to suppress unwanted chatter from |
| 'git status' after a bootstrap build. |
| |
| 2013-08-24 Paul Eggert <eggert@cs.ucla.edu> |
| |
| 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>. |
| |
| 2013-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: minor change to make it easier to test other skeletons |
| * tests/c++.at (Variants): Pass the skeleton as argument. |
| |
| 2013-08-01 Valentin Tolmer <valentin.tolmer@gmail.com> |
| |
| 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. |
| |
| 2013-08-01 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| symbols: improve symbol aliasing |
| Rather than having duplicate info in the symbol and the alias that has |
| to be resolved later on, both the symbol and the alias have a common |
| pointer to a separate structure containing this info. |
| |
| * src/symtab.h (sym_content): New structure. |
| * src/symtab.c (sym_content_new, sym_content_free, symbol_free): New |
| |
| * src/AnnotationList.c, src/conflicts.c, src/gram.c, src/gram.h, |
| * src/graphviz.c, src/ielr.c, src/output.c, src/parse-gram.y, src/print.c |
| * src/print-xml.c, src/print_graph.c, src/reader.c, src/reduce.c, |
| * src/state.h, src/symlist.c, src/symtab.c, src/symtab.h, src/tables.c: |
| Adjust. |
| |
| * tests/input.at: Fix expectations (order changes). |
| |
| 2013-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 3.0 |
| * NEWS: Record release date. |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: prepare 3.0 |
| * NEWS (3.0): Reorder. |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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". |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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);". |
| |
| 2013-07-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2013-07-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-07-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-06-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2013-06-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.7.91 |
| * NEWS: Record release date. |
| |
| 2013-06-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: prepare for 2.7.91 |
| * NEWS (2.7.91): Java push parsers. |
| |
| 2013-06-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-06-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: add Valgrind suppression file for GNU/Linux |
| * build-aux/linux-gnu.valgrind: New. |
| * build-aux/local.mk: Ship it. |
| * configure.ac: Use it. |
| |
| 2013-06-13 Dennis Heimbigner <dmh@unidata.ucar.edu> |
| |
| 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. |
| |
| 2013-06-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-06-05 Dennis Heimbigner <dmh@unidata.ucar.edu> |
| |
| style: comment changes in Java skeleton |
| * data/lalr1.java: Here. |
| |
| 2013-06-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix a G++ warning |
| * tests/c++.at: Use YY_NULL instead of 0 for the null pointer. |
| And formatting changes. |
| |
| 2013-06-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix a warning from clang |
| * src/muscle-tab.c: Declare local functions static. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.7.90 |
| * NEWS: Record release date. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| xml: use %empty in the text output |
| * data/xslt/xml2text.xsl: here. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: locally disable new GCC warnings that fail on Flex generated code |
| * configure.ac: here. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix a memory leak |
| * src/print-xml.c (num_escape_bufs): New. |
| (print_xml): Be sure to release all the escape_bufs. |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-05-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-05-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: post-release administrivia |
| version 2.7.1 |
| regen |
| |
| 2013-05-29 Petr Machata <pmachata@redhat.com> |
| |
| 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. |
| |
| 2013-05-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2013-04-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: factor test for printer/desctructor redefined |
| * tests/input.at (Default %printer and %destructor redeclared): |
| Introduce AT_TEST to factor. |
| |
| 2013-04-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: factor duplicate expected warnings |
| * tests/existing.at: Instead of "t ? abc : aBc", write "a(t?b:B)c". |
| |
| 2013-04-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: avoid %{...%} in our parser |
| * src/parse-gram.y (%{...%}): Split in %code and %code requires. |
| * src/location.h: Add missing includes for self containedness. |
| |
| 2013-04-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.7.1 |
| * NEWS: Record release date. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscle: minor refactoring |
| * src/muscle-tab.c (muscle_percent_define_default): Reduce the scopes. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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 *". |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscle: factor conditionals on defined %define variables |
| * data/bison.m4 (b4_percent_define_ifdef_): New. |
| Use it where appropriate. |
| |
| 2013-04-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: fix comments |
| * tests/actions.at: Fix incorrect "prototype". |
| |
| 2013-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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 |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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 |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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'. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: style changes |
| * doc/bison.texi (Destructor Decl, Printer Decl): Group series of %token |
| and %type together. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: display locations in error as recommended by GNU Coding Standards |
| * doc/bison.texi (Actions and Locations): here. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: api.value.type union |
| * doc/bison.texi (Type Generation): New section. |
| (Multi-function Calc): Convert to use api.value.type=union. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: move the section about "%union" where types are discussed |
| * doc/bison.texi (Union Decl): Move to... |
| (Defining Language Semantics): here. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| m4: allow the definition of side-effect only macros |
| * data/bison.m4 (b4_divert_kill, b4_define_silent): New. |
| * data/c.m4: Comment change. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| variant: fix inconsistent quotation |
| * data/variant.hh (b4_char_sizeof): De-overquote. |
| (b4_value_type_declare): De-underquote. |
| |
| 2013-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| m4: style changes in error messages |
| * data/bison.m4: Use $0 to denote the current macro's name. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update copyright years |
| Run "make update-copyright". |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix VPATH issue |
| * Makefile.am (update-b4-copyright, update-package-copyright-year): Fix |
| path to build-aux. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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++. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| grammar: record the kind of %define variable values |
| Provide a means to tell the difference between "keyword" values (e.g., |
| %define api.pull both), "string" values (e.g., %define file.name |
| "foo"), and "code" values (e.g., %define api.namespace {calc}). |
| |
| Suggested by Joel E. Denny. |
| http://lists.gnu.org/archive/html/bison-patches/2013-03/msg00016.html |
| |
| * src/muscle-tab.h, src/muscle-tab.c (muscle_kind, muscle_kind_new) |
| (muscle_kind_string): New. |
| (muscle_percent_define_insert): Take the kind as new argument. |
| Insert it in the muscle table. |
| Adjust callers. |
| * src/getargs.c: Adjust callers. |
| * src/parse-gram.y: Ditto. |
| (content.opt): Remove, replaced by... |
| (value): this new non-terminal, whose semantics value is stored |
| in the new "value" union member. |
| Provide a printer. |
| Support values in braces in additions to keyword and string values. |
| |
| fuse me |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: fix comments |
| * src/muscle-tab.c (muscle_percent_define_ensure): Update obsolete |
| comments. |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| grammar: style changes |
| * src/parse-gram.y (PARAM_TYPE): Remove useless typedef guard. |
| There's a header guard. |
| Use 'yyo' with %printer. |
| Use a consistent style for %union one-liners. |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| grammar: split %union to group together related aspects |
| * src/parse-gram.y (INT): Fuse the %type and %token declaration. |
| Move its %union right before its introduction. |
| (%union): Split in several %unions, right before their use. |
| |
| 2013-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscle: refactor |
| * src/muscle-tab.c (muscle_lookup, muscle_entry_new): New. |
| (muscle_insert, muscle_grow, muscle_find_const, muscle_find): Use them. |
| |
| 2013-04-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: comment changes |
| * src/muscle-tab.c: Move the documentation of public functions to... |
| * src/muscle-tab.h: here. |
| Fix comment consistency issues. |
| |
| 2013-04-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscle: minor refactoring |
| * src/muscle-tab.h (MUSCLE_INSERT_C_STRING): Use MUSCLE_INSERT_STRING. |
| |
| 2013-03-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-03-06 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| gram: correct token numbering in precedence declarations |
| In a precedence declaration, when tokens are declared with a litteral |
| character (e.g., 'a') or with a identifier (e.g., B), Bison behaved |
| differently: the litteral tokens would be numbered first, and then the |
| other ones, leading to the following grammar: |
| |
| %right A B 'c' 'd' |
| |
| being numbered as such: 'c' 'd' A B. |
| |
| * src/parse-gram.y (symbol.prec): Set the symbol number when reading the |
| symbols. |
| * tests/conflicts.at (Token declaration order: literals vs. identifiers): |
| New. |
| |
| 2013-03-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update autoconf submodule |
| * submodules/autoconf: Up to master. |
| No significant changes in the files we use (m4sugar.m4 and foreach.m4). |
| |
| 2013-03-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: no longer include the yacc category in -Wall |
| It would be a pity to warn the users against Bison features... |
| http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00107.html |
| |
| * src/complain.h, src/complain.c (Wall): Disable Wyacc. |
| (Weverything): New (hidden so far) category which really denotes all |
| the categories (what used to be Wall). |
| (warnings_args, warnings_types): Adjust. |
| (warning_argmatch): Now !none = Weverything and conversely, no longer Wall. |
| * NEWS, doc/bison.texi, src/getargs.c: Adjust the documentation. |
| * tests/input.at (-Werror is not affected by -Wnone and -Wall): Adjust |
| by not using a -Wyacc type of warning. |
| |
| 2013-03-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| grammar: no longer detect and cure missing semicolon at end of actions |
| Bison 3.0 is already breaking backward compatibility with other |
| features. It is an appropriate time to drop this feature. Note that |
| it was disabled when --yacc is passed. See |
| http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00102.html |
| |
| Basically, revert e8cd1ad655bcc704b06fb2f191dc3ac1df32b796. |
| |
| * src/scan-code.l (braces_level, need_semicolon, in_cpp): Remove. |
| Remove every rule needed to detect and add missing semicolon. |
| * tests/actions.at (Fix user actions without a trailing semicolon): |
| Remove. |
| * NEWS: Adjust. |
| |
| 2013-03-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: stop using bison -y |
| * Makefile.am (YACC): Pass -o y.tab.c, so that ylwrap is happy, and |
| yet we don't pass --yacc to bison. |
| (AM_YFLAGS): Disable Yacc warnings. |
| |
| 2013-02-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: rename b4_semantic_type_declare as b4_value_type_declare |
| This is to match the names used in C and api.value.type, even if the |
| parser actually defines semantic_type. |
| |
| * data/c++.m4 (b4_semantic_type_declare): Rename as... |
| (b4_value_type_declare): this. |
| * data/variant.hh: Likewise. |
| |
| 2013-02-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: typo |
| * NEWS: here. |
| |
| 2013-02-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: space changes in the tests |
| * tests/local.at: here. |
| |
| 2013-02-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: formatting changes in the doc |
| * doc/bison.texi: Use @file where appropriate. |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix invalid C++11 code |
| * tests/c++.at (Object): Somehow instances of Object were assigned |
| YY_NULL, which is 0 most of the time (that case passes), but is |
| nullptr in C++11, and there is nothing in Object to support such an |
| assignment (failure). Use 0 as value, and provide the needed |
| assignment operator. |
| Also, use a more natural order within the class definition. |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix failures with G++ 4.8 in Flex scanner |
| * configure.ac (WARN_NO_NULL_CONVERSION_CXXFLAGS): Rename as... |
| (FLEX_SCANNER_CXXFLAGS): this. |
| Pass -Wno-zero-as-null-pointer-constant to G++ if it supports it. |
| * examples/calc++/local.mk: Adjust. |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: rename variant private members |
| * data/variant.hh (buffer, tname, as_, raw, align_me): Rename as... |
| (yybuffer_, yytname_,yyas_, yyraw, yyalign_me): these. |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: space changes |
| * data/variant.hh: Be sure to leave a space before arguments in function |
| calls. |
| |
| 2013-02-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| variant: fix G++ 4.4 warnings |
| The changes by Théophile Ranquet about type punning issues need |
| to be extend to in-place new to please G++ 4.4.7. |
| |
| * data/variant.hh (variant::as_): New, factors the casts that avoid |
| compiler warnings. |
| (as, build): Use them. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: spell fixes |
| * NEWS: here. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: factor and enhance messages about duplicate rule directives |
| When reporting a duplicate directive on a rule, point to its first |
| occurrence: |
| |
| one.y:11.10-15: error: only one %empty allowed per rule |
| %empty {} %empty |
| ^^^^^^ |
| one.y:11.3-8: previous declaration |
| %empty {} %empty |
| ^^^^^^ |
| |
| And consistently discard the second one. |
| |
| * src/complain.h, src/complain.c (duplicate_directive): New. |
| * src/reader.c: Use it where appropriate. |
| * src/symlist.h, src/symlist.c (symbol_list): Add a dprec_location member. |
| * tests/actions.at: Adjust expected output. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: no longer use backquotes |
| * tests/actions.at, tests/atlocal.in, tests/c++.at, tests/calc.at, |
| * tests/conflicts.at, tests/existing.at, tests/glr-regression.at, |
| * tests/input.at, tests/java.at, tests/local.at, tests/sets.at, |
| * tests/synclines.at, doc/bison.texi, lib/libiberty.h, lib/timevar.h: |
| Use single quotes. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: no longer use backquotes |
| * README, REFERENCES, TODO, configure.ac, data/README, data/bison.m4, |
| * data/c++.m4, data/c.m4, data/java.m4, data/lalr1.cc, |
| * data/lalr1.java, data/yacc.c, doc/local.mk, etc/bench.pl.in, |
| * src/conflicts.c, src/files.c, src/getargs.c, src/gram.h, src/lalr.c, |
| * src/location.c, src/location.h, src/muscle-tab.c, src/muscle-tab.h, |
| * src/output.c, src/parse-gram.c, src/parse-gram.y, src/print-xml.c, |
| * src/print.c, src/reader.c, src/reduce.c, src/scan-skel.l, |
| * src/symtab.h, src/system.h, src/tables.c: |
| Use single quotes, as currently recommended by the GNU Coding Standards. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: no longer use backquotes in messages |
| * src/getargs.c (usage): Use single quotes. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: use %empty instead of /* empty */ |
| * doc/bison.texi: Change the comments into explicit %empty. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: introduce %empty and -Wempty-rule |
| * doc/bison.texi (Grammar Rules): Make it a @section which |
| contains... |
| (Rules Syntax): this new subsection (with the previous contents of |
| "Grammar Rules". |
| (Empty Rules): New subsection, extracted from the former |
| "Grammar Rules". |
| Document %empty. |
| (Recursion): New a subsection of "Grammar Rules". |
| Complete a few index entries. |
| (Bison Options): Document -Wempty-rule. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| report: use %empty to denote empty rules |
| * src/gram.c (rule_rhs_print): Use %empty for empty rules. |
| * tests/conflicts.at, tests/regression.at, tests/sets.at: Adjust. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: %empty enables -Wempty-rule |
| * src/complain.h, src/complain.c (warning_is_unset): New. |
| * src/reader.c (grammar_current_rule_empty_set): If enabled -Wempty-rule, |
| if not disabled. |
| * tests/actions.at (Implicitly empty rule): Check this feature. |
| Also check that -Wno-empty-rule does disable this warning. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| -Wempty-rule: diagnose empty rules without %empty |
| * src/complain.h, src/complain.c (warning_empty_rule, Wempty_rule): |
| New warning category. |
| (warnings_args, warnings_types): Adjust. |
| * src/reader.c (grammar_rule_check): Check the empty rules are |
| flagged by %empty. |
| * tests/actions.at (Implicitly empty rule): New. |
| * tests/existing.at: Add expected warnings. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use %empty |
| * tests/actions.at, tests/input.at, tests/reduce.at, |
| * tests/regression.at: |
| here. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: use %empty |
| Avoid that Bison's own use of "bison -Wall" trigger warnings. |
| |
| * src/parse-gram.y: Use %empty for every empty rule. |
| |
| 2013-02-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| grammar: introduce %empty |
| Provide a means to explicitly denote empty right-hand sides of rules: |
| instead of |
| |
| exp: { ... } |
| |
| allow |
| |
| exp: %empty { ... } |
| |
| Make sure that %empty is properly used. |
| |
| With help from Joel E. Denny and Gabriel Rassoul. |
| http://lists.gnu.org/archive/html/bison-patches/2013-01/msg00142.html |
| |
| * src/reader.h, src/reader.c (grammar_current_rule_empty_set): New. |
| * src/parse-gram.y (%empty): New token. |
| Use it. |
| * src/scan-gram.l (%empty): Scan it. |
| * src/reader.c (grammar_rule_check): Check that %empty is properly used. |
| * tests/actions.at (Invalid uses of %empty, Valid uses of %empty): New. |
| |
| 2013-02-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| getargs: minor simplification |
| * src/getargs.c (flag_argmatch): Simplify the handling of "none". |
| |
| 2013-02-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: move argument handling of -W into the diagnostics module |
| This allows to reduce the number of public interfaces. |
| |
| * src/getargs.c (--yacc): Use warning_argmatch instead of tweaking |
| directly warnings_flag (which will be private). |
| (warning_argmatch, warnings_argmatch): Move to... |
| * src/complain.h, src/complain.c: here. |
| |
| * src/getargs.h, src/getargs.c (warnings_args, warnings_types): Move to... |
| * src/complain.c: here, now private. |
| |
| * src/complain.h (severity, warnings_flag): Move to... |
| * src/complain.c: here, now private. |
| |
| 2013-02-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: revamp the handling of -Werror |
| Recent discussions with Joel E. Denny |
| (http://lists.gnu.org/archive/html/bison-patches/2013-02/msg00026.html) |
| show that it is desirable to tell the difference between an option |
| that was explicitly disabled with -Wno-foo, as opposed to be left |
| unset. The current framework does not allow this. |
| |
| Instead of having a first int to store which options are enabled, and |
| another to store which are turned into errors, use an array that for |
| each warning category tells its status: disabled, unset, warning, |
| error. |
| |
| * src/complain.h, src/complain.c (warning_bit): New enum. |
| (warnings): Use it. |
| (severity): New enum. |
| (warnings_flag): Now an array of severity. |
| (errors_flag): Remove, now done by warnings_flag. |
| (complain_init): New function, to initialie warnings_flag. |
| (warnings_are_errors): New Boolean, for -Werror. |
| * src/complain.c (warning_severity): New. |
| (warnings_print_categories, complains): Use it. |
| * src/getargs.c (warning_argmatch): Adjust to use warnings_flag. |
| (warnings_argmatch): Ditto. |
| Handle -Werror and -Wno-error here. |
| (getargs): Adjust. |
| * src/main.c (main): Call complain_init. |
| * tests/input.at (Invalid options): Add more corner cases. |
| |
| 2013-02-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| options: simplify the handling of -W |
| * src/getargs.c (warnings_argmatch, warning_argmatch): Simplify by |
| replacing function arguments with their actual values. |
| (WARNING_ARGMATCH): Remove, useless. |
| Adjust callers. |
| |
| 2013-02-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| options: don't accept "error=" for -f and -r |
| * src/getargs.c (warning_argmatch, warnings_argmatch, WARNINGS_ARGMATCH): |
| New. |
| Use them for -W/--warning. |
| They are copied from... |
| (flag_argmatch, flags_argmatch, FLAGS_ARGMATCH): these. |
| Simplify by removing the support for "error". |
| * tests/input.at (Invalid options): New. |
| * TODO (Laxism in Bison invocation arguments): Remove. |
| |
| 2013-02-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: factor the list of warning names |
| * src/getargs.h, src/getargs.c (warnings_args, warnings_types): Make |
| them public. |
| * src/complain.h, src/complain.c (warnings_print_categories): Its |
| only use outside complain.c was removed in a recent commit, so |
| make it static. |
| Simplify its implementation. |
| Use warnings_args and warnings_types. |
| * src/muscle-tab.c (muscle_percent_define_check_values): Make it |
| silent. |
| |
| 2013-02-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: no longer pretty-print rules in error messages, carets suffice |
| * src/gram.c (grammar_rules_useless_report): Let -fcaret handle the |
| pretty-printing of the guilty rules. |
| (rule_print): Inline in its only use. |
| * tests/conflicts.at, tests/existing.at, tests/reduce.at, |
| * tests/regression.at: Adjust. |
| * NEWS: Document. |
| |
| 2013-02-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| options: no longer document warnings when diagnosing an invalid -W |
| The argmatch functions accept prefixes of the alternatives (like |
| getopt does for long options). Bison uses this to document the |
| warning categories. This is troublesome: it duplicates the --help |
| documentation, it is not gettextized, it is displayed with ugly quotes |
| (because argmatch uses it to display the list of possible answers), |
| and it prevents straighforward uses of the tables of valid warning |
| categories (for instance so that warning diagnostics end with the name |
| of the warning). |
| |
| The "hidden" option --trace uses the same trick, but it does not need |
| to be translated, nor to be described in --help. |
| |
| * src/getargs.c (warnings_args): Remove pseudo documentation. |
| Comment changes. |
| |
| 2013-02-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: enlarge the allowed duration for calc tests |
| Hydra "often" fails on this test: |
| |
| 252. calc.at:658: 252. Calculator %glr-parser api.pure |
| parse.error=verbose %debug %locations %defines api.prefix="calc" |
| %verbose %yacc %parse-param {semantic_value *result} |
| %parse-param {int *count} (calc.at:658): FAILED |
| |
| * tests/calc.at: Give 200s instead of 100s. |
| Use AT_DEBUG_IF. |
| |
| 2013-02-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| debug: improve the display of symbol lists |
| * src/symtab.c (symbol_print): Remove useless quotes (the symbol already |
| has quotes). |
| Prefer fputs. |
| * src/symlist.c (symbol_list_syms_print): Likewise. |
| Fix separators. |
| |
| 2013-02-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: minor changes |
| * src/complain.c: Space changes. |
| * src/reader.c: Comment changes. |
| Avoid && in assertions. |
| * src/location.c: Move comments to... |
| * src/location.h: here. |
| * src/symlist.h, src/symlist.c: Create a pseudo section for members |
| that apply to the rule. |
| |
| 2013-02-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: restructure, document variants for C++ |
| * NEWS: here. |
| |
| 2013-02-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: api.token.constructor requires api.value.type=variant |
| Eventually it should also support "union". |
| |
| * data/glr.cc: Move this check to... |
| * data/c++.m4: here, as lalr1.cc is affected too. |
| |
| 2013-02-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: restore C90 compatibility |
| * src/parse-gram.y, src/parse-gram.c: Don't use // comments. |
| |
| 2013-02-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: use @group to improve page breaking |
| * doc/bison.texi: here. |
| |
| 2013-02-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: rename internal "stype" as "union_members" for clarity |
| "stype" is quite unclear, and it also collides with the former %define |
| variable that had the same name (replaced by api.value.type). |
| |
| * src/parse-gram.y (stype): Rename as... |
| (union_members): this. |
| * data/bison.m4: Adjust. |
| (b4_user_stype): Rename as... |
| (b4_user_union_members): this. |
| * data/c++.m4, data/c.m4: Adjust. |
| * src/parse-gram.c: regen. |
| |
| 2013-02-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve the language independance layer |
| * tests/local.at (_AT_LANG_DISPATCH): New, shamelessly stolen from |
| Autoconf's _AT_LANG_DISPATCH. |
| (AT_LANG_DISPATCH): New. |
| (AT_YYERROR_FORMALS, AT_YYERROR_PROTOTYPE, AT_YYERROR_DECLARE_EXTERN) |
| (AT_YYERROR_DECLARE, AT_YYERROR_DEFINE, AT_MAIN_DEFINE, AT_COMPILE) |
| (AT_FULL_COMPILE): |
| Use AT_LANG_DISPATCH instead of an ad hoc m4_case. |
| |
| 2013-02-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-02-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: space changes in the parser |
| * src/parse-gram.y: Fix spaces. |
| |
| 2013-02-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: use api.pure full |
| * src/parse-gram.y: Use api.pure full instead of silly macro tricks. |
| |
| 2013-02-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: use a for loop instead of a while loop, and scope reduction |
| * src/reader.c (packgram): Improve readability. |
| The parser calls grammar_current_rule_end at the end of every rhs, |
| which adds a NULL to separate the rules. So there is no need to |
| check whether "p" is non-null before proceeding. |
| |
| 2013-02-01 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| variants: stylistic change |
| * data/variant.hh (tname): Respect the GNU Coding Standards for this |
| pointer's declaration. |
| |
| 2013-02-01 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| grammar: free the association tracking graph |
| The graph introduced by Valentin wasn't free'd after use. |
| |
| * src/symtab.c (assoc_free): New, clear the array of linked lists with... |
| (linkedlist_free): This, new. |
| (print_precedence_warnings): Call assoc_free when done. |
| (print_assoc_warnings): Free used_assoc after use. |
| |
| 2013-02-01 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: use AT_FULL_COMPILE where possible |
| * tests/c++.at (C++ Variant-based Symbol, Variants): Here. Rename the |
| generated input files to use .y instead of .yy, as a requirement for using |
| AT_FULL_COMPILE instead of a combination of AT_BISON_CHECK and |
| AT_BISON_COMPILE_CXX. |
| |
| 2013-02-01 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| variants: avoid type punning issue |
| This is based on what is recommended by both Scott Meyers, in 'Effective |
| C++', and Andrei Alexandrescu and Herb Sutter in 'C++ Coding Standards'. |
| |
| Use a static_cast on void* rather than directly use a reinterpret_cast, |
| which can have nefarious effects on objects. However, even though following |
| this guideline is good practice in general, I am not quite sure how relevant |
| it is when applied to conversions from POD to objects. Actually, it might |
| very well be the opposite: isn't this exactly what reinterpret_cast is for? |
| What we really want *is* to transmit the memory map as a series of bytes, |
| which, if I am correct, falls into the kind of "low level" hack for which |
| this cast is meant. |
| |
| In any case, this silences the warning, which will be greatly appreciated by |
| anyone using variants with a compiler supporting -fstrict-aliasing. |
| |
| * data/variant.hh (as): Here. |
| * tests/c++.at (Exception safety, C++ Variant-based Symbols, Variants): |
| Don't use NO_STRICT_ALIAS_CXXFLAGS (revert commit ddb9db15), as type punning |
| is no longer an issue. |
| * tests/atlocal.in, configure.ac (NO_STRICT_ALIAS_CXXFLAGS): Remove |
| definition. |
| * examples/local.mk (NO_STRICT_ALIAS_CXXFLAGS): Remove from AM_CXXFLAGS. |
| * doc/bison.texi: Don't mention type punning issues. |
| |
| 2013-02-01 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| todo: update |
| Reformulate and give more details on my thoughts concerning the graphical |
| visualization, and add an entry about a bug in the options processing for |
| warnings as errors. |
| |
| * TODO: Here. |
| |
| 2013-02-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-02-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| location: pass the location first |
| * src/location.h, src/location.c (location_print): For consistency |
| with other data structures and other location_* routines, pass the |
| location argument first. |
| * src/complain.c: Adjust. |
| (location_caret): Likewise. |
| * src/parse-gram.y: Adjust. |
| |
| 2013-02-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| symlist: use the right stream |
| * src/symlist.c (symbol_list_syms_print): Use "f", not stderr. |
| |
| 2013-01-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: put two related tests together |
| * tests/conflicts.at (Useless associativity warning): Move next |
| to "Useless precedence warning". |
| |
| 2013-01-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: name contributors |
| * NEWS: here. |
| |
| 2013-01-30 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| warnings: introduce -Wprecedence |
| The new warning category "precedence" flags useless precedence and |
| associativity. -Wprecedence can now be used, it is disabled by default. |
| The warnings about precedence and associativity are grouped into one, and |
| the testsuite was corrected accordingly. |
| |
| * src/complain.h (warnings): Introduce "precedence". |
| * src/complain.c (warnings_print_categories): Adjust. |
| * src/getargs.c (warnings_args, warning_types): Likewise. |
| * src/symtab.h, src/symtab.c (print_associativity_warnings): Remove. |
| * src/symtab.h (register_assoc): Correct arguments. |
| * src/symtab.c (print_precedence_warnings): Print both warnings together. |
| * doc/bison.texi (Bison options): Document the warnings and provide an |
| example. |
| * tests/conflicts.at, tests/existing.at, tests/local.at, |
| * tests/regression.at: Adapt the testsuite for the new category |
| (-Wprecedence instead of -Wother where appropriate). |
| |
| 2013-01-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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. |
| |
| 2013-01-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: please Clang++ 3.2+ on Flex scanners |
| Clang++, with -Wall, rejects code generated by Flex (for C scanners): |
| |
| CXX examples/calc++/examples_calc___calc__-calc++-scanner.o |
| In file included from examples/calc++/calc++-scanner.cc:1: |
| error: implicit conversion of NULL constant to 'bool' [-Werror,-Wnull-conversion] |
| if ( ! ( (yy_buffer_stack) ? (yy_buffer_stack)[(yy_buffer_stack_top)] : __null) ) { |
| ~ ^~~~~~ |
| false |
| * configure.ac (WARN_NO_NULL_CONVERSION_CXXFLAGS): Compute it. |
| * examples/calc++/local.mk (examples_calc___calc___CXXFLAGS): Use it. |
| |
| 2013-01-30 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| grammar: record used associativity and print useless ones |
| Record which symbol associativity is used, and display useless ones. |
| |
| * src/symtab.h, src/symtab.c (register_assoc, print_assoc_warnings): New |
| * src/symtab.c (init_assoc, is_assoc_used): New |
| * src/main.c: Use print_assoc_warnings |
| * src/conflicts.c: Use register_assoc |
| * tests/conflicts.at (Useless associativity warning): New. |
| |
| Due to the new warning, many tests had to be updated. |
| |
| * tests/conflicts.at tests/existing.at tests/regression.at: |
| Add the associativity warning in the expected results. |
| * tests/java.at: Fix the java calculator's grammar to remove a useless |
| associativity. |
| * doc/bison.texi (mfcalc example): Fix associativity to remove |
| warning. |
| |
| 2013-01-29 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| grammar: warn about unused precedence for symbols |
| Symbols with precedence but no associativity, and whose precedence is |
| never used, can be declared with %token instead. The used precedence |
| relationships are recorded and a warning about useless ones is issued. |
| |
| * src/conflicts.c (resolve_sr_conflict): Record precedence relation. |
| * src/symtab.c, src/symtab.h (prec_nodes, init_prec_nodes) |
| (symgraphlink_new, register_precedence_second_symbol) |
| (print_precedence_warnings): New. |
| Record relationships in a graph and warn about useless ones. |
| * src/main.c (main): Print precedence warnings. |
| * tests/conflicts.at: New. |
| |
| 2013-01-29 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| variants: remove the 'built' assertions |
| When using %define parse.assert, the variants come with additional variables |
| that are useful for development purposes. One is a Boolean indicating if the |
| variant is built (to make sure we don't read a non-built variant), and the |
| other is a string describing the stored type. There is no need to have both of |
| these, the string is enough. |
| |
| * data/variant.hh (built): Remove. |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: indentation fixes |
| * src/parse-gram.y: here. |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: be sure to neutralize out-of-tree paths from our parser |
| * tests/bison.in: Adjust to support fixed versions of ylwrap. |
| |
| 2013-01-29 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| m4: generate a basic_symbol constructor for each symbol type |
| Recently, there was a slightly vicious bug hidden in the make_ functions: |
| |
| parser::symbol_type |
| parser::make_TEXT (const ::std::string& v) |
| { |
| return symbol_type (token::TOK_TEXT, v); |
| } |
| |
| The constructor for symbol_type doesn't take an ::std::string& as |
| argument, but a constant variant. However, because there is a variant |
| constructor which takes an ::std::string&, this caused the implicit |
| construction of a built variant. Considering that the variant argument |
| for the symbol_type constructor was cv-qualified, this temporary variant |
| was never destroyed. |
| |
| As a temporary solution, the symbol was built in two stages: |
| |
| symbol_type res (token::TOK_TEXT); |
| res.value.build< ::std::string&> (v); |
| return res; |
| |
| However, the solution introduced in this patch contributes to letting |
| the symbols handle themselves, by supplying them with constructors that |
| take a non-variant value and build the symbol's own variant with that |
| value. |
| |
| * data/variant.hh (b4_symbol_constructor_define_): Use the new |
| constructors rather than building in a temporary symbol. |
| (b4_basic_symbol_constructor_declare, |
| b4_basic_symbol_constructor_define): New macros generating the |
| constructors. |
| * data/c++.m4 (basic_symbol): Invoke the macros here. |
| |
| 2013-01-29 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| c++: minor stylistic changes |
| * data/c++m4: Remove useless comment lines. |
| * data/variant.hh (self_type): Use this typedef instead of variant<S>. |
| (b4_symbol_constructor_define_): Remove commented-out line, and stylistic |
| change (avoid blank line). |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: please G++ 4.8 with -O3: type puning issue |
| * tests/c++.at (Exception safety): Now that this test covers |
| variants, pass -fno-strict-aliasing to g++. |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: please G++ 4.8 with -O3: array bounds |
| * data/c++.m4, data/lalr1.cc (by_state, by_type): Do not use -1 to |
| denote the absence of value, as GCC then fears that this -1 might |
| be used to dereference arrays (such as yytname). |
| Use 0, which corresponds to $accept, which is valueless (the needed |
| property: the symbol destructor must not try to reclaim the memory |
| associated with the symbol). |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: use more explicit types than int |
| * data/c++.m4 (b4_public_types_declare): Declare token_number_type soon. |
| Introduce symbol_number_type (wider than token_number_type). |
| Clarify the requirement that kind_type from by_state and by_type |
| denote the _input_ type (required by the constructor), not the stored type. |
| Use symbol_number_type and token_number_type where appropriate, instead |
| of int. |
| * data/lalr1.cc: Adjust to these changes. |
| Propagate "symbol_number_type". |
| Invoke "type_get ()" instead of read "type" directly. |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: value_type -> kind_type |
| * data/c++.m4, data/lalr1.cc (by_type, by_state): Rename 'value_type' |
| as 'kind_type', as it is clearer. |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: improve the signature of yysyntax_error_ |
| * data/lalr1.cc: This function is const. |
| It takes a symbol_number_type. |
| |
| 2013-01-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: style changes |
| * data/lalr1.cc: Formatting changes. |
| And name changes. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| doxygen: upgrade Doxyfile, and complete it |
| * doc/Doxyfile.in: Let doxygen upgrade it. |
| (INCLUDE_PATH): Point to lib too. |
| (PROJECT_BRIEF): New. |
| (EXCLUDE): Update to reflect the current file hierarchy. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix syntax-check issues |
| * cfg.mk: Ignore strcmp in local.at. |
| * tests/conflicts.at: Use AT_PARSER_CHECK. |
| * tests/regression.at: Preserve the exit status of the generated parsers. |
| |
| * tests/local.mk ($(TESTSUITE)): Map @tb@ to a tabulation. |
| * tests/c++.at, tests/input.at, tests/regression.at: Use @tb@. |
| * cfg.mk: (space-tab): There are no longer exceptions. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: please C90 compilers |
| * tests/actions.at, tests/conflicts.at: Use /* ... */ comments. |
| Let "main" return a value. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update todo |
| * TODO: Remove fixed items. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: minor improvements |
| * NEWS: Name some more contributors. |
| Restructure slightly. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| 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++. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: formatting changes |
| * tests/local.at: Restore proper indentation. |
| |
| 2013-01-28 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| c++: better inline expansion |
| Many 'inline' keywords were in the declarations. They rather belong in |
| definitions, so move them. |
| |
| * data/c++.m4 (basic_symbol, by_type): Many inlines here. |
| * data/lalr1.cc (yytranslate_, yy_destroy_, by_state, yypush_, yypop_): Inline |
| these as well. |
| (move): Move the definition outside the struct, where it belongs. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check that using variants is exception safe |
| * tests/local.at: (Slightly) improve the regexp by escaping '.' |
| when it denotes a point. |
| (AT_VARIANT_IF): New. |
| * tests/c++.at (Exception Safety): Run it for variants too. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove useless %defines |
| Many tests were using %defines because C++ skeletons used to require |
| it. |
| |
| * tests/actions.at, tests/c++.at, tests/input.at, tests/regression.at: |
| Remove useless %defines. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: remove now-useless operators |
| Now that symbols behaves properly, we can eliminate special routines |
| that are no longer needed. |
| |
| * data/c++.m4, data/glr.cc, data/lalr1.cc, data/variant.hh: |
| Remove useless assignment operators and copy constructors. |
| As a consequence, remove useless includes for "abort". |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: enable support for --debug |
| * tests/c++.at (Variants): Here. |
| And remove useless clutter when api.token.constructor is enabled. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: revamp the support for variants |
| The current approach was too adhoc: the symbols were not sufficiently |
| self-contained, in particular wrt memory management. The "new" |
| guideline is the one that should have been followed from the start: |
| let the symbols handle themslves, instead of leaving their users to |
| it. It was justified by the will to avoid gratuitious moves and |
| copies, but the current approach does not seem to be slower, yet it |
| will probably be simpler to adjust to support move semantics from |
| C++11. |
| |
| The documentation says that the %parse-param are available from the |
| %destructor. In retrospect, that was a silly design decision, which |
| we can break for variants, as its a new feature. It should be phased |
| out for non-variants too. |
| |
| * data/variant.hh: A variant never knows if it stores something or |
| not, it is up to its users to store this information. |
| Yet, in parse.assert mode, make sure the empty/filled variants |
| are properly used. |
| (b4_symbol_constructor_define_): Don't call directly the symbol |
| constructor, to save a useless temporary. |
| * data/stack.hh (push): Steal the pushed value instead of duplicating |
| it. |
| This will simplify the callers of push, who handled this "move" |
| approach themselves. |
| * data/c++.m4 (basic_symbol): Let -1, as kind, denote the fact that |
| a symbol is empty. |
| This is needed for instance when shifting the lookahead: yyla |
| is given as argument to "push", and its value is then moved on |
| the stack. But then yyla must be declared "empty" so that its |
| destructor won't be called. |
| (basic_symbol::move): New. |
| Move the responsibility of calling the destructor from yy_destroy |
| to ~basic_symbol in the case of variants. |
| * data/lalr1.cc (stack_symbol_type): Now a derived class from its |
| previous value, so that we can add a constructor from a symbol_type. |
| (by_state): State -1 means empty. |
| (yypush_): Factor, by calling one overload from the other one, and |
| using the new semantics of stack::push. |
| No longer reclaim by hand the memory from rhs symbols, since now |
| that we store objects with proper destructors, they will be reclaimed |
| automatically. |
| Conversely, be sure to delete yylhs. |
| * tests/c++.at (C++ Variant-based Symbols): New "unit" test for |
| symbols. |
| |
| 2013-01-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: formatting and comment changes |
| * data/c++.m4, data/lalr1.cc, data/stack.hh, data/variant.hh: |
| Fix indentation. |
| Fix some comments. |
| |
| 2013-01-27 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| tests: add token declaration order test |
| * tests/conflicts.at: New test. |
| |
| 2013-01-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-01-27 Valentin Tolmer <nitnelave1@gmail.com> |
| |
| grammar: preserve token declaration order |
| In a declaration %token A B, the token A is declared before B, but in %left |
| A B (or with %precedence or %nonassoc or %right), the token B was declared |
| before A (tokens were declared in reverse order). |
| |
| * src/symlist.h, src/symlist.c (symbol_list_append): New. |
| * src/parse-gram.y: Use it instead of symbol_list_prepend. |
| * tests/input.at: Adjust expectations. |
| |
| 2013-01-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve test group titles |
| * tests/local.at (AT_SETUP_STRIP): AT_SETUP does not behave properly |
| with new-lines in its argument. |
| Remove them. |
| Fix the handling of %define with quotes. |
| |
| 2013-01-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| c: no longer require stdio.h when locations are enabled |
| Recent changes (in 2.7) introduced a dependency on both FILE and |
| fprintf, which are "available" only in %debug mode. This was to |
| define yy_location_print_, which is used only in %debug mode by the |
| parser, but massively used by the test suite to output the locations |
| in yyerror. |
| |
| Break this dependency: the test suite should define its own routines |
| to display the locations. Eventually Bison will provide the user with |
| a means to display locations, but not yet. |
| |
| * data/c.m4 (b4_yy_location_print_define): Use YYFPRINTF instead of |
| fprintf directly. |
| * data/yacc.c (b4_yy_location_print_define): Invoke it only in %debug |
| mode, so that stdio.h is included (needed for FILE*), and YYFPRINTF |
| is defined. |
| |
| * tests/local.at (AT_YYERROR_DECLARE, AT_YYERROR_DEFINE): Declare |
| and define location_print and LOCATION_PRINT. |
| |
| * tests/actions.at, tests/existing.at, tests/glr-regression.at, |
| * tests/input.at, tests/named-refs.at, tests/regression.at: Adjust |
| to use them. |
| Fix the expected line numbers (as the prologue's length has changed). |
| |
| 2013-01-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| c: minor simplification in the debug code |
| * data/c.m4 (yy_symbol_print): Minor factoring. |
| |
| 2013-01-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: display locations as C does |
| See commit 3804aa260b956dd012adde3894767254422a5fcf. |
| |
| * data/location.cc (operator<<): Display location exactly as is |
| done in C skeletons. |
| * tests/local.at (AT_LOC_PUSHDEF, AT_LOC_POPDEF): Also define |
| AT_FIRST_LINE, AT_LAST_LINE, AT_FIRST_COLUMN, AT_LAST_COLUMN. |
| * tests/actions.at (Location Print): Also check C++ skeletons. |
| |
| 2013-01-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: highlight empty right-hand sides |
| * tests/actions.at, tests/c++.at, tests/headers.at, |
| * tests/input.at: here. |
| |
| 2013-01-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: prepare for 2.8 |
| * NEWS: Restructure. |
| Name contributors. |
| |
| 2013-01-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: generalize default main for api.namespace |
| * tests/local.at (AT_NAME_PREFIX): Also match api.namespace. |
| (AT_MAIN_DEFINE): Take it into account. |
| * tests/c++.at, tests/headers.at: Use AT_NAME_PREFIX. |
| (AT_CHECK_NAMESPACE): Rename as... |
| (AT_TEST): this. |
| |
| 2013-01-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve factoring of the main function |
| * tests/local.at (AT_MAIN_DEFINE): If %debug is used, check if |
| -d/--debug is passed to the generated parser, and enable the traces. |
| Return exactly the result of yyparse, so that we can check exit code |
| 2 too. |
| * tests/actions.at, tests/glr-regression.at, tests/regression.at: |
| Use AT_MAIN_DEFINE, helping AT_BISON_OPTION_PUSHDEFS where needed, |
| preferably to option -t. |
| |
| 2013-01-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: factor the definition of main |
| With Théophile Ranquet. |
| |
| * tests/local.at (AT_MAIN_DEFINE): New. |
| (AT_YYERROR_DEFINE): Improve formatting. |
| * tests/actions.at, tests/c++.at, tests/conflicts.at, |
| * tests/glr-regression.at, tests/input.at, tests/regression.at, |
| * tests/skeletons.at, tests/torture.at: Adjust. |
| * tests/c++.at: Add missing %skeleton for a PUSHDEFS, and a missing |
| PUSH/POPDEFS for another test. |
| |
| 2013-01-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: minor refactoring |
| * tests/named-refs.at: Use AT_FULL_COMPILE where applicable. |
| |
| 2013-01-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: avoid useless caret stuttering |
| * src/scan-code.l: When reporting a missing ending ';', don't display |
| the guilty action twice. |
| |
| 2013-01-21 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| examples: please clang |
| * doc/bison.texi (calc++-scanner.ll): Don't output useless yyinput function. |
| |
| 2013-01-21 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: better silencing of unused argument warnings |
| input.yy:35:44: error: unused parameter 'msg' [-Werror,-Wunused-parameter] |
| void yy::parser::error (std::string const& msg) |
| ^ |
| |
| * tests/c++.at (C++ GLR parser identifier shadowing): Don't name unused |
| argument, use YYUSE instead of a direct cast to void. |
| |
| 2013-01-21 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| bench: compatibility for Bison <= 2.7 |
| There used to be a bug in some skeletons, which caused the expansion of |
| 'yylval' and 'yylloc', generating these errors: |
| |
| input.cc:547:16: error: expected ',' or '...' before '(' token |
| #define yylval (yystackp->yyval) |
| ^ |
| input.yy:29:39: note: in expansion of macro 'yylval' |
| int yylex (yy::parser::semantic_type *yylval) |
| ^ |
| |
| This bug is fixed by 'skel: better aliasing of identifiers', but a workaround |
| is useful when benchmarking against older versions of Bison, which are still |
| affected by the bug. |
| |
| * etc/bench.pl.in: Rename yylval to yylvalp and yylloc to yyllocp in base |
| grammar 'list'. |
| |
| 2013-01-15 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| c++: remove useless inlines |
| * data/c++.m4 (basic_symbol): Keep 'inline' in the prototypes, but don't |
| duplicate it in the implementation. |
| * data/variant.hh (variant): 'inline' is not needed when the implementation is |
| provided in the class definition. |
| |
| 2013-01-15 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| c++: m4 stylistic change |
| * data/c++.m4 (syntax_error): Fix the indentation of 'inline'. |
| |
| 2013-01-14 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| c++: silence warnings |
| * data/c++.m4 (basic_symbol<Base>::operator=): Unused parameter. |
| * tests/c++.at (C++ GLR parser identifier shadowing): Here too. |
| - |
| |
| 2013-01-14 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| news: typos |
| * NEWS: Fix a typo, use YYSTYPE rather than semantic_type. |
| |
| 2013-01-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-01-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update copyright years |
| Suggested by Stefano Lattarini. |
| Run "make update-copyright". |
| |
| 2013-01-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix VPATH issue |
| * Makefile.am (update-b4-copyright, update-package-copyright-year): Fix |
| path to build-aux. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| carets: document default activation |
| * NEWS: Announce it. |
| * doc/bison.texi: Adjust. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| carets: show them in more tests |
| * tests/input.at, tests/named-refs.at: Here. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| carets: activate by default |
| * src/getargs.c (feature_flag): Here. |
| * tests/local.at (AT_BISON_CHECK_, AT_BISON_CHECK_NO_XML): Deactivate carets |
| for the testsuite, by default. |
| * tests/input.at: Adjust the locations for command line definitions. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| variants: document move and swap |
| * data/variant.hh (swap): Doc. |
| (build): Rename as... |
| (move): This, more coherent naming with clearer meaning. |
| * data/c++.m4 (move): Adjust. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| c++: privatize variant blind copies |
| * data/variant.hh (variant, operator=): Make private. |
| * data/c++.m4 (operator=): New, to avoid needing a definition of that operator |
| for each class member (such as a possible variant). |
| * data/glr.cc, data/lalr.cc: Add the necessary include for the abort. |
| |
| 2013-01-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: fix an unused argument issue |
| * data/glr.c (yyuserAction): "Use" yyrhslen, as in variant mode, we might |
| not use it. |
| |
| 2013-01-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: style changes |
| * data/glr.c (yyuserAction): Use a size_t for sizes. |
| |
| 2013-01-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| c.m4: style fix |
| * data/c.m4 (b4_parse_param_use): Add missing space before paren. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| skel: better aliasing of identifiers |
| * data/glr.c, data/yacc.c: Avoid emitting useless defines. |
| * data/glr.cc: Restore prefixes for epilogue. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| glr.cc: fatal if using api.token.ctor without variants |
| * data/glr.cc: Here. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| skel: correctly indent switch cases |
| * data/bison.m4 (b4_type_action_): Here. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| variants: assert changes |
| * data/variant.hh (swap): More asserts can't hurt. Don't perform useless swaps. |
| (build): Deactivate problematic asserts, pending further investigation. |
| (variant): Prohibit copy construction. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| lalr1.cc: use a vector for the symbol stack |
| * data/lalr1.cc: Adjust includes. |
| * data/stack.hh (push, pop): Use push_back and pop_back. |
| (operator []): Access vector from the end. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| lalr1.cc: change symbols implementation |
| A "symbol" groups together the symbol type (INT, PLUS, etc.), its |
| possible semantic value, and its optional location. The type is |
| needed to access the value, as it is stored as a variant/union. |
| |
| There are two kinds of symbols. "symbol_type" are "external symbols": |
| they have type, value and location, and are returned by yylex. |
| "stack_symbol_type" are "internal symbols", they group state number, |
| value and location, and are stored in the parser stack. The type of |
| the symbol is computed from the state number. |
| |
| The class template symbol_base_type<Exact> factors the code common to |
| stack_symbol_type and symbol_type. It uses the Curiously Recurring |
| Template pattern so that we can always (static_) downcast to the exact |
| type. symbol_base_type features value and location, and delegates the |
| handling of the type to its parameter. |
| |
| When trying to generalize the support for variant, a significant issue |
| was revealed: because stack_symbol_type and symbol_type _derive_ from |
| symbol_base_type, the type/state member is defined _after_ the value |
| and location. In C++ the order of the definition of the members |
| defines the order in which they are initialized, things go backward: |
| the value is initialized _before_ the type. This is wrong, since the |
| type is needed to access the value. |
| |
| Therefore, we need another means to factor the common code, one that |
| ensures the order of the members. |
| |
| The idea is simple: define two (base) classes that code the symbol |
| type ("by_type" codes it by its type, and "by_state" by the state |
| number). Define basic_symbol<Base> as the class template that |
| provides value and location support. Make it _derive_ from its |
| parameter, by_type or by_state. Then define stack_symbol_type and |
| symbol_type as basic_symbol<by_state>, basic_symbol<by_type>. The |
| name basic_symbol was chosen by similarity with basic_string and |
| basic_ostream. |
| |
| * data/c++.m4 (symbol_base_type<Exact>): Remove, replace by... |
| (basic_symbol<Base>): which derives from its parameter, one of... |
| (by_state, by_type): which provide means to retrieve the actual type of |
| symbol. |
| (symbol_type): Is now basic_symbol<by_type>. |
| (stack_symbol_type): Is now basic_symbol<by_state>. |
| * data/lalr1.cc: Many adjustments. |
| |
| 2013-01-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| bench: add %b directive to use a specific Bison |
| For example, |
| $ bench.pl -v '%s lalr1.cc & %d variant & ( %b ~/old-bison/bin/bison |
| | %b ~/new-bison/bin/bison )' -g list -i 10000 |
| |
| * etc/bench.pl.in: Here. |
| |
| 2013-01-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2013-01-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: use deffn to declare the list of %define variables |
| * doc/bison.texi (%define Summary): Use @deffn instead of @table, it |
| spares a lot of width, especially in PDF, and looks nicer in the other |
| formats too. |
| It is also more consistent with the rest of the document. |
| |
| 2012-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: minor completion and fixes |
| * doc/bison.texi (%define Summary): Provide more history to some |
| variables. |
| |
| 2012-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| java: stype is obsoleted by api.value.type |
| This is consistent with the other %define variable names. |
| |
| * data/java.m4: Use api.value.type instead of stype. |
| * doc/bison.texi, NEWS: Document that change. |
| * src/muscle-tab.c (muscle_percent_variable_update): Provide backward |
| compatibility. |
| * tests/java.at: Adjust. |
| |
| 2012-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix html build |
| * doc/local.mk (bison.html): Fix dependencies. |
| |
| 2012-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| todo: remove erroneous task |
| * tests/input.at: Check that there are no warnings about stray $ and @ |
| in the epilogue. |
| * TODO: Remove the correponding task. |
| |
| 2012-12-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-12-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-12-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| syncline: one line is enough |
| So far we were issuing two lines for each syncline change: |
| |
| /* Line 356 of yacc.c */ |
| #line 1 "src/parse-gram.y" |
| |
| This is a lot of clutter, especially when reading diffs, as these |
| lines change often. Fuse them into a single, shorter, line: |
| |
| #line 1 "src/parse-gram.y" /* yacc.c:356 */ |
| |
| * data/bison.m4 (b4_syncline): Issue a single line. |
| Comment improvements. |
| (b4_sync_start, b4_sync_end): Issue a shorter comment. |
| * data/c++.m4 (b4_semantic_type_declare): b4_user_code must be |
| on its own line as it might start with a "#line" directive. |
| |
| 2012-12-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-12-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: restore ANSI 89 compliance |
| * data/bison.m4, src/conflicts.c, src/files.c, src/output.c, |
| * src/symtab.c: Use /* ... */ comments only. |
| Declare variables before statements. |
| |
| 2012-12-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| graph: minor simplification |
| * src/gram.c (print_lhs): Use %*s to indent. |
| * src/print_graph.c (print_lhs): Use obstack_printf. |
| Became simple enough to be inlined in... |
| (print_core): here. |
| Use a "rule*" instead of an index in "rules[]". |
| |
| 2012-12-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| closure, gram: add missing const |
| * src/closure.h, src/closure.c, src/gram.h, src/gram.c: Add some missing |
| const where appropriate. |
| |
| 2012-12-27 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| carets: properly display when no line feed is present |
| * src/location.c (location_caret): finish the line with one whether or not it |
| is present in input. Rewrite code without getline. |
| (cleanup_caret): Reset the caret_info global. |
| * bootstrap.conf: No longer require getline. |
| |
| 2012-12-27 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| scanner: reintroduce unput for missing end tokens |
| Unput was no longer used since a POSIX-compatiblity issue with Flex 2.5.31, |
| which has been adressed in newer versions of Flex. See this discussion: |
| <http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00029.html> |
| |
| This partially reverts commit aa4180418fff518198e1b0f2c43fec6432210dc7. |
| |
| * src/scan-gram.l (unexpected_end): Here. |
| * tests/input.at: Adjust for new order of error reports. |
| |
| 2012-12-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: scope reduction |
| * src/tables.c (default_goto): Make it easier to understand. |
| |
| 2012-12-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-12-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: fix comments |
| The commit 38de4e570fdc7c8db9633c3b2054e565d8c1c6b9 underquoted the |
| content of the comments, which resulted in losing square brackets in |
| the comments. Besides, some other invocations were underquoting the |
| effective arguments. |
| |
| * data/c.m4 (b4_comment_): Properly quote the comment. |
| (b4_comment_, b4_comment): Move to... |
| * data/c-like.m4: here, so that... |
| * data/java.m4: can use it instead of its own copy. |
| * data/bison.m4 (b4_integral_parser_tables_map): Fix some comments. |
| |
| * data/lalr1.cc, data/lalr1.java, data/yacc.c: Comment fixes. |
| |
| * data/lalr1.cc: Reorder a bit to factor some CPP directives. |
| |
| 2012-12-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: which -> whose |
| Apparently, I was confusing both. |
| |
| * data/bison.m4, data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: |
| Use "whose" where appropriate. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: scope reduction |
| * src/tables.c (matching_state): here. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: scope reduction |
| * src/tables.c (token_actions): here. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: scope reduction |
| * src/tables.c (save_row): here. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: scope reduction |
| * src/tables.c (save_column, pack_vector): Reduce the scope to |
| emphasize the structure of the code. |
| Rename the returned value "res" to make understanding easier. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: use size_t where appropriate |
| These changes aim at making the code easier to understand. |
| |
| * src/tables.c (tally): This is a size, always >= 0, so make it |
| a size_t. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tables: style changes |
| * src/tables.c: Prefer < to >. |
| Fix/complete some comments. |
| Remove useless parens. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: no longer call yylex via a CPP macro |
| The YYLEX existed only to support YYLEX_PARAM, which is now removed. |
| This macro was a nuisance, since incorrect yylex calls where pointed |
| the macro _use_, instead of its definition. |
| |
| * data/c.m4 (b4_lex_formals, b4_lex): New. |
| * data/glr.c, data/yacc.c: Use it. |
| * data/lalr1.cc (b4_lex): New. |
| Use it. |
| |
| squash! skeletons: no longer call yylex via a CPP macro |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| YYLEX_PARAM: drop support |
| * data/yacc.c, doc/bison.texi: Remove YYLEX_PARAM support. |
| * NEWS: Document it. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| examples: minor improvements |
| * examples/variant.yy: Don't use debug_stream(), obsoleted. |
| Use <*>. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: factor comments about symbols |
| * data/variant.hh (b4_char_sizeof_): Rename as... |
| * data/bison.m4 (b4_symbol_tag_comment): this. |
| Provide more documentation about b4_symbol_*. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| c: improve the definition of public types |
| * data/c.m4 (b4_token_enum): Improve comments. |
| (b4_value_type_define, b4_location_type_define): New, extracted |
| from... |
| (b4_declare_yylstype): here. |
| Separate the typedefs from the union/struct definitions. |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: update variant usage |
| * doc/bison.texi, examples/variant.yy: Use "%define api.value.type variant", |
| instead of "%define variant". |
| |
| 2012-12-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check the "%define variant" is deprecated. |
| * tests/input.at: Rename some AT_SETUP to avoid that |
| AT_SETUP_STRIP thinks they contain %define directives. |
| ("%define" backward compatibility): Merge tests together |
| to speed up the test suite, and to make maintenance easier |
| (multiple AT_CHECK means multiple runs of the test suite to |
| be sure to have updated all the error messages). |
| Check the "%define variant" is properly obsoleted. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| %define variables: support value changes in deprecation |
| * src/muscle-tab.c (define_directive): Be robust to "assignment" |
| containing '='. |
| (muscle_percent_variable_update): Upgrade "variant" to "api.value.type". |
| Support such upgrade patterns. |
| Adjust callers. |
| |
| * data/bison.m4: Use api.value.type for variants. |
| * tests/c++.at: Adjust tests. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: treat obsolete %define variable names as obsolete directives |
| Instead of |
| |
| warning: deprecated %define variable name: 'namespace', use 'api.namespace' [-Wdeprecated] |
| |
| display (in -fno-caret mode): |
| |
| warning: deprecated directive: '%define namespace foo', use '%define api.namespace foo' [-Wdeprecated] |
| |
| and (in -fcaret mode): |
| |
| warning: deprecated directive, use '%define api.namespace toto' [-Wdeprecated] |
| %define namespace toto |
| ^^^^^^^^^ |
| |
| This is in preparation of cases where not only the variable is |
| renamed, but the values are too: |
| |
| warning: deprecated directive: '%define variant', use '%define api.value.type variant' [-Wdeprecated] |
| |
| * src/muscle-tab.c (define_directive): New. |
| (muscle_percent_variable_update): Take the value as argument, and use it |
| in the diagnostics. |
| Loop with a pointer instead of an index. |
| * tests/input.at (%define backward compatibility): Adjust. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: factor the deprecated directive message |
| * src/complain.h, src/complain.c (deprecated_directive): New. |
| * src/muscle-tab.c: Use it. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| variant: produce stable results |
| Improve the output by ensuring a well defined order for type switches. |
| |
| * src/uniqstr.h: Style changes for macro arguments. |
| (UNIQSTR_CMP): Replace by... |
| (uniqstr_cmp): this. |
| * src/uniqstr.c (uniqstr_cmp): New. |
| Produce well defined results. |
| * src/output.c: Use it. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| uniqstr: formatting changes |
| * src/uniqstr.h: Sort functions by object type. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: fix an error message |
| * data/bison.m4 (b4_flag_if): Display the invalid value. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve titles |
| * tests/local.at (AT_SETUP_STRIP): New. |
| (AT_SETUP): Use it to shorten the test titles: remove %defines, %language |
| and %skeleton whose arguments suffice. |
| * tests/synclines.at: Use more precise AT_SETUP. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: comment changes |
| * data/c++.m4, data/glr.cc, data/lalr1.cc: Convert some /* ... */ |
| comments to //. |
| |
| 2012-12-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: use // comments in the output |
| This is mostly used for the license header, the synclines, and the |
| generated tables: |
| |
| - /* STOS_[STATE-NUM] -- The (internal number of the) accessing |
| - symbol of state STATE-NUM. */ |
| + // STOS_[STATE-NUM] -- The (internal number of the) accessing |
| + // symbol of state STATE-NUM. |
| static const unsigned char yystos_[]; |
| |
| * data/c.m4: Comment changes. |
| (b4_comment_): Expand the text argument. |
| Before this change, we were actually formatting M4 code as a |
| C comment, and then expand it. |
| (b4_comment): Fix the closing of comments: there is no reason to |
| add the (line) prefix before the closing "*/". |
| * data/c++.m4 (b4_comment): New. |
| |
| 2012-12-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: disable sc_prohibit_test_backticks |
| * cfg.mk: here. |
| And fix typos. |
| Reported by Stefano Lattarini. |
| |
| 2012-12-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: more syntax-checks |
| * cfg.mk (sc_prohibit_tab_based_indentation, sc_prohibit_test_backticks) |
| (sc_preprocessor_indentation, sc_space_before_open_paren): New, |
| stolen from Coreutils (2e9f5ca4ebbbdb6a9fa2dd3d5add3f7720a172d7). |
| |
| 2012-12-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| debug: no longer generate tabs |
| * src/closure.c, src/derives.c, src/nullable.c, tests/sets.at: Use |
| spaces. |
| |
| 2012-12-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| style changes: run cppi |
| Run it in src/ for a start. |
| |
| * src/AnnotationList.h, src/InadequacyList.h, src/Sbitset.h, |
| * src/closure.c, src/complain.h, src/flex-scanner.h, src/getargs.h, |
| * src/gram.h, src/graphviz.h, src/ielr.h, src/location.h, |
| * src/muscle-tab.h, src/named-ref.h, src/relation.h, src/scan-code.h, |
| * src/state.h, src/symtab.h, src/system.h, src/uniqstr.h: |
| Reindent preprocessor directives. |
| |
| 2012-12-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| style changes: untabify |
| * data/xslt/xml2dot.xsl, data/xslt/xml2text.xsl, m4/flex.m4, |
| * tests/glr-regression.at, tests/torture.at: here. |
| |
| 2012-12-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: be robust to set -e. |
| * examples/test (run): here. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| variants: prohibit simple copies |
| The "variant" structure provides a means to store, in a typeless way, |
| C++ objects. Manipulating it without provide the type of the stored |
| content is doomed to failure. So provide a means to copy in a type |
| safe way, and prohibit typeless assignments. |
| |
| * data/c++.m4 (symbol_type::move): New. |
| * data/lalr1.cc: Use it. |
| * data/variant.hh (b4_variant_define): Provide variant::copy. |
| Let variant::operator= abort. |
| We cannot undefine it, yet, as it is still uses by the implicit |
| assigment in symbols, which must also be disabled. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| variant: more assertions |
| Equip variants with more checking code. Provide a means to request |
| includes. |
| |
| * data/variant.hh (b4_variant_includes): New. |
| * data/lalr1.cc: Use it. |
| * data/variant.hh (variant::built): Define at the end, as a private member. |
| (variant::tname): New. |
| Somewhat makes "built" useless, but let's keep both for a start, in |
| case using "typeinfo" is considered unacceptable in some environments. |
| Fix some formatting issues. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: fix output directives |
| * data/lalr1.cc, data/location.cc, data/glr.cc: Use b4_output_begin. |
| Broken during a merge. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: style changes |
| * data/yacc.c (b4_lex_param): Provide arguments with a name. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: simplifying the handling of parse/lex params |
| The fact that glr.cc uses glr.c makes the handling of parse params |
| more complex, as the parser object of glr.cc must be passed to the |
| parse function of glr.c. Yet not all the functions need access to |
| the parser object. |
| |
| * data/glr.cc (b4_parse_param_wrap): New. |
| Use them. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: rename lex params |
| * data/glr.c (b4_lex_param): Rename as... |
| (b4_lex_formals): this, for consistency. |
| Provide arguments a name. |
| (LEX): Adjust. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: move function declaration earlier |
| * data/glr.c (yypstack, yypdumpstack): Declare earlier, to make |
| it easier to call them from other functions. |
| |
| 2012-12-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| %define variables: backward compatibility |
| * src/muscle-tab.c (muscle_percent_variable_update): Accept lex_symbol. |
| Reported by Roland Levillain. |
| |
| 2012-12-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| diagnostics: improve -fcaret for list of accepted values |
| Instead of |
| |
| input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither' |
| %define api.push_pull "neither" |
| ^^^^^^^^^^^^^ |
| input.y:1.9-21: accepted value: 'pull' |
| %define api.push_pull "neither" |
| ^^^^^^^^^^^^^ |
| input.y:1.9-21: accepted value: 'push' |
| %define api.push_pull "neither" |
| ^^^^^^^^^^^^^ |
| input.y:1.9-21: accepted value: 'both' |
| %define api.push_pull "neither" |
| ^^^^^^^^^^^^^ |
| |
| report |
| |
| input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither' |
| %define api.push_pull "neither" |
| ^^^^^^^^^^^^^ |
| input.y:1.9-21: accepted value: 'pull' |
| input.y:1.9-21: accepted value: 'push' |
| input.y:1.9-21: accepted value: 'both' |
| |
| * src/complain.h (no_caret): New. |
| * src/complain.c (error_message): Use it. |
| * src/muscle-tab.c (muscle_percent_define_check_values): Use it. |
| * src/scan-skel.l (flag): Ditto. |
| * tests/input.at: Adjust and check. |
| |
| 2012-12-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: simplify the handling of default api.location.type |
| * data/bison.m4 (b4_bison_locations_if): New. |
| * data/glr.cc, data/lalr1.cc: Use it. |
| |
| 2012-12-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: address syntax-check failures |
| * cfg.mk: Ignore failures in timevar (uses GCC style configuration, |
| not gnulib's). |
| * doc/local.mk: Space changes. |
| * lib/main.c, tests/calc.at: Remove useless HAVE_ tests. |
| |
| 2012-12-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| remove duplicate definitions |
| * src/system.h: here, inherited from a merge. |
| |
| 2012-12-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: style changes |
| * tests/glr-regression.at: Issue yyerror before yylex. |
| |
| 2012-12-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix dependencies |
| * doc/local.mk: here. |
| |
| 2012-12-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: style fixes |
| * doc/bison.texi: Add a couple of missing @var and @code. |
| |
| 2012-12-14 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| doc: fix build dependencies |
| Suggested by Nick Bowler |
| <http://lists.gnu.org/archive/html/bug-automake/2012-12/msg00001.html> |
| |
| * doc/local.mk: Avoid overwriting Automake's rules. |
| |
| 2012-12-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'origin/maint' |
| * origin/maint: |
| maint: credit Wojciech Polak |
| maint: post-release administrivia |
| version 2.7 |
| yacc.c: scope reduction |
| tests: C90 compliance |
| fix C90 compliance |
| glr.c: scope reduction |
| gnulib: update |
| |
| 2012-12-14 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| symtab: add missing initializations |
| * src/symtab.c (semantic_type_new): Here. |
| |
| 2012-12-14 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| symtab: fix some leaks |
| * src/symlist.c (symbol_list_free): Deep free it. |
| * src/symtab.c (symbols_free, semantic_types_sorted): Free it too. |
| (symbols_do, sorted): Call by address. |
| |
| 2012-12-14 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: remove use of PARSE_PARAM |
| * tests/header.at: Here. |
| |
| 2012-12-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: credit Wojciech Polak |
| * NEWS, THANKS: He is the author of XML support (including XSLTs). |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.7 |
| * NEWS: Record release date. |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: scope reduction |
| * data/yacc.c (yysyntax_error): here. |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: C90 compliance |
| * tests/synclines.at: here. |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix C90 compliance |
| * data/glr.c, src/graphviz.h, src/ielr.c, src/scan-gram.l, |
| * src/system.h, tests/actions.at, tests/glr-regression.at: Do not |
| use // comments. |
| Do not introduce variables after statements. |
| Provide "main" with a return value. |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: scope reduction |
| * data/glr.c (yyreportSyntaxError): Reduce the scope of yysize1 (now |
| yysz). |
| |
| 2012-12-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-12-10 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| news: prepare for forthcoming release |
| doc: explain how mid-rule actions are translated |
| error: use better locations for unused midrule values |
| doc: various minor improvements and fixes |
| tests: ignore more useless compiler warnings |
| tests: be robust to C being compiled with a C++11 compiler |
| build: beware of Clang++ not supporting POSIXLY_CORRECT |
| maint: post-release administrivia |
| version 2.6.90 |
| build: fix syntax-check error. |
| cpp: simplify the Flex version checking macro |
| news: improve the carets example and fix a typo |
| cpp: improve the Flex version checking macro |
| carets: improve the code |
| maint: update news |
| build: keep -Wmissing-declarations and -Wmissing-prototypes for modern GCCs |
| build: drop -Wcast-qual |
| gnulib: update |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: prepare for forthcoming release |
| * NEWS: Fill paragraph. |
| Reorder. |
| Update examples. |
| Remove line for 2.6.90. |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: explain how mid-rule actions are translated |
| * doc/bison.texi (Actions in Mid-Rule): Mention and use named references. |
| Split into three subsections, among which... |
| (Mid-Rule Action Translation): this new section. |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| error: use better locations for unused midrule values |
| On |
| |
| %% |
| exp: {;} {$$;} { $$ = $1; } |
| |
| instead of reporting (with -fcaret -Wmidrule-value) |
| |
| midrule.y:2.6-8: warning: unset value: $$ [-Wmidrule-values] |
| exp: {;} {$$;} { $$ = $1; } |
| ^^^ |
| midrule.y:2.6-27: warning: unused value: $2 [-Wmidrule-values] |
| exp: {;} {$$;} { $$ = $1; } |
| ^^^^^^^^^^^^^^^^^^^^^^ |
| |
| report |
| |
| midrule.y:2.6-8: warning: unset value: $$ |
| exp: {;} {$$;} { $$ = $1; } |
| ^^^ |
| midrule.y:2.10-14: warning: unused value: $2 |
| exp: {;} {$$;} { $$ = $1; } |
| ^^^^^ |
| |
| * src/reader.c (grammar_rule_check): When warning about the value of a |
| midrule action, use the location of the midrule action instead of the |
| location of the rule. |
| the location of the part of the rule. |
| * tests/actions.at (Default %printer and %destructor for mid-rule values): |
| Adjust expectations |
| * tests/input.at (Unused values with default %destructor): Ditto. |
| (AT_CHECK_UNUSED_VALUES): Ditto. |
| And use -fcaret. |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: various minor improvements and fixes |
| * doc/figs/example.dot, doc/figs/example.y: New. |
| * doc/bison.texi: Prefer "token" to TOKEN. |
| Use @group where appropriate. |
| Adjust with style changes in the output (State 0, not state 0). |
| Fix some @ref that were missing the third argument. |
| Fix some incorrect line numbers. |
| Use "nonterminal", not "non-terminal". |
| Fix overfull and underfull TeX hboxes. |
| Put the comments in the index. |
| Remove duplicate index entries. |
| Fuse glossary entries where appropriate. |
| (Understanding): Improve the continuity between sections. |
| Use example.dot to show the whole graph. |
| * doc/Makefile.am: Adjust. |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: ignore more useless compiler warnings |
| * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore complains about |
| using c++ to compile C. |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: be robust to C being compiled with a C++11 compiler |
| * tests/glr-regression.at: Use YY_NULL instead of NULL. |
| Comment changes. |
| |
| 2012-12-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: beware of Clang++ not supporting POSIXLY_CORRECT |
| * m4/c-working.m4 (BISON_LANG_COMPILER_POSIXLY_CORRECT): New. |
| (BISON_C_COMPILER_POSIXLY_CORRECT): Use it. |
| For consistency with C++, also define BISON_C_WORKS. |
| * m4/cxx.m4 (BISON_CXX_COMPILER_POSIXLY_CORRECT): New. |
| * configure.ac: Use it. |
| * tests/atlocal.in: Get its result. |
| Propagate properly CXX values when used to compile C. |
| When POSIXLY_CORRECT, adjust BISON_C_WORKS and BISON_CXX_WORKS. |
| * tests/local.at (AT_COMPILE): Use BISON_C_WORKS. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6.90 |
| * NEWS: Record release date. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix syntax-check error. |
| * cfg.mk: Exclude names-refs, it includes a "double" if (end of first |
| line, first of second line below). |
| |
| test.y:43.12-44.59: symbol not found in production: if |
| if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| 2012-12-07 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| cpp: simplify the Flex version checking macro |
| * src/flex-scanner,h (FLEX_VERSION): Consider YY_FLEX_SUBMINOR_VERSION |
| defined. |
| |
| 2012-12-07 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| news: improve the carets example and fix a typo |
| * NEWS: Here. |
| |
| 2012-12-07 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| cpp: improve the Flex version checking macro |
| * src/flex-scanner.h (FLEX_VERSION): Here. |
| |
| 2012-12-07 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| carets: improve the code |
| * src/location.c: Remove duplicate documentations. |
| (caret_info): Stylistic change. |
| (location_caret): Many reworks. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update news |
| * NEWS: There is no 2.6.6, remove its stub. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: keep -Wmissing-declarations and -Wmissing-prototypes for modern GCCs |
| Fixes a -Werror failure of xalloc.h used in src. |
| From Eric Blake. |
| http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00006.html |
| |
| * configure.ac: Check whether GCC pragma diagnostic push/pop works. |
| Enable these warnings for bison if it does. |
| Enable these warnings for the test suite anyway. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: drop -Wcast-qual |
| Suggested by Jim Meyering. |
| http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00017.html |
| * configure.ac (warn_common): Remove -Wcast-qual. |
| |
| 2012-12-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-12-06 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| misc: pacify the Tiny C Compiler |
| cpp: make the check of Flex version portable |
| misc: require getline |
| c++: support wide strings for file names |
| doc: document carets |
| tests: enhance existing tests with carets |
| errors: show carets |
| getargs: add support for --flags/-f |
| |
| 2012-12-06 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| misc: pacify the Tiny C Compiler |
| * src/graphviz.c (conclude_red): Remove a useless return. |
| |
| 2012-12-05 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| cpp: make the check of Flex version portable |
| This was problematic with tcc 0.9.25 |
| |
| * src/flex-scanner.h (FLEX_VERSION_GT): Rewrite and rename as... |
| (FLEX_VERSION): This. |
| |
| 2012-12-05 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| misc: require getline |
| * bootstrap.conf: Here, used by src/location.c. |
| * src/getargs.c (long_options): Rename --flags to --feature. |
| |
| 2012-12-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: support wide strings for file names |
| Reported by Mark Boyall. |
| http://lists.gnu.org/archive/html/help-bison/2011-08/msg00002.html |
| |
| * data/location.cc (operator<<): Be templated on the type of |
| output stream. |
| * tests/headers.at (Several parsers): Adjust. |
| |
| 2012-12-05 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| doc: document carets |
| * NEWS: Announce it. |
| * doc/bison.texi (Bison Options): Here. |
| |
| 2012-12-05 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: enhance existing tests with carets |
| * tests/actions.at: Unset value. |
| * tests/conflicts.at: Rule useless due to conflicts. |
| * tests/input.at: Missing terminator, unexpected end of file, command line |
| redefinition of variable. |
| * tests/named-refs.at: Many errors. |
| * tests/reduce.at: Useless nonterminals and rules. |
| * tests/regression.at: Large token. |
| |
| 2012-12-05 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: show carets |
| * src/locations.c (caret_info): New, persistant information useful |
| for... |
| (location_caret): New, print a caret. |
| (cleanup_caret): Release caret_info cleanly, call it... |
| * src/main.c (main): Here. |
| * src/complain.c (error_message): Call location_caret here. |
| |
| 2012-12-05 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| getargs: add support for --feature/-f |
| Introduce -fdiagnostics-show-caret |
| |
| * src/getargs.c (feature_flag): New global. |
| * src/getargs.h (feature): New enum. |
| |
| 2012-12-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| getargs: don't label --language/-l as experimental |
| getargs: fix the locations of command-line input |
| errors: indent missing action code semicolon warning |
| |
| 2012-12-04 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| getargs: don't label --language/-l as experimental |
| * NEWS: Announce it. |
| * doc/bison.texi, src/getargs.c (usage): Here. |
| |
| 2012-12-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: minor improvements |
| * tests/calc.at (AT_CHECK_SPACES): To speed up, accept several files |
| at once, and factor some calls. |
| |
| 2012-12-03 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| getargs: fix the locations of command-line input |
| * src/getargs.c (command_line_location): Here. |
| * tests/input.at: Adjust. |
| |
| 2012-12-03 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: indent missing action code semicolon warning |
| Also, remove a duplicate #define. |
| |
| * src/scan-code.l (SC_RULE_ACTION): Here. |
| * tests/actions.at: Adjust. |
| |
| 2012-12-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| parser: accept #line NUM |
| m4: use a safer pattern to enable/disable output |
| tests: beware of gnulib's need for config.h |
| gnulib: update |
| yacc.c, glr.c: check and fix the display of locations |
| formatting changes |
| glr.c: remove stray macro |
| |
| 2012-12-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: accept #line NUM |
| * src/scan-gram.l (scanner): Accept '#line NUM'. |
| (handle_syncline): Adjust to the possible missing file name. |
| |
| 2012-12-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| m4: use a safer pattern to enable/disable output |
| Work on some other areas of Bison revealed that some macros expanded |
| to be expanded only once were actually expanded several times. This |
| was due to the fact that changecom was not properly restored each |
| time, and macro names appearing in comments were then expanded. |
| |
| Introduce begin/end macros which are easier to match that |
| changecom()/changecom(#). |
| |
| * data/bison.m4 (b4_output_begin, b4_output_end): New. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, |
| * data/location.cc, data/stack.hh, data/yacc.c: |
| Use them. |
| |
| 2012-12-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: beware of gnulib's need for config.h |
| * tests/skeletons.at, tests/torture.at: Be sure to include config.h |
| where appropriate. |
| |
| 2012-11-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| * lib/yyerror.c: Include config.h since the following stdio.h might be |
| from gnulib. |
| |
| 2012-11-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c, glr.c: check and fix the display of locations |
| In some case, negative column number could be displayed. |
| Make YY_LOCATION_PRINT similar to bison's own implementation of |
| locations. Since the macro is getting fat, make it a static |
| function. |
| Reported by Jonathan Fabrizio. |
| |
| * data/c.m4 (yy_location_print_define): Improve the implementation, |
| and generate the yy_location_print_ function. |
| Adjust YY_LOCATION_PRINT. |
| * tests/actions.at (Location Print): New tests. |
| |
| 2012-11-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| formatting changes |
| * data/c.m4: Fix comments, put macros in a more natural order. |
| Space changes (from M-x whitespace-cleanup). |
| * src/location.c: Fix spaces. |
| * tests/actions.at: Space changes. |
| |
| 2012-11-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: remove stray macro |
| * data/glr.c (YYOPTIONAL_LOC): Remove, unused since commit |
| 769a8ef9bcb5e14d0be9d0869f5dca20ab093930. |
| |
| 2012-11-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| doc: minor fixes |
| doc: improve the index |
| doc: introduce api.pure full, rearrange some examples |
| yacc.c: support "%define api.pure full" |
| local.at: improvements |
| |
| 2012-11-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: minor fixes |
| * doc/bison.texi: Use stderr for error messages. |
| Meta-variables are usually spelled in lower case. |
| Use @code for function names. |
| |
| 2012-11-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: improve the index |
| * doc/bison.texi: Fix uses of "deffn" so that the arguments of the |
| directives do not show in the index. |
| Remove a duplicate entry for api.pure. |
| |
| 2012-11-29 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| doc: introduce api.pure full, rearrange some examples |
| * NEWS: Add entry. |
| * doc/bison.texi (%define Summary): Show the old Yacc behaviour. |
| (Parser Function): Move parse-param examples here. |
| (Pure Calling): Remove parse-param examples. |
| (Error Reporting): Don't show the old behavior, stick to 'full'. |
| |
| 2012-11-29 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| yacc.c: support "%define api.pure full" |
| This makes the interface for yyerror() pure without the need for a spurious |
| parse_param. |
| |
| * data/yacc.c (b4_pure_if, b4_pure_flag): New definition, accept three states. |
| (b4_yacc_pure_if): Rename as... |
| (b4_yyerror_arg_loc_if): This, and use b4_pure_flag. |
| * tests/actions.at (%define api.pure): Modernize. |
| * test/calc.at (Simple LALR Calculator): Modernize. |
| * tests/local.at (AT_YYERROR_ARG_LOC_IF): Adjust. |
| |
| 2012-11-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check variants without locations |
| * tests/c++.at (Variants): Support non-use of locations, and |
| check its support. |
| |
| 2012-11-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| local.at: improvements |
| * tests/local.at (AT_YYERROR_FORMALS): Make llocp const. |
| (AT_PURE_AND_LOC_IF, AT_GLR_OR_PARAM_IF): Remove, expand... |
| (AT_YYERROR_ARG_LOC_IF): Here, and use m4_join for readability. |
| |
| 2012-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use -fno-strict-aliasing with variants |
| Reported by Théophile Ranquet. |
| |
| * configure.ac (NO_STRICT_ALIAS_CXXFLAGS): New. |
| * tests/c++.at, tests/atlocal.in, examples/local.mk: Use it. |
| |
| 2012-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove leftover |
| * tests/atlocal.in: Remove duplicate handling of --compile-c-with-cxx. |
| |
| 2012-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: use %precedence instead of nonassoc when associativity is not wanted |
| * doc/bison.texi: here. |
| Formatting changes in some grammars. |
| Fix a %prec into %precedence. |
| |
| 2012-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| yacc.c: always initialize yylloc |
| scanner: issue a single error for groups of invalid characters |
| tests: formatting changes |
| doc: one of the fixes for an ambiguous grammar was ambiguous too |
| doc: fix the dangling else with precedence directives |
| doc: prefer "token" to TOKEN |
| doc: formatting changes |
| scanner: use explicit "ignore" statements |
| |
| 2012-11-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/branch-2.6' into maint |
| * origin/branch-2.6: |
| yacc.c: always initialize yylloc |
| doc: one of the fixes for an ambiguous grammar was ambiguous too |
| doc: fix the dangling else with precedence directives |
| doc: prefer "token" to TOKEN |
| doc: formatting changes |
| |
| 2012-11-23 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| yacc.c: always initialize yylloc |
| The initial location might be used if the parser starts by an empty |
| reduction, so really ensure proper initialization of the initial |
| location. The previous approach fails for PostgreSQL, which uses |
| Reported by Peter Eisentraut. |
| http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00023.html |
| With help from Théophile Ranquet. |
| |
| * data/yacc.c (b4_declare_scanner_communication_variables): Be sure |
| to initialize yylloc, even when its structure is unknown. |
| (yyparse): Simplify the call to b4_dollar_pushdef. |
| * tests/actions.at (Initial location): Check of similar pattern |
| as in the case of PostgreSQL. |
| |
| 2012-11-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| scanner: issue a single error for groups of invalid characters |
| * src/scan-gram.l: Scan groups of invalid characters together. |
| * tests/input.at, tests/named-refs.at: Adjust. |
| |
| 2012-11-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: formatting changes |
| * tests/named-refs.at: Here. |
| |
| 2012-11-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: one of the fixes for an ambiguous grammar was ambiguous too |
| Reported by Аскар Сафин. |
| http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00024.html |
| |
| * doc/bison.texi (Reduce/Reduce): Fix the resulting ambiguity using |
| precedence/associativity directives. |
| |
| 2012-11-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix the dangling else with precedence directives |
| * doc/bison.texi (Non Operators): New node. |
| (Shift/Reduce): Point to it. |
| Don't promote "%expect n" too much. |
| |
| 2012-11-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: prefer "token" to TOKEN |
| This is more readable in short examples. |
| |
| * doc/bison.texi (Shift/Reduce): here. |
| Make "win" and "lose" action more alike. |
| |
| 2012-11-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: formatting changes |
| * doc/bison.texi: Use @group. |
| |
| 2012-11-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| scanner: use explicit "ignore" statements |
| * src/scan-gram.l: here. |
| |
| 2012-11-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| tests: close files in glr-regression |
| xml: match DOT output and xml2dot.xsl processing |
| xml: factor xslt space template |
| graph: fix a memory leak |
| xml: documentation |
| output: capitalize State |
| |
| 2012-11-12 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: close files in glr-regression |
| * tests/glr-regression.at: Here. |
| |
| 2012-11-12 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| xml: match DOT output and xml2dot.xsl processing |
| Make the DOT produced by XSLT processing equivalent to the one made with the |
| --graph option. |
| |
| * data/xslt/xml2dot.xsl: Stylistic changes, and add support for reductions. |
| * doc/bison.texi (Xml): Update. |
| * src/graphviz.c (conclude_red): Minor stylistic changes to DOT internals. |
| (output_red): Swap enabled and disabled reductions output, for coherence |
| with XSLT output. |
| * src/print_graph.c (print_core): Minor stylistic change to States' output. |
| (print_actions): Swap order of output for reductions and transitions. |
| * tests/local.at (AT_BISON_CHECK_XML): Ignore differences in order. |
| * tests/output.at: Adjust to changes in DOT internals. |
| |
| 2012-11-12 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| xml: factor xslt space template |
| * data/xslt/bison.xsl (space): New, import from... |
| * data/xslt/xml2text.xsl: Here. |
| |
| 2012-11-12 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| graph: fix a memory leak |
| * src/graphviz.c (output_red): Here. |
| |
| 2012-11-12 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| xml: documentation |
| The XML output combined with the XSL Transformations provided in data/ are |
| incredibly useful, they should be documented. |
| |
| * doc/bison.texi (Xml): New node. |
| |
| 2012-11-12 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| output: capitalize State |
| * src/print.c (print_state): Here. |
| * tests/conflicts.at, tests/existing.at, tests/local.at, tests/reduce.at, |
| tests/regression.at, tests/sets.at: Adjust. |
| |
| 2012-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix syntax-check errors |
| Reported by Théophile Ranquet. |
| |
| * tests/c++.at: Use AT_PARSER_CHECK. |
| Avoid using "strcmp", which triggers an error from syntax-check. |
| |
| 2012-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: address syntax-check errors. |
| tests: use valgrind where appropriate |
| tests: use valgrind where appropriate |
| tests: don't expect $EGREP to support -w |
| tests: more possible error compiler messages for "#error" |
| |
| 2012-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: address syntax-check errors. |
| * cfg.mk: Ignore the "error" call in tests/c++.at, it is not to be |
| translated. |
| * doc/bison.texi: Fix incorrect @pxref use. |
| * po/POTFILES.in: Add missing file. |
| * src/print_graph.c: Remove useless include. |
| |
| 2012-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use valgrind where appropriate |
| Reported by Théophile Ranquet. |
| |
| * cfg.mk (sc_at_parser_check): New. |
| * tests/c++.at: Fix use of AT_CHECK vs. AT_PARSER_CHECK. |
| |
| 2012-11-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/branch-2.6' into maint |
| * origin/branch-2.6: |
| tests: use valgrind where appropriate |
| tests: don't expect $EGREP to support -w |
| |
| 2012-11-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use valgrind where appropriate |
| Reported by Théophile Ranquet. |
| |
| * tests/glr-regression.at: Rewrite some test cases so that AT_PARSER_CHECK, |
| which runs valgrind, is exposed with the parser, not with "echo". |
| * tests/local.at, tests/regression.at, tests/headers.at: |
| Use AT_PARSER_CHECK for generated parsers. |
| |
| 2012-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: don't expect $EGREP to support -w |
| Does not work on Solaris 10. Reported by Dennis Clarke. |
| http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00009.html |
| * tests/headers.at (Several parsers): Use Perl instead. |
| While at it, run it only once, on all the generated headers. |
| Adjust to YY_NULL be defined in position.hh. |
| |
| 2012-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: more possible error compiler messages for "#error" |
| * tests/synclines.at (AT_SYNCLINES_COMPILE): Adjust for Clang. |
| Verified with GCC 4.0, 4.2 to 4.8, and Clang 2.9, 3.2: none skip. |
| |
| 2012-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * origin/maint: |
| regen |
| maint: post-release administrivia |
| version 2.6.5 |
| regen |
| tests: syntax-check |
| tests: beware of compilers that do not support POSIXLY_CORRECT |
| gnulib: update |
| |
| 2012-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-11-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'branch-2.6' into maint |
| * origin/branch-2.6: |
| maint: post-release administrivia |
| version 2.6.5 |
| regen |
| tests: syntax-check |
| tests: beware of compilers that do not support POSIXLY_CORRECT |
| gnulib: update |
| |
| 2012-11-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-11-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6.5 |
| * NEWS: Record release date. |
| |
| 2012-11-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-11-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: syntax-check |
| * tests/actions.at: Fix typo. |
| |
| 2012-11-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: beware of compilers that do not support POSIXLY_CORRECT |
| Running "maintainer-release-check" on OS X with Clang 2.9 fails, |
| because "clang-mp-2.9 -o test -g test.c" launches "/usr/bin/dsymutil |
| test -o test.dSYM" which fails with "error: unable to open executable |
| '-o'". |
| |
| * m4/c-working.m4 (BISON_CHECK_WITH_POSIXLY_CORRECT) |
| (BISON_C_COMPILER_POSIXLY_CORRECT): New. |
| * configure.ac: Use the latter. |
| * tests/atlocal.in (POSIXLY_CORRECT_IS_EXPORTED): New. |
| * tests/local.at (AT_BISON_CHECK_WARNINGS_): Use it instead of computing its |
| value each time. |
| (AT_QUELL_VALGRIND): Skip tests that cannot work because of compilers |
| that do not support POSIXLY_CORRECT. |
| |
| 2012-11-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: (24 commits) |
| tests: calc: modernize the use of locations |
| tests: remove useless location initializations |
| lalr1.cc: always initialize yylval. |
| tests: check that C and C++ objects can be linked together. |
| yacc.c: also disable -Wuninitialized. |
| glr.cc, yacc.c: initialize yylloc properly |
| yacc.c, glr.c: a better YY_LOCATION_PRINT |
| yacc.c: simplify initialization |
| doc: formatting changes |
| c++: fix position operator signatures |
| tests: remove useless location initialization. |
| tests: fix locations in C |
| tests: handle %parse-param in the generated yyerror |
| tests: simplifications |
| grammars: fix display of nul character in error message |
| tests: sort |
| tests: cosmetic changes |
| comment changes |
| autoconf: update |
| gnulib: update |
| ... |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'branch-2.6' into maint |
| * origin/branch-2.6: (24 commits) |
| tests: calc: modernize the use of locations |
| tests: remove useless location initializations |
| lalr1.cc: always initialize yylval. |
| tests: check that C and C++ objects can be linked together. |
| yacc.c: also disable -Wuninitialized. |
| glr.cc, yacc.c: initialize yylloc properly |
| yacc.c, glr.c: a better YY_LOCATION_PRINT |
| yacc.c: simplify initialization |
| doc: formatting changes |
| c++: fix position operator signatures |
| tests: remove useless location initialization. |
| tests: fix locations in C |
| tests: handle %parse-param in the generated yyerror |
| tests: simplifications |
| grammars: fix display of nul character in error message |
| tests: sort |
| tests: cosmetic changes |
| comment changes |
| autoconf: update |
| gnulib: update |
| ... |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: calc: modernize the use of locations |
| * tests/calc.at: Don't initialize the location, let the parser |
| do it. |
| Use a $printer. |
| Change some testing input to be easier to distinguish (instead of always |
| "0 0" for instance). |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove useless location initializations |
| * tests/actions.at, tests/calc.at: here. |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: always initialize yylval. |
| * data/lalr1.cc: here. |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check that C and C++ objects can be linked together. |
| * tests/local.at (AT_SKIP_IF_CANNOT_LINK_C_AND_CXX): New. |
| * tests/headers.at (Several parsers): Use it. |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: also disable -Wuninitialized. |
| * data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): For some versions |
| of GCC, -Wmaybe-uninitialized alone does not suffice. |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc, yacc.c: initialize yylloc properly |
| There are several issues to address here. One is that yylloc should |
| be initialized when possible. Another is that the push parser needs |
| to update yypushed_loc when the user modified it. And if the parser |
| starts by a reduction of an empty, it uses the first location on the |
| stack, which, therefore, must also be initialized to this initial |
| location. |
| |
| This is getting complex, especially since because initializing a |
| global (impure interface) is different from initializing a local |
| variable. To simplify, the local yylloc is not initialized during its |
| definition. |
| |
| * data/c.m4 (b4_yyloc_default_define): Replace by... |
| (b4_yyloc_default): this. |
| Adjust dependencies. |
| * data/glr.cc: Initialize yylloc. |
| * data/yacc.c (b4_declare_scanner_communication_variables): |
| Initialize yylloc during its definition. |
| Don't define yyloc_default. |
| (yypush_parse): The location formal is not const, as we might |
| initialize it. |
| (yyparse): Define yyloc_default. |
| Use it before running the user initial action. |
| Possibly update the first location on the stack, and the pushed |
| location after the user initial action. |
| * tests/actions.at (Initial locations): Check that the initial |
| location is correct. |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c, glr.c: a better YY_LOCATION_PRINT |
| * data/c.m4 (b4_yy_location_print_define): New. |
| Now issues "short" locations, e.g., "1.1" instead of "1.1-1.1". |
| Was initially a function, but then we face "static but unused" |
| warnings. |
| Simpler as a macro. |
| * tests/local.at, data/glr.c, data/yacc.c: Use it instead of duplicating. |
| * tests/actions.at: Adjust expectations. |
| |
| 2012-11-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: simplify initialization |
| * data/yacc.c: Fuse the initializations of yyssp, yyss and the like. |
| Remove an obsolete comment: we do initialize these initial stack |
| members (in some cases). |
| |
| 2012-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: formatting changes |
| * doc/bison.texi: In a pointer type. |
| |
| 2012-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: fix position operator signatures |
| * data/location.cc (operator+=, operator-=): Remove const from return |
| type. |
| |
| 2012-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove useless location initialization. |
| * tests/glr-regression.at: here. |
| glr.c does initialize yylloc. |
| |
| 2012-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix locations in C |
| * tests/local.at (AT_YYERROR_DEFINE): Don't display the end of the location |
| if it is not after its beginning. |
| * tests/actions.at, tests/cxx-type.at: Adjust the expected output. |
| |
| 2012-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: handle %parse-param in the generated yyerror |
| * tests/local.at (AT_PARSE_PARAMS): New. |
| (AT_YYERROR_FORMALS, AT_YYERROR_DEFINE): Use it to add the parse-param |
| to yyerror. |
| * tests/calc.at, tests/regression.at: Use AT_YYERROR_DEFINE and |
| AT_YYERROR_DECLARE, now that they handle properly the parse-params. |
| Be sure to let AT_BISON_OPTION_PUSHDEFS now what parse-params are used. |
| |
| 2012-11-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: simplifications |
| * tests/actions.at (Exotic Dollars): Formatting changes. |
| Use AT_FULL_COMPILE. |
| (AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove useless initialization of @$. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: rename lex_symbol as api.token.constructor |
| * data/bison.m4 (b4_lex_symbol_if): Rename as... |
| (b4_token_ctor_if): this. |
| Depend upon api.token.constructor. |
| * data/c++.m4, data/lalr1.cc: Adjust. |
| * doc/bison.texi: Fix all the occurrences of lex_symbol. |
| * etc/bench.pl.in: Adjust. |
| * examples/variant.yy: Likewise. |
| |
| * tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): |
| Handle AT_TOKEN_CTOR_IF. |
| * tests/c++.at: Adjust to using api.token.constructor and AT_TOKEN_CTOR_IF. |
| Simplify the test of both build call styles. |
| (AT_CHECK_VARIANTS): Rename as... |
| (AT_TEST): this. |
| And undef when done. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| examples: simplify/improve |
| * examples/variant.yy: Put yylex in yy::, and simplify accordingly. |
| Minor formatting changes. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| bison.m4: support b4_*_if macros whose name differ from their variable |
| * data/bison.m4 (b4_percent_define_if_define_, b4_percent_define_if_define): |
| Accept a second argument. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| grammars: fix display of nul character in error message |
| Reported by Marc Mendiola. |
| http://lists.gnu.org/archive/html/help-bison/2012-10/msg00017.html |
| |
| * gnulib: Update to get quote_mem. |
| * src/scan-gram.l: Use it. |
| * tests/input.at (Invalid inputs): Additional checks. |
| * tests/named-refs.at: Likewise. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: sort |
| * tests/regression.at (Invalid inputs, Invalid inputs with {}): Move to... |
| * tests/input.at: here, for consistency. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: cosmetic changes |
| * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): Improve the |
| displayed title. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| comment changes |
| * data/lalr1.cc: here. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| autoconf: update |
| There are comment changes only in the files we use. |
| |
| 2012-11-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-10-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: initialize yylval and yylloc. |
| When generating a pure push parser, the initialization of yylval and |
| yylloc may not be visible to the compiler. With warnings enabled, GCC |
| 4.3.6, 4.4.7, 4.5.4, and 4.6.3 report uninitialized uses of |
| yylval/yylloc. Using local pragmas to disable these warnings is not |
| supported before 4.6, and 4.6 does not support it properly. So |
| initialize yylval and yylloc at their definition. Reported by Peter |
| Simons. See |
| http://lists.gnu.org/archive/html/bison-patches/2012-10/msg00133.html |
| |
| * data/c.m4 (b4_yyloc_default_define): New. |
| * data/yacc.c: Use it when locations are requested. |
| (YYLVAL_INITIALIZE): Replace by... |
| (YY_INITIAL_VALUE): this. |
| (yyparse): Initialize yylloc and yylval. |
| Therefore, remove the initialization of yylloc's field. |
| * data/glr.c: Likewise. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| graphs: fix spacing refactoring |
| * src/print_graph.c (print_lhs, print_core): Here. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: make deprecation tests more specific |
| * tests/input.at (Deprecated directives): Here, don't generate unrelated errors |
| or warnings. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: fix AT_BISON_CHECK_WARNINGS_ stderr rewriting |
| * tests/input.at (Deprecated directives): Avoid spurious error. |
| * tests/locat.at (AT_BISON_CHECK_WARNINGS): Adjust for recent changes. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| scan-skel.l: consider m4 notes as related to "complaint" errors |
| * src/scan-skel.l (flag): Here. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| warnings: distinguish context information based on warning type |
| * src/scan-code.l (show_sub_message, show_sub_messages): Take a new warnings |
| argument. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| warnings: fix early exit of warnings treated as errors |
| Treating warnings as errors caused Bison to exit earlier than needed, making it |
| hide warnings that would have been printed had -Werror not been set. |
| |
| Also, fix a bug that caused some context information of errors to not be |
| shown. |
| |
| * src/complain.c (complaint_issued): Rename as... |
| (complaint_status): This, and change its type from boolean to |
| * src/complain.h (err_status): This, new enumeration. |
| * src/main.c (main): Adjust (only finish early if an actual complaint was |
| risen, not a mere warning treated an error). |
| * src/reader.c: Adjust. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| tests: reindent for legibility |
| * tests/local.at (AT_BISON_CHECK_WARNINGS_): Here. |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix Texinfo compilation |
| * doc/local.mk: fix dependencies. |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: (46 commits) |
| doc: minor style change |
| maint: use gendocs's new -I option |
| regen |
| yacc.c: do not define location support when not using locations |
| maint: be compilable with GCC 4.0 |
| tests: address a warning from GCC 4.4 |
| tests: don't use options that Clang does not support |
| tests: restore the tests on -Werror |
| regen |
| parse-gram: update the Bison interface |
| fix comment |
| maint: post-release administrivia |
| version 2.6.4 |
| regen |
| 2.6.4: botched 2.6.3 |
| maint: post-release administrivia |
| version 2.6.3 |
| gnulib: update |
| tests: check %no-lines |
| NEWS: warnings with clang |
| ... |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'branch-2.6' into maint |
| * origin/branch-2.6: |
| regen |
| yacc.c: do not define location support when not using locations |
| maint: be compilable with GCC 4.0 |
| tests: address a warning from GCC 4.4 |
| tests: don't use options that Clang does not support |
| tests: restore the tests on -Werror |
| regen |
| parse-gram: update the Bison interface |
| fix comment |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: minor style change |
| * doc/figs/example-reduce.txt: here. |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: use gendocs's new -I option |
| * gnulib: Update gendocs. |
| * cfg.mk (gendocs_options_): New. |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: don't use _Pragma GCC diagnostic with 4.6 |
| Reported by Peter Simons. |
| http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00033.html |
| |
| * data/yacc.c (b4_declare_scanner_communication_variables): 4.7 |
| seems fine though. |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: do not define location support when not using locations |
| * data/yacc.c (YYLLOC_DEFAULT, YYRHSLOC): Don't define when not |
| using locations. |
| |
| 2012-10-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: be compilable with GCC 4.0 |
| The "shadows a global declaration" warning in GCC 4.0 was a bit |
| annoying. It does not like that a type name be used in a prototype of |
| a function (not the implementation, just the declaration): |
| |
| In file included from src/LR0.c:38: |
| src/reader.h:56: warning: declaration of 'named_ref' shadows a |
| global declaration |
| src/named-ref.h:35: warning: shadowed declaration is here |
| |
| It does not like either when a global variable name is used in a |
| prototype. Flex 2.5.37 generates this prototype: |
| |
| void gram_set_debug (int debug_flag ); |
| |
| * src/getargs.h, src/getargs.c (debug_flag): Rename as... |
| (debug): this. |
| Adjust dependencies. |
| * src/reader.h: Don't use "named_ref" as a formal argument name. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| misc: document TESTSUITEFLAGS in README-hacking |
| * README-hacking: Document -j and -k flags. |
| |
| 2012-10-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| deprecation: add tests |
| * tests/input.at (Deprecated directives warn, Non-deprecated |
| directives don't, Unput doesn't mess up locations): New tests. |
| |
| 2012-10-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: address a warning from GCC 4.4 |
| 236. torture.at:465: testing Exploding the Stack Size with Alloca ... |
| ../../../tests/torture.at:474: bison -o input.c input.y |
| ../../../tests/torture.at:474: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS |
| stderr: |
| cc1: warnings being treated as errors |
| input.y: In function 'main': |
| input.y:60: error: 'status' may be used uninitialized in this function |
| |
| * tests/torture.at (AT_DATA_STACK_TORTURE): Initial status to avoid |
| the previous error. |
| |
| 2012-10-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: don't use options that Clang does not support |
| * configure.ac (WARN_CFLAGS, WARN_CXXFLAGS): Do not include options |
| that Clang does not support. |
| |
| 2012-10-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: restore the tests on -Werror |
| When run as /bin/sh, Bash sets the shell variable POSIXLY_CORRECT to |
| y. The test suite checks for the envvar POSIXLY_CORRECT to turn of |
| some tests not supported in POSIX mode. Restore these tests. |
| |
| Reported by the Hydra build farm, from Rob Vermaas. |
| |
| * tests/local.at (AT_BISON_CHECK_WARNINGS_): Check the envvar |
| POSIXLY_CORRECT, not the shell variable. |
| |
| 2012-10-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| parse-gram: update the Bison interface |
| * src/parse-gram.y (%pure-parser, %name-prefix): Replace with... |
| (%define api.pure, %define api.prefix) |
| * src/location.h, src/scan-gram.h: Adjust to api.prefix. |
| |
| 2012-10-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix comment |
| * data/c.m4 (b4_YYDEBUG_define): here. |
| |
| 2012-10-24 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-24 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| deprecation: issue warnings in scanner |
| * src/parse-gram.y: Move the handling of (three) deprecated constructs ... |
| * src/scan-gram.l: ...Here, and issue warnings. |
| (DEPRECATED): New. |
| |
| 2012-10-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'branch-2.6' into maint |
| * origin/branch-2.6: |
| maint: post-release administrivia |
| version 2.6.4 |
| regen |
| 2.6.4: botched 2.6.3 |
| |
| 2012-10-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-10-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6.4 |
| * NEWS: Record release date. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| 2.6.4: botched 2.6.3 |
| * NEWS: here. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch '2.6.3' into maint |
| * 2.6.3: (22 commits) |
| maint: post-release administrivia |
| version 2.6.3 |
| gnulib: update |
| tests: check %no-lines |
| NEWS: warnings with clang |
| warnings: avoid warnings from clang |
| tests: no longer disable -O compiler options |
| yacc.c: initialize yylval in pure-parser mode |
| skeletons: style changes |
| tests: minor improvements |
| tests: use $PERL instead of perl |
| build: look for Perl in configure. |
| tests: fix sed portability issues |
| tests: diff -u is not portable |
| maint: word changes |
| lalr1.cc: fix test suite portability |
| maint: fix an erroneous include |
| tests: check that headers are self contained |
| doc: add missing documentation for --report |
| headers: move CPP guards into YY_*_INCLUDED to avoid collisions |
| ... |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6.3 |
| * NEWS: Record release date. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check %no-lines |
| * tests/synclines.at: here. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: warnings with clang |
| * NEWS: here. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| warnings: avoid warnings from clang |
| Fix the following warning |
| |
| parse-gram.c:2078:14: error: equality comparison with extraneous parentheses |
| [-Werror,-Wparentheses-equality] |
| if (((yyn) == (-91))) |
| ~~~~~~^~~~~~~~ |
| parse-gram.c:2078:14: note: remove extraneous parentheses around the |
| comparison to silence this warning |
| if (((yyn) == (-91))) |
| ~ ^ ~ |
| parse-gram.c:2078:14: note: use '=' to turn this equality comparison into |
| an assignment |
| if (((yyn) == (-91))) |
| ^~ |
| = |
| 1 error generated. |
| |
| and the following one: |
| |
| input.cc:740:1: error: function declared 'noreturn' should not return |
| [-Werror,-Winvalid-noreturn] |
| static void yyMemoryExhausted (yyGLRStack* yystackp) |
| __attribute__ ((__noreturn__)); |
| static void |
| yyMemoryExhausted (yyGLRStack* yystackp) |
| { |
| YYLONGJMP (yystackp->yyexception_buffer, 2); |
| } |
| ^ |
| 1 warning and 1 error generated. |
| |
| This is Apple clang version 3.1 (tags/Apple/clang-318.0.61). |
| |
| * data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B) |
| to avoid this warning. |
| Any reasonable compiler should generate the same code. |
| * src/uniqstr.h (UNIQSTR_EQ): Likewise. |
| * data/glr.c (LONGJMP): abort after longjmp to pacify clang. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: no longer disable -O compiler options |
| Tests are running without -O since |
| f377f69fec28013c79db4efe12bbb9d48987fb2c because some warnings (about |
| yylval not being initialized) show only when GCC is given -O2. The |
| previous patch fixes the warnings. Run the test suite with compiler |
| options unmodified. |
| |
| * tests/atlocal.in (O0CFLAGS, O0CXXFLAGS): Remove, use CFLAGS and |
| CXXFLAGS. |
| |
| 2012-10-22 Paul Eggert <eggert@cs.ucla.edu> |
| |
| yacc.c: initialize yylval in pure-parser mode |
| See http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00024.html |
| (spreading over September and October). |
| |
| * data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN) |
| (YY_IGNORE_MAYBE_UNINITIALIZED_END, YYLVAL_INITIALIZE): |
| New macros. Use them to suppress an unwanted GCC diagnostic. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: style changes |
| * data/yacc.c, data/glr.c: Prefer Title case for (CPP) macro arguments. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: minor improvements |
| * tests/c++.at: Space changes. |
| Use AT_YYERROR_DEFINE. |
| * tests/local.at (AT_YYERROR_DEFINE): Issue errors on unknown languages. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use $PERL instead of perl |
| * tests/atlocal.in (PERL): New. |
| Sort. |
| * tests/calc.at, tests/input.at, tests/local.at, tests/regression.at, |
| * tests/skeletons.at, tests/synclines.at, tests/torture.at: here. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: look for Perl in configure. |
| Bison uses "/usr/bin/perl" or "perl" in several places, and it does |
| not appear to be a problem. But, at least to make it simpler to |
| change PERL on the make command line, check for perl in configure. |
| |
| * configure.ac (PERL): New. |
| * doc/Doxyfile.in, doc/Makefile.am, tests/bison.in: Use it. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix sed portability issues |
| Reported by Didier Godefroy, |
| <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00005.html>. |
| |
| * tests/calc.at (AT_CHECK_SPACES): Use Perl. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: diff -u is not portable |
| Reported by Didier Godefroy |
| <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00006.html>. |
| |
| * tests/existing.at (AT_LALR1_DIFF_CHECK): Skip if diff -u does not |
| work. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: word changes |
| * README-hacking (Typical errors): Improve wording. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: fix test suite portability |
| Reported by Rob Vermaas' Hydra build farm on x86_64-darwin 10.2.0 with |
| G++ 4.6.3. |
| |
| * tests/headers.at (Several parsers): Include AT_DATA_SOURCE_PROLOGUE |
| in the files to compile. |
| * data/location.cc: Do not include twice string and iostream (once |
| by position.hh, and then by location.hh). |
| * README-hacking (Typical errors): Some hints for other maintainers. |
| |
| 2012-10-22 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| maint: fix an erroneous include |
| This fixes test 130 (Several parsers). |
| |
| * data/location.cc: Include <iostream> rather than <iosfwd> since |
| we really need << on strings for instance. |
| * NEWS: Document this. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check that headers are self contained |
| Reported by Alexandre Duret-Lutz. |
| |
| * tests/headers.at (Several parsers): here. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: add missing documentation for --report |
| * doc/bison.texi (Bison Options): Document --report's "solved", "all", |
| and "none". |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| headers: move CPP guards into YY_*_INCLUDED to avoid collisions |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00016.html>. |
| |
| * data/c.m4 (b4_cpp_guard): Prepend YY_ and append _INCLUDED. |
| * tests/headers.at: Adjust. |
| * NEWS, doc/bison.texi: Document. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| minor changes. |
| * NEWS: Word changes. |
| * doc/bison.texi: Spell check. |
| Fix minor issues. |
| * tests/headers.at: Comment and formatting changes. |
| |
| 2012-10-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-10-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-10-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| xml: slight improvement of the DOT output |
| This was completely forgotten... Nothing about XML is actually |
| documented... |
| |
| * data/xslt/xml2dot.xsl: Use boxes, and Courier font. |
| |
| 2012-10-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: check for dot before using it |
| * configure.ac: here. |
| * doc/Makefile.am: Use $(DOT). |
| Ship the generated files, to spare the user the need for Graphviz. |
| |
| 2012-10-18 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: documentation |
| Note that 'make web-manual' fails. |
| |
| * NEWS: Document these changes. |
| * doc/Makefile.am: Adjust to generate example files. |
| * doc/bison.texi: Add a Graphviz section after "Understanding::", the section |
| describing the .output file, because these are similar. |
| * doc/figs/example-reduce.dot, doc/figs/example-reduce.txt, |
| doc/figs/example-shift.dot, doc/figs/example-shift.txt: New, minimal |
| examples to illustrate the documentation. |
| |
| 2012-10-18 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: add tests, introducing -k graph |
| * tests/output.at (AT_TEST): New. |
| Use it to add 6 --graph tests. |
| |
| 2012-10-18 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: change the output format of the rules |
| Use something similar to the report file. |
| |
| * src/print_graph.c (print_lhs): New, obstack equivalent of rule_lhs_print. |
| (print_core): Use here. |
| |
| 2012-10-18 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: style changes |
| * src/graphviz.c (start_graph): Use courier font. |
| (conclude_red): Use commas to separate attributes. Show the acceptation |
| as a special reduction, with a blue color and an "Acc" label. Show the |
| lookahead tokens between square brackets. |
| (output_red): No longer label default reductions. |
| * src/print_graph.c (print_core): Refactor spacing, and print an |
| additional space between a rule's rhs and its lookahead tokens. Also, |
| capitalize "State". |
| (print_actions): Style, move a declaration. |
| |
| 2012-10-18 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: address an issue with R/R conflicts |
| All disabled reductions should now be shown as such. |
| |
| * src/graphviz.c (output_red): Here. |
| (conclude_red): New. |
| |
| 2012-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: spell check |
| * NEWS: here. |
| |
| 2012-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * origin/maint: |
| java: use api.location.type and api.position.type |
| |
| 2012-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| variables: use singular in %define variable names |
| See http://lists.gnu.org/archive/html/bison-patches/2012-02/msg00045.html |
| |
| * doc/bison.texi, src/lalr.c, src/main.c, src/muscle-tab.c, |
| * src/print.c, src/reader.c, src/tables.c, tests/conflicts.at, |
| * tests/input.at, tests/reduce.at: |
| s/lr.default-reductions/lr.default-reduction/ |
| s/lr.keep-unreachable-states/lr.keep-unreachable-state/. |
| * NEWS: Document. |
| |
| 2012-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| java: fixes |
| * data/java.m4: Remove stray M4 characters. |
| |
| 2012-10-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.tokens.prefix -> api.token.prefix |
| See |
| http://lists.gnu.org/archive/html/bison-patches/2012-02/msg00045.html |
| Note that api.tokens.prefix has not been released, yet. |
| |
| * NEWS, data/bison.m4, doc/bison.texi, tests/c++.at, |
| * tests/calc.at, tests/java.at, tests/local.at: Do it. |
| * src/muscle-tab.c (muscle_percent_variable_update): Ensure |
| backward compatibility. |
| |
| 2012-10-15 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| scan-skel.l: shift complain_args arguments |
| Because argv[0] is never used, shift it out from the argument list. |
| |
| * src/complain.c (complain_args): Here. |
| * src/scan-skel.l (at_complain): Adjust argv and argc. |
| |
| 2012-10-15 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| scan-skel.l: formatting changes |
| * src/scan-skel.l (fail_for_at_directive_too_few_args): Here. |
| |
| 2012-10-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| java: use api.location.type and api.position.type |
| * data/java.m4: here. |
| * NEWS, doc/bison.texi, tests/java.at: Adjust. |
| |
| 2012-10-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * origin/maint: |
| tests: check %no-lines |
| tests: minor simplification |
| graphs: stylistic changes. |
| graphs: minor style changes |
| graphs: show reductions |
| graphs: style: prefix state number with "state" |
| graphs: style: use left justification for states |
| graphs: style: prefix rules and change shapes |
| obstack: import obstack_finish0 from master |
| c++: api.location.type |
| muscles: a function for backward compatibility |
| maint: more macros |
| |
| 2012-10-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check %no-lines |
| * tests/synclines.at: here. |
| |
| 2012-10-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: minor simplification |
| * tests/headers.at (Several parsers): Use *.y even for C++. |
| |
| 2012-10-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| graphs: stylistic changes. |
| * src/graphviz.c (output_red): Comment and formatting changes. |
| |
| 2012-10-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| graphs: minor style changes |
| * src/graphviz.c (output_red): Fix C90 issues. |
| Reduce variable scopes. |
| |
| 2012-10-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| graphs: show reductions |
| * src/graphviz.c (output_red): New, show reductions on the graph. |
| (no_reduce_bitset_init): New, initialize a bitset. |
| (print_token): New, print a lookahead token. |
| (escape): New, print "foo" as \"foo\" because Dot doesn't like quotes within |
| a label. |
| |
| * src/graphviz.h : Adjust. |
| * src/print_graph.c (print_actions): Call output_red here. |
| |
| 2012-10-11 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: style: prefix state number with "state" |
| * src/print_graph.c (print_core): Here. |
| |
| 2012-10-11 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| graphs: style: use left justification for states |
| The label text of nodes is centered "by default" (by the use of '\n' as |
| a line feed). This gives bad readability to the grammar rules shown in |
| state nodes, a left justification is much nicer. This is done by using '\l' |
| as the line feed. |
| |
| In order to allow \l in the DOT file, changes to the quoting system seem |
| necessary. |
| |
| * src/print_graph.c (print_core): Escape tokens here, instead of... |
| * src/graphviz.c (output_node): Here... |
| (escape): Using this, new. |
| |
| 2012-10-11 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| graphs: style: prefix rules and change shapes |
| * src/graphviz.c (start_graph): Use box rather than ellipsis. |
| * src/print_graph.c (print_core): Prefix rules with their number. |
| |
| 2012-10-11 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| obstack: import obstack_finish0 from master |
| * src/system.h (obstack_finish0): New. |
| |
| 2012-10-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * origin/maint: |
| NEWS: warnings with clang |
| warnings: avoid warnings from clang |
| tests: no longer disable -O compiler options |
| yacc.c: initialize yylval in pure-parser mode |
| skeletons: style changes |
| lalr1.cc: document exception safety |
| lalr1.cc: check exception safety of error handling |
| lalr1.cc: check (and fix) %printer exception safety |
| lalr1.cc: check (and fix) %initial-action exception safety |
| lalr1.cc: fix exception safety |
| lalr1.cc: check exception safety. |
| lalr1.cc: indentation fixes. |
| lalr1.cc: don't leave macros define to nothing |
| tests: minor improvements |
| tests: use $PERL instead of perl |
| build: look for Perl in configure. |
| tests: fix sed portability issues |
| tests: diff -u is not portable |
| |
| 2012-10-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: api.location.type |
| This feature was introduced in 95a2de5695670ae0df98cb3c42141cad549f0204 |
| (which is part of 2.5), but not documented. Give it a proper name, and |
| make it public. |
| |
| * data/c++.m4, data/lalr1.cc, data/glr.cc, data/java.m4: Use |
| api.location.type instead of location_type. |
| * src/muscle-tab.c (muscle_percent_variable_update): Map the latter to |
| the former. |
| * tests/local.at: Adjust. |
| * tests/calc.at: Use api.location.type. |
| Leave tests/java.at with location_type, at least for the time being, |
| to cover both names. |
| * doc/bison.texi: Document api.location.type. |
| (User Defined Location Type): New. |
| * NEWS: Update. |
| |
| 2012-10-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscles: a function for backward compatibility |
| Based on commit 171ad99d6421935a278656be6dc7161591835d00 from master. |
| |
| * src/muscle-tab.c (muscle_percent_variable_update): New. |
| (muscle_percent_define_insert): Use it. |
| Define the variables with their initial value. |
| |
| 2012-10-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: more macros |
| * src/output.c (ARRAY_CARDINALITY): Move to... |
| * src/system.h: here. |
| (STREQ, STRNEQ): new. |
| |
| 2012-10-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: warnings with clang |
| * NEWS: here. |
| |
| 2012-10-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| warnings: avoid warnings from clang |
| Fix the following warning |
| |
| parse-gram.c:2078:14: error: equality comparison with extraneous parentheses |
| [-Werror,-Wparentheses-equality] |
| if (((yyn) == (-91))) |
| ~~~~~~^~~~~~~~ |
| parse-gram.c:2078:14: note: remove extraneous parentheses around the |
| comparison to silence this warning |
| if (((yyn) == (-91))) |
| ~ ^ ~ |
| parse-gram.c:2078:14: note: use '=' to turn this equality comparison into |
| an assignment |
| if (((yyn) == (-91))) |
| ^~ |
| = |
| 1 error generated. |
| |
| and the following one: |
| |
| input.cc:740:1: error: function declared 'noreturn' should not return |
| [-Werror,-Winvalid-noreturn] |
| static void yyMemoryExhausted (yyGLRStack* yystackp) |
| __attribute__ ((__noreturn__)); |
| static void |
| yyMemoryExhausted (yyGLRStack* yystackp) |
| { |
| YYLONGJMP (yystackp->yyexception_buffer, 2); |
| } |
| ^ |
| 1 warning and 1 error generated. |
| |
| This is Apple clang version 3.1 (tags/Apple/clang-318.0.61). |
| |
| * data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B) |
| to avoid this warning. |
| Any reasonable compiler should generate the same code. |
| * src/uniqstr.h (UNIQSTR_EQ): Likewise. |
| * data/glr.c (LONGJMP): abort after longjmp to pacify clang. |
| |
| 2012-10-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: no longer disable -O compiler options |
| Tests are running without -O since |
| f377f69fec28013c79db4efe12bbb9d48987fb2c because some warnings (about |
| yylval not being initialized) show only when GCC is given -O2. The |
| previous patch fixes the warnings. Run the test suite with compiler |
| options unmodified. |
| |
| * tests/atlocal.in (O0CFLAGS, O0CXXFLAGS): Remove, use CFLAGS and |
| CXXFLAGS. |
| |
| 2012-10-08 Paul Eggert <eggert@cs.ucla.edu> |
| |
| yacc.c: initialize yylval in pure-parser mode |
| See http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00024.html |
| (spreading over September and October). |
| |
| * data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN) |
| (YY_IGNORE_MAYBE_UNINITIALIZED_END, YYLVAL_INITIALIZE): |
| New macros. Use them to suppress an unwanted GCC diagnostic. |
| |
| 2012-10-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: style changes |
| * data/yacc.c, data/glr.c: Prefer Title case for (CPP) macro arguments. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: document exception safety |
| * NEWS: here. |
| * doc/bison.texi (Destructor Decl, C++ Parser Interface): and there. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: check exception safety of error handling |
| * tests/c++.at (Exception safety): Don't use swap here, it |
| is useless. |
| Cover more test cases: yyerror, YYERROR, YYABORT, and |
| error recovery. |
| (Object): Instead of just keeping a counter of instances, keep |
| a list of them. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: check (and fix) %printer exception safety |
| * tests/c++.at (Exception safety): Let the parser support the --debug |
| option. |
| On 'p', throw an exception from the %printer. |
| * data/lalr1.cc (yyparse): Do not display the values we discard, as it |
| uses %printer, which might have thrown the exception. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: check (and fix) %initial-action exception safety |
| * data/lalr1.cc: Check size > 1, rather than size != 1, when cleaning |
| the stack, as at the beginning, size is 0. |
| * tests/c++.at (Exception safety): Check exception safety in |
| %initial-action. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: fix exception safety |
| lalr1.cc does not reclaim its memory when ended by an exception. |
| |
| Reported by Oleksii Taran: |
| http://lists.gnu.org/archive/html/help-bison/2012-09/msg00000.html |
| |
| * data/lalr1.cc (yyparse): Protect the whole yyparse by a try-catch |
| block that cleans the stack and the lookahead. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: check exception safety. |
| * tests/c++.at (Exception safety): New. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: indentation fixes. |
| * data/lalr1.cc (yyparse): here. |
| Untabify a block of code. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: don't leave macros define to nothing |
| * data/lalr1.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT, YY_STACK_PRINT): |
| Define to something so that, for instance, "if (foo) YY_SYMBOL_PRINT" |
| is valid even when !YYDEBUG. |
| |
| 2012-10-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: minor improvements |
| * tests/c++.at: Space changes. |
| Use AT_YYERROR_DEFINE. |
| * tests/local.at (AT_YYERROR_DEFINE): Issue errors on unknown languages. |
| |
| 2012-10-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use $PERL instead of perl |
| * tests/atlocal.in (PERL): New. |
| Sort. |
| * tests/calc.at, tests/input.at, tests/local.at, tests/regression.at, |
| * tests/skeletons.at, tests/synclines.at, tests/torture.at: here. |
| |
| 2012-10-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: look for Perl in configure. |
| Bison uses "/usr/bin/perl" or "perl" in several places, and it does |
| not appear to be a problem. But, at least to make it simpler to |
| change PERL on the make command line, check for perl in configure. |
| |
| * configure.ac (PERL): New. |
| * doc/Doxyfile.in, doc/Makefile.am, tests/bison.in: Use it. |
| |
| 2012-10-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix sed portability issues |
| Reported by Didier Godefroy, |
| <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00005.html>. |
| |
| * tests/calc.at (AT_CHECK_SPACES): Use Perl. |
| |
| 2012-10-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: diff -u is not portable |
| Reported by Didier Godefroy |
| <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00006.html>. |
| |
| * tests/existing.at (AT_LALR1_DIFF_CHECK): Skip if diff -u does not |
| work. |
| |
| 2012-10-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * origin/maint: |
| maint: word changes |
| lalr1.cc: fix test suite portability |
| maint: fix an erroneous include |
| tests: check that headers are self contained |
| doc: add missing documentation for --report |
| |
| 2012-10-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| scan-skel: use the scanner to reject all invalid directives |
| * src/scan-skel.l: Use a simpler and more consistent pattern escaping |
| scheme. |
| Catch all the invalid directives here by just removing the previous |
| catch-all-but-alphabetical rule. |
| |
| 2012-10-04 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| scan-skel: recognize the @directives directly in scanner |
| * src/scan-skel.l (at_directive, at_init): New. |
| (at_ptr): New, function pointer used to call the right at_directive |
| function (at_basename, etc.). |
| (outname): Rename as... |
| (out_name): this, for consistency with out_lineno. |
| |
| 2012-10-04 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| scan-skel: split @directive functions |
| * src/scan-skel.l (at_directive_perform): Split as... |
| (at_basename, at_complain, at_output): these. |
| |
| 2012-10-04 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| errors: support indented context info in m4 macros |
| * TODO: Address the issue, so remove it. |
| * data/bison.m4: Use b4_error with [[note]] rather than a complain_at |
| for context information. |
| * src/complain.c (complain_args): Take an additional argument, an |
| indentation pointer, to allow the dispatching of context information. |
| * src/complain.h (complain_args): Adjust prototype. |
| * src/scan-skel.l (at_directive_perform): Recognize the new @note mark. |
| * tests/input.at: Adjust. |
| |
| 2012-10-04 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| errors: factor b4_error @directives |
| Instead of @complain, @warn, and @fatal, use a unique @complain |
| directive. This directive's first argument is "complain", "warn", etc. |
| |
| * data/bison.m4 (m4_error): Here. |
| * src/scan-skel.l (at_directive_perform): Adjust. |
| (flag): Replace the switch by safer and more explicit if branches. |
| |
| 2012-10-04 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| errors: pointerize complain_at_indent |
| * src/complain.c (complain_at_indent): Rename as... |
| (complaint_indent): This, and take the location as a pointer. |
| * src/complain.h, src/muscle-tab.c, src/reader.c, src/scan-code.l, |
| src/symtab.c: Adjust. |
| |
| 2012-10-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: word changes |
| * README-hacking (Typical errors): Improve wording. |
| |
| 2012-10-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: fix test suite portability |
| Reported by Rob Vermaas' Hydra build farm on x86_64-darwin 10.2.0 with |
| G++ 4.6.3. |
| |
| * tests/headers.at (Several parsers): Include AT_DATA_SOURCE_PROLOGUE |
| in the files to compile. |
| * data/location.cc: Do not include twice string and iostream (once |
| by position.hh, and then by location.hh). |
| * README-hacking (Typical errors): Some hints for other maintainers. |
| |
| 2012-10-03 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| maint: fix an erroneous include |
| This fixes test 130 (Several parsers). |
| |
| * data/location.cc: Include <iostream> rather than <iosfwd> since |
| we really need << on strings for instance. |
| * NEWS: Document this. |
| |
| 2012-10-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: check that headers are self contained |
| Reported by Alexandre Duret-Lutz. |
| |
| * tests/headers.at (Several parsers): here. |
| |
| 2012-10-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: add missing documentation for --report |
| * doc/bison.texi (Bison Options): Document --report's "solved", "all", |
| and "none". |
| |
| 2012-10-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: use gnulib's non-recursive-gnulib-prefix-hack |
| Suggested by Jim Meyering. |
| |
| * etc/prefix-gnulib-mk: Remove, as it is now provided by... |
| * bootstrap.conf (modules): the non-recursive-gnulib-prefix-hack module. |
| * build-aux/.gitignore, configure.ac, m4/.gitignore: Adjust. |
| |
| 2012-10-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| warnings: simplify the m4 interface |
| * data/bison.m4 (error_at): Replace... |
| (error): this. |
| (b4_warn, b4_complain, b4_fatal): Bounce to their _at equivalent, |
| with empty location. |
| * src/scan-skel.l (at_directive_perform): Simplify accordingly. |
| |
| 2012-10-01 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| warnings: separate flags_argmatch |
| This function is now a mere iterator that calls flag_argmatch, |
| a new function, that matches a single option parameter. |
| |
| * src/getargs.c (flag_argmatch): New, taken from... |
| (flags_argmatch): Here. |
| |
| 2012-10-01 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| warnings: refactoring |
| The code here was too confusing, this seems more natural. |
| |
| * src/complain.c (error_message): Move the indentation check and the category |
| output to complains. Also, no longer take a 'warnings' argument. |
| (complains): Factor calls to error_message. |
| |
| 2012-10-01 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| formatting changes |
| * src/complain.c: Here. |
| |
| 2012-10-01 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| warnings: organize variadic complaints call |
| Move the dispatch of variadic complains to complain.c, rather than do |
| it in a scanner. |
| |
| * src/complain.h, src/complain.c (complain_args): New. |
| * src/scan-skel.l (at_directive_perform): Use it. |
| |
| 2012-10-01 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| warnings: fusion of complain and complain_at |
| These functions are very similar, and keeping them seperate makes |
| future improvements difficult, so merge them. |
| |
| This impacts 89 calls. |
| |
| * src/bootstrap.conf: Adjust. |
| * src/complain.c (complain, complain_at): Merge into... |
| (complain): this. |
| (complain_args): Adjust. |
| * src/complain.h, src/conflicts.c, src/files.c, src/getargs.c, |
| * src/gram.c, src/location.c, src/muscle-tab.c, src/parse-gram.y, |
| * src/reader.c, src/reduce.c, src/scan-code.l, src/scan-gram.l, |
| * src/scan-skel.l, src/symlist.c, src/symtab.c: |
| Adjust. |
| |
| 2012-10-01 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| warnings: remove spurious suffixes on context |
| Rectify a bug that introduced suffixes out of place. |
| |
| * src/complainc.c (complains): Handle all three special warning bits. |
| * src/scan-code.l (show_sub_message): Remove useless argument. |
| * tests/named-refs.at: Adjust. |
| |
| 2012-10-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| headers: move CPP guards into YY_*_INCLUDED to avoid collisions |
| minor changes. |
| |
| 2012-10-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| gnulib: update |
| errors: indent "user token number redeclaration" context |
| |
| 2012-10-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| headers: move CPP guards into YY_*_INCLUDED to avoid collisions |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00016.html>. |
| |
| * data/c.m4 (b4_cpp_guard): Prepend YY_ and append _INCLUDED. |
| * tests/headers.at: Adjust. |
| * NEWS, doc/bison.texi: Document. |
| |
| 2012-10-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| minor changes. |
| * NEWS: Word changes. |
| * doc/bison.texi: Spell check. |
| Fix minor issues. |
| * tests/headers.at: Comment and formatting changes. |
| |
| 2012-09-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-09-28 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| errors: indent "user token number redeclaration" context |
| This is the continuation of the work on the readability of errors |
| context. |
| |
| * src/symtab.c (user_token_number_redeclaration): Use |
| complain_at_indent to output with increased indentation level. |
| * tests/input:at: Apply this change. |
| |
| 2012-09-27 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| errors: don't display "warnings treated as errors" |
| This line doesn't add any meaningful information anymore, the appended |
| [-Werror=CATEGORY] is enough. It is actually more insightful, as it |
| allows to distinguish warnings treated as errors from those that |
| aren't. This line is also removed by gcc 4.8. |
| |
| * src/complain.c (set_warnings_issued): The only action left was |
| checking if the error bit corresponding to the warning issued was set, |
| and that function was only called once. Therefore, remove it, and do |
| its job directly in the caller... |
| (complains): here. |
| * src/complains.h: Adjust. |
| * tests/input.at: Adjust. |
| * NEWS: Document this change. |
| |
| 2012-09-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| errors: change output, and improve -y coherence |
| The prefix of warnings treated as errors is now "error: ". Also, their |
| suffix now reflects the changes in the Werror option format. |
| |
| An output for -Werror=other used to be: |
| bison: warnings being treated as errors |
| input.y:1.1: warning: stray ',' treated as white space [-Wother] |
| |
| It is now: |
| bison: warnings being treated as errors |
| input.y:1.1: error: stray ',' treated as white space [-Werror=other] |
| |
| The line "warnings being treated as errors" no longer adds any info, |
| it will be removed in a forthcoming change. |
| |
| * NEWS: Add entry "Enhancement of the -Werror" |
| * doc/bison.texi: Move the warnings-as-error to a new bullet. |
| * src/complain.c (complains): Refactor, change the prefix of warnings |
| that are treated as errors. |
| (warnings_print_categories): Support for [-Werror=CATEGORY] display |
| * src/getargc.c (getargs): -y implies -Werror=yacc |
| * tests/input.at: Update expected --yacc output for coherence. |
| |
| 2012-09-27 Theophile Ranquet <theophile.ranquet@gmail.com> |
| |
| errors: introduce the -Werror=CATEGORY option |
| This new option is a lot more flexible than the previous one. Its |
| details will be discussed in the NEWS and info file, in a forthcoming |
| change. |
| |
| If no category is specified (ie: used as simply "-Werror"), the |
| functionality is the same as before. |
| |
| * src/complain.c (errors_flag): New variable. |
| (set_warning_issued): Accept warning categories as an argument. |
| * src/complain.h (Wall): Better definition. |
| * src/getargs.c (flags_argmatch): Support for the new format. |
| (usage): Update -Werror to -Werror[=CATEGORY] format. |
| |
| * src/complain.c (errors_flag): New variable. |
| (set_warning_issued): Accept warning categories as an argument. |
| * src/complain.h (Wall): Better definition. |
| * src/getargs.c (flags_argmatch): Support for the new format. |
| (usage): Update -Werror to -Werror=[CATEGORY] format. |
| |
| 2012-09-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * maint: |
| warnings: introduce -Wdeprecated in the usage info |
| errors: prefix the output with "error: " |
| errors: indent "invalid value for %define" context |
| errors: indent "%define var" redefinition context |
| errors: indent "symbol redeclaration" context |
| errors: indent "result type clash" error context |
| |
| 2012-09-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| warnings: introduce -Wdeprecated in the usage info |
| The deprecated warning, introduced some time ago, was not displayed in |
| the usage message. This patch addresses the issue. |
| |
| * src/getargs.c (usage): Insert here. |
| |
| 2012-09-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-09-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| regen |
| yacc: fix handling of CPP guards when no header is generated |
| gnulib: update |
| |
| 2012-09-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: prefix the output with "error: " |
| This improves readability. This is also what gcc does. |
| |
| * NEWS: Document this change. |
| * src/complain.c (complain_at): Prefix all errors with "error: ". |
| (complain_at_indent, warn_at_indent): Do not prefix the context |
| information of errors, which are basically just indented errors. |
| * tests/conflicts.at, tests/glr-regression.at, tests/input.at, |
| tests/named-refs.at, tests/output.at, tests/push.at, |
| tests/regression.at, tests/skeletons.at: Apply this change. |
| |
| 2012-09-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: indent "invalid value for %define" context |
| This is the continuation of the work on the readability of errors |
| context. |
| |
| For example, what used to be: |
| input.y:1.9-29: invalid value for %define variable 'foo' : 'bar' |
| input.y:1.9-29: accepted value: 'most' |
| |
| is now: |
| input.y:1.9-29: invalid value for %define variable 'foo' : 'bar' |
| input.y:1.9-29: accepted value: 'most' |
| |
| * src/muscle-tab.c (muscle_percent_define_check_values): Use |
| complain_at_indent to output with increased indentation level. |
| * tests/input:at: Apply this change. |
| |
| 2012-09-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: indent "%define var" redefinition context |
| This is the continuation of the work on the readability of errors |
| context. |
| |
| For example, what used to be: |
| input.y:2.9-11: %define variable 'var' redefined |
| input.y:1.9-11: previous definition |
| |
| is now: |
| input.y:2.9-11: %define variable 'var' redefined |
| input.y:1.9-11: previous definition |
| |
| * src/muscle-tab.c (muscle_percent_define_insert): Use |
| complain_at_indent to output with increased indentation level. |
| * tests/input.at: Apply this change. |
| |
| 2012-09-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: indent "symbol redeclaration" context |
| This is the continuation of the work on the readability of errors |
| context. |
| |
| For example, what used to be: |
| input.y:5.10-24: %printer redeclaration for <field2> |
| input.y:3.11-25: previous declaration |
| |
| is now: |
| input.y:5.10-24: %printer redeclaration for <field2> |
| input.y:3.11-25: previous declaration |
| |
| * NEWS: Document this change. |
| * src/symtab.c (symbol_redeclaration, semantic_type_redeclaration, |
| user_token_number_redeclaration, default_tagged_destructor_set, |
| default_tagless_destructor_set, default_tagged_printer_set, |
| default_tagless_printer_set): Use complain_at_indent to |
| output with increased indentation level. |
| * tests/input.at: Apply this change. |
| |
| 2012-09-26 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| errors: indent "result type clash" error context |
| This used to be the format of the error report: |
| |
| input.y:6.5-10: result type clash on merge function 'merge': [...] |
| input.y:2.4-9: previous declaration |
| |
| In order to distinguish the actual error from the context provided, we |
| rather this new output: |
| |
| input.y:6.5-10: result type clash on merge function 'merge': [...] |
| input.y:2.4-9: previous declaration |
| |
| Another patch will introduce an "error: " prefix to all non-indented |
| lines, giving yet better readability to the reports. |
| |
| * src/complain.h (SUB_INDENT): Move to here. |
| * src/reader.c (record_merge_function_type): Use complain_at_indent to |
| output with increased indentation level. |
| * src/scan-code.l (SUB_INDENT): Remove from here. |
| * tests/glr-regression.at: Apply this change. |
| |
| 2012-09-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| warnings: use the regular interface for s/r and r/r conflicts |
| The current routines used to display s/r and r/r conflicts are both |
| inconvenient from the programmer point of view (they do not use the |
| warning infrastructure) and for the user (the messages are rather |
| terse, not necessarily pleasant to read, and because they don't use |
| the same routines, they look different). |
| |
| It was due to the belief (dating back to the initial checked-in |
| version of Bison) that, at some point, POSIX Yacc mandated the format |
| for these messages. Today, the Open Group's manual page for Yacc, |
| <http://pubs.opengroup.org/onlinepubs/009695399/utilities/yacc.html>, |
| explicitly states that the format of these messages is unspecified. |
| See commit be7280480c175bed203883f524c7dcd6cf37c13d and |
| <http://lists.gnu.org/archive/html/bison-patches/2002-12/msg00027.html>. |
| |
| For a discussion on the chosen warning format, see |
| http://lists.gnu.org/archive/html/bison-patches/2012-09/msg00039.html |
| |
| In an effort to factor the handling of errors and warnings, use the |
| Bison warning routines to report these messages. |
| |
| * src/conflicts.c (conflicts_print): Rewrite with clearer sections |
| about S/R and then R/R conflicts. |
| (conflict_report): Remove, inlined in its sole |
| caller... |
| (conflicts_output): here. |
| * tests/conflicts.at, tests/existing.at, tests/glr-regression.at, |
| * tests/reduce.at, tests/regression.at: Adjust the expected results. |
| * NEWS: Update. |
| |
| 2012-09-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-09-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc: fix handling of CPP guards when no header is generated |
| When no header was to be generated, Bison would issue: |
| |
| /* In a future release of Bison, this section will be replaced |
| by #include "". */ |
| #ifndef YY_ |
| # define YY_ |
| |
| It now properly generates nothing. |
| |
| * data/c.m4 (b4_cpp_guard_open, b4_cpp_guard_close): Issue nothing when |
| the file name is empty. |
| * data/yacc.c: Do not generate the above comment when there is no header |
| to generate. |
| * NEWS: Update. |
| |
| 2012-09-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| conflicts: refactor the counting routines |
| * src/conflicts.c (count_sr_conflicts, count_rr_conflicts): Rename as... |
| (count_sr_conflicts, count_rr_conflicts): these. |
| Use size_t for counts. |
| (count_sr_conflicts, count_rr_conflicts): New. |
| Use them. |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| %expect-rr is for GLR only |
| * src/conflicts.c (conflicts_print): Complain about %expect-rr if not |
| in GLR mode, regardless of the number of reduce/reduce conflicts. |
| * tests/conflicts.at (%expect-rr non GLR): New test. |
| * NEWS: Update. |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| TODO: lalr1.cc master vs maint |
| * TODO: here. |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: coding style fixes |
| * data/lalr1.cc, tests/c++.at: Formatting changes. |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| Revert "introduced a GCC-like -Werror=type" |
| This reverts commit 981c53e257f1974854edc4f6ad0e88c7f18e2bea. |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| Revert "made previous commit less hairy" |
| This reverts commit fd01e1d05ea3e627033d148b5400b99a18ac7ba3. |
| |
| 2012-09-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| Revert "new Werror report format fixed in a test" |
| This reverts commit 41511178a71ebaf81bde7ffc682c575537af45cb. |
| |
| 2012-09-21 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| new Werror report format fixed in a test |
| * tests/input.at : replaced [-Wyacc] with [-Werror=yacc] |
| |
| todo: fix the other failed test of the suite, tests/conflicts.at:1554 |
| |
| 2012-09-21 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| made previous commit less hairy |
| * src/getargs.c : here |
| |
| 2012-09-20 Theophile Ranquet <ranquet@lrde.epita.fr> |
| |
| introduced a GCC-like -Werror=type |
| * src/complain.h : errors_flag variable |
| * src/complain.c : actual stuff happens here |
| * src/conflits.c : differentiated SR and RR conflicts |
| * src/getargs.c : flags_argmatch recognizes the new -Werror format |
| |
| 2012-09-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-09-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: remove useless file |
| update files to ignore |
| remove useless include |
| use locale-indep. c_is* functions for parsing, not isspace, isprint etc |
| gnulib: update |
| --help: include a place to report translation issues |
| tests: style changes |
| tests: fix push-pull test |
| yacc.c: style changes |
| |
| 2012-09-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: remove useless file |
| * externals/bootstrap.cfg: Remove. |
| This file was used by a specific build system. |
| It was added to the master repository by accident. |
| |
| 2012-09-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| update files to ignore |
| * doc/.gitignore: Don't ignore split info files as we don't split our |
| info file. |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-08/msg00006.html>. |
| |
| 2012-09-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| remove useless include |
| * src/system.h: Don't include sys/types.h. |
| Reported by Eric Blake, |
| <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00002.html>. |
| (FUNCTION_PRINT): Remove, unused. |
| |
| 2012-09-03 Jim Meyering <meyering@redhat.com> |
| |
| use locale-indep. c_is* functions for parsing, not isspace, isprint etc |
| * src/parse-gram.y: Include "c-ctype.h". |
| (add_param): Parse with c_isspace, not isspace. |
| * src/parse-gram.c: Likewise. |
| * src/scan-gram.l: Include c-ctype.h, not ctype.h. |
| (SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER): Use c_isspace and c_isprint, |
| not ctype.h's locale-dependent functions. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| --help: include a place to report translation issues |
| http://lists.gnu.org/archive/html/bug-bison/2012-08/msg00007.html |
| shows that it is useful to help users report translation issues. |
| While at it, include other informative bits that the coreutils shows. |
| |
| * src/getargs.c (usage): Report more URLs where the user can |
| refer to. |
| Mostly copied/pasted from coreutils' emit_ancillary_info function. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: style changes |
| * NEWS: Minor improvements. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| use -Wdeprecated for obsolete %define variable names |
| * src/muscle-tab.c (muscle_percent_variable_update): Here. |
| * tests/input.at (%define backward compatibility): Update expectations. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| introduce -Wdeprecated |
| GCC seems to be using "deprecated" consistently over "obsoleted", so |
| use -Wdeprecated rather than -Wobsolete. |
| |
| * src/complain.h (warnings): Add Wdeprecated. |
| * src/complain.c (warnings_print_categories): Adjust. |
| * src/getargs.c: Likewise. |
| * doc/bison.texi: Document it. |
| |
| * src/scan-code.l: Use this category for the trailing ';' support. |
| * tests/actions.at: Adjust expected output. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| undefined but unused is a warning |
| * src/symtab.c (symbol_check_defined): Undeclared symbols are only |
| a warning. |
| * tests/input.at (Undeclared symbols used for a printer or destructor): |
| Rename as... |
| (Undefined symbols): this, and check this case. |
| * NEWS: Doc it. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: %defines is no longer mandatory |
| * data/glr.cc: No longer require %defines. |
| When it is not given, define the position and location classes instead |
| of including their headers. |
| (b4_shared_declarations): Use the original parse-params. |
| * data/glr.c (b4_shared_declarations): Define only if undefined. |
| * tests/actions.at, tests/calc.at: No longer force the use of %defines |
| for glr.cc. |
| * NEWS: Doc it. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| todo: check push parsers |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| style: remove useless C++ provisio |
| * src/complain.h: here. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: style changes |
| * src/parse-gram.y: Avoid deprecated directives. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: address a fixme |
| * doc/bison.texi (Calc++ Parser): Add a cross-reference. |
| |
| 2012-09-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| style changes |
| * data/glr.cc, tests/actions.at: Fix comments. |
| * src/symtab.h, src/symtab.c: Fix indentation/comments. |
| * src/symlist.c: Fix indentation. |
| |
| 2012-08-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: style changes |
| * tests/torture.at (AT_DATA_STACK_TORTURE): M4 style changes to |
| improve readability. |
| Fix an assertion which, because of a <= instead of ==, did not check |
| new_status as visibly meant. |
| (get_args): New. |
| |
| 2012-08-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix push-pull test |
| * tests/torture.at: %push-pull-parser is no longer supported. |
| |
| 2012-08-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: style changes |
| * data/yacc.c: (yytoken): Define with initial value. |
| |
| 2012-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| refactoring: define variables with a value |
| * src/muscle-tab.c: Where possible, fuse definition and initial assignment. |
| |
| 2012-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| minor refactoring: shorten variable names |
| * src/scan-skel.l (at_directive_argc, at_directive_argv) |
| (AT_DIRECTIVE_ARGC_MAX): Rename as... |
| (argc, argv, ARGC_MAX): these, as there is no possible confusion. |
| (flags): New. |
| (QPUTS): Remove, inline its only use. |
| |
| 2012-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| obstacks: simplifications |
| * src/system.h (obstack_finish0): New. |
| Use it to simplify several uses. |
| * src/muscle-tab.h (MUSCLE_INSERTF): New. |
| * src/muscle-tab.c: Use obstack_printf where simpler. |
| |
| 2012-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| minor refactoring in user code scanning |
| * src/scan-code.l (show_sub_message, show_sub_messages): Instead of a |
| Boolean, take a "warnings" argument. |
| Avoid storing printf-like format strings in a variable, so that GCC |
| can check them. |
| |
| 2012-08-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| minor refactoring in user code scanning |
| * src/scan-code.l (show_sub_message): New, extracted from... |
| (show_sub_messages): here. |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: strengthen the trailing spaces check |
| * tests/calc.at: here. |
| * data/glr.c: Fix accordingly. |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * origin/maint: |
| maint: post-release administrivia |
| version 2.6.2 |
| NEWS: update. |
| yacc: remove trailing end of line at end of file |
| thanks: fix a contributor name |
| gnulib: update |
| tests: synch line -> syncline, for consistency |
| tests: synclines: style changes |
| tests: synclines: fix perl invocation |
| regen |
| c++: trailing end-of-lines in %parse-param |
| tests: simplify |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| remove support for lint |
| Basically revert commit 12ce2df60d16961eaa03a5aa009eeaa645e4e1cb. |
| http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00004.html |
| |
| * data/c.m4, data/glr.c, data/yacc.c (YYID): Remove. |
| No longer use ARGSUSED. |
| * src/getargs.c: Restore simpler inclusion of getopt.h (anyway, since |
| then we now use gnulib which certainly protects us from such issues). |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: renamings after knr removal |
| * data/c.m4 (b4_yydestruct_generate, b4_yy_symbol_print_generate): |
| Rename as... |
| (b4_yydestruct_define, b4_yy_symbol_print_define): these, for consistency. |
| * data/glr.c, data/glr.cc, data/yacc.c: Adjust. |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-08-03 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6.2 |
| * NEWS: Record release date. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: fix a comment |
| * data/c++.m4: Be sure to attach a ';' to its declaration, otherwise |
| it appears in the preceding comment. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: simplify after knr removal |
| * data/c.m4 (b4_yydestruct_generate, b4_yy_symbol_print_generate): |
| They no longer need an argument, it has a single possible value. |
| * data/glr.c, data/yacc.c: Adjust. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: renamings after knr removal |
| * data/c.m4 (b4_c_comment_, b4_c_args, b4_c_function_def) |
| (b4_c_function_decl, b4_c_formals, b4_c_call, b4_c_arg): Rename as... |
| (b4_comment, b4_args, b4_function_define, b4_function_declare, |
| b4_formals, b4_function_call, b4_arg): these. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Adjust. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: b4_args -> b4_join to prepare forthcoming changes |
| * data/bison.m4 (b4_args, _b4_args): Rename as... |
| (b4_join, _b4_join): these. |
| * data/c++.m4, data/lalr1.cc, data/variant.hh: Adjust. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| YYPARSE_PARAM: drop support |
| * data/yacc.c: No longer support it. |
| * doc/bison.texi, tests/headers.at: Adjust. |
| * NEWS: Document. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: remove K&R C support |
| * data/c.m4 (b4_c_modern, b4_c_knr_formal_names, b4_c_knr_formal_decls) |
| (b4_c_knr_formal_decl, b4_c_formal_names, b4_c_formal_decls) |
| (b4_c_formal_decl): Remove. |
| (b4_c_ansi_formal_names, b4_c_ansi_formal_decls, b4_c_ansi_formal_decl): |
| Rename as... |
| (b4_c_formal_names, b4_c_formal_decls, b4_c_formal_decl): |
| these. |
| * data/glr.c, data/glr.cc, data/yacc.c: Adjust. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: update. |
| * NEWS: Catch up with the other changes from 2.6.1. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc: remove trailing end of line at end of file |
| There are still spurious spaces at the end of some lines. But this is |
| addressed in the master branch, and I am reluctant to try to backport |
| this. |
| |
| * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: here. |
| * tests/calc.at (AT_CHECK_SPACES): New. |
| Use it. |
| Be sure not to introduce trailing empty lines in the *.y files. |
| * NEWS: Doc it. |
| * cfg.mk (syntax-check): Remove the exception. |
| |
| 2012-08-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| thanks: fix a contributor name |
| * THANKS: On his request. |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: synch line -> syncline, for consistency |
| * tests/synclines.at: Do it, as "syncline" is used consistently |
| everywhere else in Bison. |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: synclines: style changes |
| * tests/synclines.at (AT_TEST_SYNCLINE): Rename as... |
| (AT_TEST): this. |
| Use pushdef/popdef. |
| Formatting changes. |
| Use '+' instead of '*' where appropriate. |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: synclines: fix perl invocation |
| Reported by Summum Bonum. |
| |
| * tests/synclines.at: Fix Perl invocation: its -f is not like sed's. |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: trailing end-of-lines in %parse-param |
| * src/parse-gram.y (add_param): No only skip ' ' and '\t', skip all |
| leading and trailing spaces. |
| * tests/regression.at (Lex and parse params): Check it. |
| * NEWS: Document it. |
| |
| 2012-08-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: simplify |
| * tests/regression.at: Remove useless compilations: AT_FULL_COMPILE |
| includes the compilation by bison. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| todo: more items |
| * TODO: $ in the epilogue, and obstack_copy. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge branch 'maint' |
| * maint: |
| use obstack_printf |
| scanner: restore a missing start condition |
| gnulib: update |
| maint: post-release administrivia |
| version 2.6.1 |
| gnulib: update |
| maint: fix some syntax-check issues |
| tests: do not depend on __cplusplus to decide for C++ or C output |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: comment changes |
| * tests/actions.at, tests/input.at: here. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: really check the set of generated files |
| * tests/output.at (AT_CHECK_OUTPUT): It used to check that the |
| expected files are indeed generated, but it did not check that |
| there are no additional ones. |
| Do that, and adjust expectations (in particular alphabetical order). |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: do not create stack.hh without %defines |
| * data/stack.hh (b4_stack_define): New. |
| * data/lalr1.cc: Use it when %defines is not passed. |
| * tests/output.at: Adjust expected output. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: location.hh and position.hh are not generated without %defines |
| * data/location.cc (b4_position_define, b4_location_define): New. |
| (location.hh, position.hh): Generate only if %defines. |
| * data/lalr1.cc: therefore, define these classes when locations are |
| needed, but headers are not generated. |
| * tests/output.at: Check that these files are not generated. |
| * NEWS: Document. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: no longer require %defines. |
| * data/lalr1.cc: Generate the parser header only when %defines is |
| passed. |
| * tests/calc.at: Check it. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: style changes |
| * data/glr.c, data/lalr1.cc: Use more consistent comments, |
| and YY_NULL declaration. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc, lalr1.cc: define b4_shared_declarations |
| * data/glr.cc, data/lalr1.cc: here. |
| The name is no longer right, but at least it is consistent with |
| the other skeletons. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: no longer require location support |
| * data/glr.cc: Use b4_locations_if where appropriate. |
| * data/lalr1.cc: M4 quotation changes to highlight code duplication |
| with glr.cc. |
| * tests/calc.at: Check glr.cc with and without %location. |
| While at it, fuse multiple %parse-params into one. |
| * tests/actions.at: Simplify. |
| * NEWS: Doc this. |
| Some other wording changes. |
| |
| 2012-07-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| use obstack_printf |
| This is not just nicer, it is also much safer, since we were |
| using sprintf... |
| |
| * bootstrap.conf: Require it. |
| * src/system.h (obstack_fgrow1, obstack_fgrow2, obstack_fgrow3) |
| (obstack_fgrow4): Remove. |
| Adjust dependencies. |
| |
| 2012-07-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| scanner: restore a missing start condition |
| $ flex src/scan-skel.l |
| src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_ARGS |
| src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_SKIP_WS |
| This is warning, and it seems there are no means to make it an error. |
| |
| * src/scan-skel.l: Restore the start-condition INITIAL for an <<EOF>> |
| clause. |
| |
| 2012-07-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-07-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-07-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6.1 |
| * NEWS: Record release date. |
| |
| 2012-07-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix some syntax-check issues |
| * cfg.mk: Nuke the following warnings which are confused by our |
| text reports (that state that the error token is number 256). |
| prohibit_magic_number_exit |
| ../../doc/bison.texi:8170:error (256) |
| ../../tests/conflicts.at:570:error (256) |
| ../../tests/conflicts.at:673:error (256) |
| ../../tests/conflicts.at:811:error (256) |
| ../../tests/conflicts.at:1154:error (256) |
| ../../tests/regression.at:281:error (256) |
| ../../tests/regression.at:582:error (256) |
| maint.mk: use EXIT_* values rather than magic number |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: do not depend on __cplusplus to decide for C++ or C output |
| Since we do support compiling C code with a C++ compiler. |
| |
| * tests/actions.at (Qualified $$ in actions): Use AT_SKEL_CC_IF. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: (29 commits) |
| regen |
| synclines: remove spurious empty line |
| also support $<foo>$ in the %initial-action |
| skeletons: b4_dollar_pushdef and popdef to simpify complex definitions |
| regen |
| printer/destructor: translate only once |
| factor the handling of m4 escaping |
| news: schedule the removal of the ";" hack |
| style changes in the scanners |
| regen |
| support $<tag>$ in printers and destructors |
| scan-code: factor the handling of the type in $<TYPE>$ |
| muscles: fix another occurrence of unescaped type name |
| glr.cc: fix the handling of yydebug |
| gnulib: update |
| formatting changes |
| tests: fix an assertion |
| tests: adjust to GCC 4.8, which displays caret errors |
| be sure to properly escape type names |
| obstack_quote: escape and quote for M4 |
| muscles: shuffle responsabilities |
| muscles: make private functions static |
| muscles: rename private functions/macros |
| obstack_escape: escape M4 characters |
| remove dead macro |
| maint: style changes |
| doc: avoid problems with case insensitive file systems |
| configure: fix botched quoting |
| news: fix typo. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| synclines: remove spurious empty line |
| * data/bison.m4 (b4_syncline): Do not start with an empty line. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| also support $<foo>$ in the %initial-action |
| scan-code.l is already passing argument to b4_dollar_dollar for the |
| initial acton, but its definition (of b4_dollar_dollar) does not use |
| this argument. |
| |
| Generalize this definition, and use it for the %initial-action too. |
| |
| * data/c.m4 (b4_dollar_dollar_, b4_dollar_pushdef, b4_dollar_popdef): |
| Instead of expecting a pointer, require a value, and use ".". |
| Since they are now generic enough, move to... |
| * data/c-like.m4: this new file. |
| * data/c.m4, data/java.m4: Load it. |
| * data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Use |
| b4_dollar_pushdef for the %initial-action. |
| * tests/actions.at: Check that. |
| * data/Makefile.am: Adjust. |
| * NEWS, doc/bison.texi: Document. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: b4_dollar_pushdef and popdef to simpify complex definitions |
| M4 is really making it uselessly hard to define macros that define |
| macros. |
| * data/c.m4 (b4_dollar_pushdef, b4_dollar_popdef): New. |
| Use it. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| printer/destructor: translate only once |
| Currently "%printer {...} a b c d e f" translates the {...} six times. |
| Not only is this bad for time and space, it also issues six times the |
| same warnings. |
| |
| * src/symlist.h, src/symlist.c (symbol_list_destructor_set) |
| (symbol_list_printer_set): Take the action as code_props instead of |
| const char *. |
| * src/parse-gram.y: Translate these actions here. |
| * src/scan-code.h: Comment change. |
| * tests/input.at: Check that warnings are issued only once. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| factor the handling of m4 escaping |
| The conversion from @ to @@ and so forth is coded is too many |
| different places. Factor, a bit. |
| |
| * src/scan-code.l: Instead of duplicating the logic of obstack_escape, |
| use it. |
| It sure is less efficient, but the cost is negligible. |
| This allows to factor rules that are alike. |
| And to factor some start-condition clauses. |
| * tests/input.at (Stray $ or @): New. |
| * NEWS: Document it. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: schedule the removal of the ";" hack |
| scan-code.l is significantly more complex because of this. |
| |
| * NEWS: Doc it. |
| |
| 2012-07-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| style changes in the scanners |
| * src/scan-code.l, src/scan-skel.l: Use a more traditional indentation |
| style for start-conditions. |
| Prefer "continue" to a comment, for empty actions. |
| Strip useless {}. |
| Remove useless start-condition clauses. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| support $<tag>$ in printers and destructors |
| * src/scan-code.l (SC_SYMBOL_ACTION): Accept $<tag>$, not just $$. |
| * data/c.m4 (b4_dollar_dollar_): New. |
| (b4_symbol_actions): Let b4_dollar_dollar use b4_dollar_dollar_. |
| * NEWS, doc/bison.texi: Document it. |
| * tests/actions.at: Check this for C and C++. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| scan-code: factor the handling of the type in $<TYPE>$ |
| * src/scan-code.l (fetch_type_name): New. |
| (handle_action_dollar): Use it. |
| (gt_ptr): Remove, useless. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscles: fix another occurrence of unescaped type name |
| * src/output.c (quoted_output): Split into... |
| (quoted_output, string_output): these. |
| Use the former when outputting a type_name. |
| * tests/input.at: Check this case. |
| * src/symtab.h: Comment changes. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: fix the handling of yydebug |
| * data/glr.cc (yydebug_): Remove, unused. |
| (set_debug_level, debug_level): Work on yydebug instead. |
| * doc/bison.texi, NEWS: Document this. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| formatting changes |
| * src/symtab.h: here. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix an assertion |
| * tests/local.at (AT_YYLEX_DEFINE): Be sure to check the array |
| against its length, not its size in bytes. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: adjust to GCC 4.8, which displays caret errors |
| With GCC 4.8, the tests on synclines are skipped. Transform |
| |
| input.y:1:2: error: #error "1" |
| #error "1" |
| ^ |
| |
| into |
| |
| input.y:1: #error "1" |
| |
| * tests/synclines.at (AT_SYNCLINES_COMPILE): Do it, using Perl instead of |
| sed. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| be sure to properly escape type names |
| * src/scan-code.l: Use obstack_quote when passing type_name to m4. |
| * tests/input.at (Code injection): New. |
| * NEWS: Document it. |
| Thanks to Paul Eggert for the wording. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| obstack_quote: escape and quote for M4 |
| * src/system.h (obstack_quote): New. |
| * src/muscle-tab.c: Use it instead of obstack_escape where applicable. |
| * src/scan-code.l: Since obstack_quote supports NULL, leave type_name |
| as NULL instead of defaulting to "". |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscles: shuffle responsabilities |
| * src/muscle-tab.c (muscle_boundary_grow): Be in charge of quotation, |
| instead of leaving this to the caller. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscles: make private functions static |
| * src/muscle-tab.h, src/muscle-tab.c (muscle_boundary_grow) |
| (muscle_location_grow): Now static. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| muscles: rename private functions/macros |
| * src/muscle-tab.c (MUSCLE_COMMON_DECODE, muscle_string_decode) |
| (muscle_location_decode): Not related to muscles, rename as... |
| (COMMON_DECODE, string_decode, location_decode): these. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| obstack_escape: escape M4 characters |
| * src/muscle-tab.h (MUSCLE_OBSTACK_SGROW): This is not related to |
| muscles, so move to, and rename as... |
| * src/system.h (obstack_escape): this. |
| Adjust dependencies. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| remove dead macro |
| * src/system.h (DEFAULT_TMPDIR): Remove, unused. |
| |
| 2012-07-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: style changes |
| * src/scan-code.l: Remove useless braces. |
| Formatting changes. |
| Prefer NULL to 0. |
| * src/muscle-tab.c, src/system.h: Formatting changes. |
| |
| 2012-07-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: avoid problems with case insensitive file systems |
| makeinfo --html generates index.html, and the node "Index" will result |
| in Index.html. On case insensitive file systems, such as on Mac OS X |
| by default, this results in a single, invalid, file (Texinfo 4.13). |
| See http://lists.gnu.org/archive/html/bug-texinfo/2012-07/msg00032.html |
| |
| * doc/bison.texi (Index): Rename as... |
| (Index of Terms): this. |
| |
| 2012-07-24 Stefano Lattarini <stefano.lattarini@gmail.com> (tiny change) |
| |
| configure: fix botched quoting |
| * configure.ac: In the AC_SUBST call on 'VALGRIND_PREBISON'. Without |
| this change, when running ./configure, I see: |
| |
| ... |
| checking for valgrind... valgrind |
| ./configure: line 35221: -q: command not found |
| checking for Java compiler... gcj -C -fsource=1.3 -ftarget=1.4 |
| ... |
| |
| 2012-07-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-07-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| yystype, yyltype: remove. |
| * data/c.m4: here. |
| * NEWS: Doc it. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| YYFAIL: remove. |
| * data/lalr1.java, data/yacc.c, src/scan-code.l: Remove YYFAIL support. |
| * NEWS, TODO: Update. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| todo: update. |
| * TODO: obsolete items. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| space changes. |
| * data/bison.m4 (b4_symbol_action): Remove spurious eol in the output. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: fix %printer usage. |
| * src/parse-gram.y: Instead of stderr, using yyo. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: factor the handling of code_props |
| * src/parse-gram.y: Now that %printer and %destructor are treated |
| equally, let... |
| (code_props_type): handle them. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| parser: factor handling of type tags |
| * src/parse-gram.y: Now that <*> and <> are processed like regular |
| tags, let... |
| (tag): handle them. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| simplify the handling of <> and <*>'s code_props. |
| Currently they are treated in separated variables, contrary to other |
| <TYPE> code_props. This duplicates code (and messages for translators) |
| uselessly, as demonstrated by the fact that thanks to this patch, now |
| useless <*> and <> code_props are reported like the others. |
| |
| * src/parse-gram.y (generic_symlist_item): Treat "<*>" and "<>" as regular |
| type tags. |
| * src/symlist.h, src/symlist.c (symbol_list_default_tagged_new) |
| (symbol_list_default_tagless_new,SYMLIST_DEFAULT_TAGGED) |
| (SYMLIST_DEFAULT_TAGLESS): Remove. |
| * src/symtab.h, src/symtab.c (default_tagged_code_props) |
| (default_tagless_code_props, default_tagged_code_props_set) |
| (default_tagless_code_props_set): Remove. |
| (symbol_code_props_get): Default to <*> or <>'s code_props. |
| |
| * tests/actions.at: Complete expected errors: there are new warnings. |
| * tests/input.at: Likewise. |
| (Useless printers or destructors): Extend. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| allow modification on retrieved code_props. |
| The logic to compute the %printer or %destructor to used (i.e., a |
| code_props) is implemented twice: one, of course, in |
| symbol_code_props_get, and another time in symbol_check_defined to |
| record the fact that a code_props is used (so that we can reported |
| unused ones). Let the former use the latter. |
| |
| I would probably use "mutable" in C++ and keep these guys const, |
| but this is C. And casting away constness triggers warnings. |
| |
| * src/scan-code.h, src/scan-code.l (code_props_none): Is not const. |
| * src/symtab.h, src/symtab.c (symbol_code_props_get): The symbol |
| is not const. |
| (symbol_check_defined): Use it. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: regen. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix bison's own header guards. |
| Because I'm using a VPATH build with an absolute srcdir, I have |
| GRAM__USERS_AKIM_SRC_GNU_BISON_SRC_PARSE_GRAM_H. Before, I was using |
| a relative srcdir, and had GRAM_______SRC_PARSE_GRAM_H (coming from |
| ../../). Let it be GRAM_SRC_PARSE_GRAM_H. |
| |
| * tests/bison.in: Do not depend on the value of $top_srcdir for |
| Bison itself. |
| If we were to use relative paths from .c to .y, we would not have |
| this problem. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: add missing const. |
| * src/symtab.h, src/symtab.c (symbol_print): here. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| style changes. |
| * src/parse-gram.y, src/symtab.c: Space changes. |
| * src/symtab.h: Comment changes. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| autoconf: update. |
| * submodules/autoconf: here. |
| No significant changes for our use of m4sugar.m4. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| output: no longer use b4_tokens. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, data/yacc.c: |
| Since the previous commit, b4_tokens_define and the like no longer need |
| b4_tokens. |
| * src/output.c (token_definitions_output): Remove. |
| |
| 2012-07-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| output: use the token list to define the yytokentype |
| There are currently two systems used to pass information about tokens to |
| m4: the original one, and another, which is used for instance for |
| printers and destructors, variants etc. Move to using only the latter. |
| |
| * data/bison.m4 (b4_symbol_map, b4_token_visible_if) |
| (b4_token_has_definition, b4_any_token_visible_if, b4_token_format): New. |
| * data/c++.m4, data/c.m4, data/glr.c, data/java.m4: Adjust to use them. |
| |
| 2012-07-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix VPATH issue |
| * examples/test: With an absolute VPATH build, "../" is incorrect. |
| |
| 2012-07-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: fix typo. |
| * NEWS: here. |
| Reported by Ben Pfaff. |
| |
| 2012-07-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: update gnu-web-doc-update. |
| maint: post-release administrivia |
| version 2.6 |
| maint: prepare for release 2.6 |
| maint: post-release administrivia |
| version 2.5.91 |
| maint: prepare NEWS. |
| maint: fix spaces. |
| tests: adjust to case where the C compiler is actually a C++ compiler |
| tests: fix dependencies |
| doc: fix Texinfo command |
| maint: Valgrind on OS X. |
| tests: be sure that backups are safe. |
| maint: dead comment. |
| tests: refactor for legibility. |
| tests: refactor the bison invocations. |
| maint: fix syntax-check ignore patterns. |
| gnulib: update |
| gnulib: update. |
| gnulib: update |
| |
| 2012-07-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update gnu-web-doc-update. |
| * gnulib: here. |
| |
| 2012-07-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-07-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.6 |
| * NEWS: Record release date. |
| |
| 2012-07-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: prepare for release 2.6 |
| * NEWS: here. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.5.91 |
| * NEWS: Record release date. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: prepare NEWS. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix spaces. |
| * build-aux/Makefile.am: here. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: adjust to case where the C compiler is actually a C++ compiler |
| * tests/atlocal.in (CC_IS_CXX): New. |
| * tests/headers.at (Several parsers): Use it. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix dependencies |
| * tests/Makefile.am: we need atconfig and atlocal to be up to date |
| when calling testsuite. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix Texinfo command |
| * doc/bison.texi: In parens, use @pxref. |
| |
| 2012-07-18 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: Valgrind on OS X. |
| * configure.ac (VALGRIND_PREBISON): New. |
| * tests/Makefile.am (maintainer-check-valgrind): Use it. |
| * etc/darwin11.4.0.supp: New. |
| * configure.ac, etc/Makefile.am: Use it. |
| * configure.ac: Disable Valgrind on Mac OS X. |
| * README-hacking: Explain why. |
| |
| 2012-07-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: be sure that backups are safe. |
| * tests/local.at (at_save_special_files): here. |
| |
| 2012-07-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: dead comment. |
| * etc/README: here. |
| |
| 2012-07-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: refactor for legibility. |
| * tests/local.at (AT_BISON_CHECK_WARNINGS, AT_BISON_CHECK_WARNINGS_): |
| New. |
| |
| 2012-07-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: refactor the bison invocations. |
| * tests/local.at (m4_null_if, AT_BISON_CHECK_): New. |
| |
| 2012-07-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix syntax-check ignore patterns. |
| * cfg.mk: here. |
| |
| 2012-07-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| |
| 2012-07-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update. |
| * gnulib: Update so that gitlog-to-changelog support --srcdir. |
| * Makefile.am: Use it. |
| |
| 2012-07-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update |
| * bootstrap, build-aux/.gitignore, gnulib, m4/.gitignore: update. |
| |
| 2012-07-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: minor fixes |
| * NEWS: restore missing entry. |
| * cfg.mk: Adjust to *.texinfo -> *.texi. |
| * src/symtab.c: Spaces fixes. |
| |
| 2012-07-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: address g++-4.8 warnings. |
| list.yy: In function 'yy::parser::symbol_type yylex()': |
| list.yy:107:29: error: typedef 'token' locally defined but not used |
| [-Werror=unused-local-typedefs] |
| typedef yy::parser::token token; |
| ^ |
| |
| * tests/c++.at (AT_CHECK_VARIANTS): here. |
| |
| 2012-07-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: update release instructions |
| maint: post-release administrivia |
| version 2.5.90 |
| build: fix gen-ChangeLog call. |
| gnulib: update. |
| tests: fix SKIP_IF for Java. |
| api.prefix: incompatible with %name-prefix. |
| api.prefix: strengthen the tests and fix push-parsers. |
| skeletons: style changes. |
| NEWS: minor changes. |
| api.prefix: improve the documentation for YYDEBUG. |
| gnulib: update. |
| |
| 2012-07-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update release instructions |
| * README-hacking: here. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.5.90 |
| * NEWS: Record release date. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix gen-ChangeLog call. |
| * Makefile.am: Be sure to catch errors, and fix option name |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update. |
| * gnulib/build-aux/do-release-commit-and-tag: Fix. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix SKIP_IF for Java. |
| * tests/local.at (AT_JAVA_COMPILE): here. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.prefix: incompatible with %name-prefix. |
| * data/bison.m4: Make it incompatible. |
| * tests/input.at: Check that it is. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.prefix: strengthen the tests and fix push-parsers. |
| * tests/calc.at: Check api.prefix in addition to %name-prefix. |
| * tests/headers.at: Check push parsers and pure interface. |
| * tests/local.at: Use YYLTYPE renamed. |
| * data/yacc.c (b4_declare_yyparse_push_): Handle api.prefix. |
| * doc/bison.texi: Style changes. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: style changes. |
| * data/bison.m4: Define default values after having defined |
| the support macros. |
| Kill a dead comment. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: minor changes. |
| * NEWS: style changes. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.prefix: improve the documentation for YYDEBUG. |
| * doc/bison.texi: Explain how api.prefix is applied to YYDEBUG. |
| |
| 2012-07-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update. |
| * bootstrap, gnulib: Update. |
| * cfg.mk (syntax-check): Don't check "error" usage in bison.texi. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| tests: headers.at: strengthen. |
| glr.cc: do not override C++ definitions by C macros. |
| YYLLOC_DEFAULT: factor, and don't export it in headers. |
| api.prefix: do not use #define to handle YYSTYPE_IS_TRIVIAL etc. |
| tests: portability fixes. |
| c++: fewer #includes in the headers. |
| glr.cc: formatting changes. |
| tests: more logs. |
| api.prefix: also rename YYDEBUG. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: headers.at: strengthen. |
| * tests/headers.at (Several headers): Be stricter when checking |
| the exported macros. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: do not override C++ definitions by C macros. |
| * data/glr.c: here. |
| * data/glr.cc: Fix overquotation. |
| * tests/headers.at: Comment changes. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| YYLLOC_DEFAULT: factor, and don't export it in headers. |
| * data/c++.m4, data/c.m4 (b4_yylloc_default_define): New. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it. |
| * data/glr.cc: Do not define YYLLOC_DEFAULT in the header file, |
| but in the implementation one. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.prefix: do not use #define to handle YYSTYPE_IS_TRIVIAL etc. |
| The following mixture is insane: |
| |
| #define YYSTYPE_IS_TRIVIAL PREFIX_STYPE_IS_TRIVIAL |
| #if (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL) |
| |
| since, of course YYSTYPE_IS_TRIVIAL is defined. Instead we could |
| define YYSTYPE_IS_TRIVIAL as PREFIX_STYPE_IS_TRIVIAL only when the |
| later is defined, but let's avoid stacking CPP on top of M4: rather, use |
| |
| #if (defined PREFIX_STYPE_IS_TRIVIAL && PREFIX_STYPE_IS_TRIVIAL) |
| |
| * data/glr.c, data/yacc.c: Use YYSTYPE_IS_TRIVIAL, YYSTYPE_IS_DECLARED, |
| YYLTYPE_IS_TRIVIAL and YYLTYPE_IS_DECLARED under their api.prefix-renamed |
| name. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: portability fixes. |
| Reported by Hydra. |
| |
| * tests/headers.at (Several headers): Be sure to include config.h |
| in the files to compile. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: fewer #includes in the headers. |
| * data/lalr1.cc: Define YY_NULL in the *.cc file, it is not needed |
| in the header. |
| * data/location.cc: iosfwd suffices. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: formatting changes. |
| * data/glr.cc: here. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: more logs. |
| * tests/headers.at (Several parsers): Here. |
| |
| 2012-07-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.prefix: also rename YYDEBUG. |
| The testsuite in master has shown weird errors for the "Mulitple |
| Parsers" tests: the caller of p5.parse() received some apparently |
| random value, while tracing p5.parse() showed that the function was |
| consistently returning 0. |
| |
| It happens when mixing several parser headers, some generated without |
| %debug, others with. In particular the C++ parser was generated with |
| %debug, i.e., with: |
| |
| #ifndef YYDEBUG |
| # define YYDEBUG 1 |
| #endif |
| |
| and compiled separatedly. Yet, its header was included after the one |
| of another parser, this time without %debug, i.e., with |
| |
| #ifndef YYDEBUG |
| # define YYDEBUG 0 |
| #endif |
| |
| in its header. As a result, the parser was compiled with YYDEBUG set, |
| but its header was used without. Since the layout of the objects are |
| then completely different, boom. |
| |
| Therefore, do not change the value of YYDEBUG. Rather, use it as a |
| default value for <API.PREFIX>DEBUG. |
| |
| * data/c.m4 (b4_YYDEBUG_define): New. |
| (b4_declare_yydebug): Rename as... |
| (b4_yydebug_declare): this, for consistency. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c: Use it. |
| * NEWS: Document it. |
| |
| 2012-07-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| formatting changes. |
| * data/lalr1.cc: here. |
| |
| 2012-07-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: spell fixes. |
| * NEWS: here. |
| Reported by Stefano Lattarini. |
| |
| 2012-07-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| NEWS: spell check. |
| api.prefix. |
| |
| 2012-07-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: spell check. |
| * NEWS: here. |
| |
| 2012-06-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| api.prefix. |
| * data/c.m4 (b4_api_prefix, b4_api_PREFIX): New. |
| (b4_prefix, b4_union_name, b4_token_enums, b4_declare_yylstype): Use them. |
| * data/glr.c, data/yacc.c, data/glr.cc, data/lalr1.cc: Use them to change |
| the prefix of exported preprocessor symbols. |
| * src/getargs.c (usage): Ditto. |
| * tests/headers.at (Several parsers): New. |
| * tests/local.at (AT_API_PREFIX): New. |
| AT_YYSTYPE, AT_YYLTYPE): Adjust. |
| * doc/bison.texi (Multiple Parsers): Move documentation of %name-prefix to... |
| (Table of Symbols): here. |
| (Multiple Parsers): Document api.prefix. |
| (%define Summary): Point to it. |
| Use @code for variable names. |
| (Bison Options): -p/--name-prefix are obsoleted. |
| * NEWS: Announce api.prefix. |
| |
| 2012-06-29 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: display warnings categories |
| * src/complain.c (error_message): Call 'warnings_print_categories'. |
| * src/gram.c (grammar_rules_useless_report): Display itself warning |
| category. |
| * tests/actions.at, tests/conflicts.at, tests/existing.at, |
| tests/input.at, tests/named-refs.at, tests/output.at, tests/reduce.at, |
| tests/regression.at, tests/skeletons.at: Adjust. |
| * NEWS: Document this. |
| |
| 2012-06-29 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: be ready to print warnings categories |
| A function to print warnings categories, like -Wyacc, -Wother, etc. |
| |
| * src/complain.h, src/complain.c (print_warning_categories): New function. |
| * src/output.c (ARRAY_CARDINALITY): Move it to file 'src/system.h'. |
| * src/complain.h (enum warnings): New value, 'silent', "complain" |
| must not display the warning type. |
| |
| 2012-06-29 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: prepare forthcoming changes |
| * src/gram.c (rule_rhs_print): Do not print new line anymore. |
| (rule_print): Make it static. |
| * src/closure.c, src/derives.c, src/gram.c: Adjust. |
| |
| 2012-06-29 Victor Santet <victor.santet@epita.fr> |
| |
| style changes |
| * src/complain.c, src/reader.c, src/reduce.c, src/main.c: |
| Fix indentation. |
| Simplify a bit. |
| |
| 2012-06-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen. |
| |
| 2012-06-28 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: factoring: complaints |
| * src/complain.c (error_message): Accept warning categories (an integer) as |
| argument. |
| Location is a 'const location *' instead of 'location *'. |
| (ERROR_MESSAGE): Delete it. |
| * src/complain.c, src/complain.h (complains): New function. |
| (complain, complain_at, complain_at_indent): Generic functions for |
| complaints. Call 'complains'. |
| (warn_at, warn_at_indent, warn, yacc_at, midrule_value_at) |
| (fatal_at, fatal): Delete them. Adjust dependencies. |
| * src/complain.h (enum warnings): New fields 'complaint' and 'fatal'. |
| * bootstrap.conf (XGETTEXT_OPTIONS): Adjust. |
| |
| 2012-06-28 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: move them to complain.c. |
| * src/getargs.h, src/getargs.c (warnings, warnings_flags): Move to... |
| * src/complain.h, src/complain.c: Here. |
| |
| 2012-06-28 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: rename the categories |
| Forthcoming changes will use the warning categories much more often, |
| so shortening them will improve readability. |
| |
| * src/complain.c, src/complain.h, src/conflicts.c, |
| * src/getargs.c, src/getargs.h, src/gram.c (enum warnings): |
| s/warnings_/W/g. |
| |
| 2012-06-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix merge. |
| * data/bison.m4: Use b4_error_verbose_if after it was defined. |
| |
| 2012-06-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| tests: use the generalized default yylex. |
| tests: AT_YYERROR_DEFINE: prepare for list of ints. |
| skeletons: no longer define YYLSP_NEEDED. |
| c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE. |
| |
| 2012-06-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use the generalized default yylex. |
| * tests/actions.at, tests/glr-regression.at, tests/regression.at: here. |
| |
| 2012-06-28 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: AT_YYERROR_DEFINE: prepare for list of ints. |
| * tests/local.at (AT_YYERROR_DEFINE): Don't add quotes, check their |
| presence to detect char/int types. |
| * tests/actions.at, tests/conflicts.at, tests/glr-regression.at, |
| * tests/push.at, tests/regression.at: Adjust. |
| |
| 2012-06-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: no longer define YYLSP_NEEDED. |
| * data/c.m4, data/glr.cc: here. |
| * NEWS, TODO: Adjust. |
| |
| 2012-06-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE. |
| * src/output.c (prepare_symbols): Do not define b4_token_table. |
| (prepare): Define b4_token_table_flag. |
| * data/bison.m4 (b4_token_table_if): New. |
| Arm it when error-verbose. |
| * data/glr.c, data/yacc.c (YYTOKEN_TABLE): Remove. |
| Use m4. |
| * data/lalr1.cc: Likewise. |
| (YYERROR_VERBOSE): Remove. |
| * NEWS, doc/bison.texi: Document this. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: use *.texi. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: use *.texi. |
| This is more consistent with the other packages, and Automake-NG |
| supports only *.texi. |
| |
| * doc/bison.texinfo: Rename as... |
| * doc/bison.texi: this. |
| * doc/Makefile.am, examples/calc++/Makefile.am: Adjust. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| tests: do not output m4 set up. |
| tests: use the generic yyerror function. |
| tests: use assert instead of plain abort. |
| tests: improve the generic yylex implementation. |
| tests: generalize the compilation macros. |
| tests: fix confusion between api.prefix and name-prefix. |
| maint: gitignores. |
| yacc: work around the ylwrap limitation. |
| |
| 2012-06-26 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: raise warning for useless printers or destructors |
| * src/scan-code.h (code_props): Add field 'is_used'. |
| (CODE_PROPS_NONE_INIT): Adjust. |
| * src/scan-code.l (code_props_plain_init, code_props_symbol_action_init) |
| (code_props_rule_action_init): Instead of implementing several |
| times the initialization of the code_props structures, |
| use code_props_none_init. |
| * src/symtab.c (symbol_check_defined): If a symbol does not have a |
| destructor (resp. printer) but has a type which has a destructor (resp. |
| printer), then set field 'is_used' to true. |
| (semantic_type_check_defined): If a type has a destructor (resp. printer) |
| but all symbols of this type have already a destructor (resp. printer), |
| then raise a warning. |
| * tests/input.at (Useless printers or destructors): New. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: do not output m4 set up. |
| * tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): |
| Use a diversion to avoid outputting comments etc. |
| Removes 17k lines from testsuite (10% of the number of lines). |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use the generic yyerror function. |
| * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Factor. |
| Use AT_YYERROR_DEFINE. |
| Therefore, instead of using stdout, use and check stderr. |
| * tests/glr-regression.at (Uninitialized location when reporting ambiguity): |
| Use AT_YYERROR_DEFINE. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: use assert instead of plain abort. |
| * tests/actions.at, tests/calc.at, tests/conflicts.at, |
| * tests/cxx-type.at, tests/glr-regression.at, tests/input.at, |
| * tests/named-refs.at, tests/regression.at, tests/torture.at, |
| * tests/local.at: |
| Prefer assert to abort. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve the generic yylex implementation. |
| * tests/local.at (AT_YYSTYPE, AT_YYLTYPE): New. |
| (AT_YYLEX_FORMALS): Use them. |
| (AT_YYLEX_DEFINE): Be independent of the location implementation. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: generalize the compilation macros. |
| * tests/local.at (AT_COMPILE, AT_COMPILE_CXX): If OUTPUT ends with ".o", |
| then append the "natural" extension for the input file (.c or .cc). |
| If there is no source, pass -c. |
| * tests/headers.at, tests/input.at, tests/regression.at: Adjust. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix confusion between api.prefix and name-prefix. |
| * tests/local.at (AT_NAME_PREFIX): Take api.prefix into account. |
| (AT_API_PREFIX): Rename as... |
| (AT_API_prefix): this. |
| Do not take %name-prefix into account. |
| Fix misuses. |
| |
| 2012-06-26 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: gitignores. |
| |
| 2012-06-25 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: useless semantic types |
| * src/symtab.h (symbol_list): Represent semantic types as structure |
| 'semantic_type'. |
| * src/symlist.c (symbol_list_type_new): Allocate this structure. |
| (symbol_list_code_props_set): Set this semantic type's status to used if it |
| was not declared. |
| * src/symtab.c (semantic_types_sorted): New. |
| (semantic_type_new): Set the new semantic type's location appropriately. |
| (symbol_check_defined): If a symbol has a type, then set this type's status |
| to "declared". |
| (semantic_type_check_defined, semantic_type_check_defined_processor): Same |
| as symbol_check_defined and symbol_check_defined_processor, but for semantic |
| types. |
| (symbol_check_defined): Check semantic types usefulness. |
| * src/symtab.h (semantic_type): New fields 'location' and 'status'. |
| * src/symtab.h, src/symtab.c (semantic_type_new) |
| (semantic_type_from_uniqstr, semantic_type_get): Accept a location as a |
| supplementary argument. |
| * tests/input.at (Unassociated types used for printer of destructor): New. |
| * tests/c++.at (AT_CHECK_VARIANTS): Fix an error caught by this commit. |
| |
| 2012-06-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc: work around the ylwrap limitation. |
| * data/yacc.c (b4_shared_declarations): Include the header guards. |
| Do not include the header in the *.c file, duplicate it. |
| * NEWS (Future Changes): Extend, and announce the forthcoming change |
| about the use of the parser header. |
| |
| 2012-06-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix for printers and destructors. |
| The previous "code_props: factor more" patch sends has_%printer |
| etc. to m4, instead of has_printer. |
| |
| * src/output.c (prepare_symbol_definitions): Fix value of pname. |
| |
| 2012-06-25 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| tests: more uniformity. |
| tests: handle locations in a more generic way. |
| tests: handle locations in the generic yyerror functions. |
| tests: fix AT_CHECK_CALC. |
| tests: improve infrastructure |
| tests: factor. |
| skeletons: minor style changes |
| tests: AT_LANG. |
| c skeletons: factor the declaration of yylloc and yylval. |
| news: condemn YYPARSE_PARAM and YYLEX_PARAM. |
| maint: regen. |
| |
| 2012-06-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| code_props: factor more. |
| * src/symtab.h, src/symtab.c (code_props_type_string): No longer static. |
| * src/output.c (CODE_PROPS): Remove, we can now iterate on both the |
| destructor and the printer. |
| (SET_KEY2): New. |
| |
| 2012-06-22 Victor Santet <victor.santet@epita.fr> |
| |
| maint: factor the handling of %printer and %destructor |
| There is too much code duplication between %printer and %destructor. |
| We used to have two functions for each action: the first one for |
| destructors, the second one for printers. Factor using a |
| 'code_props_type', and an array of code_props instead of two |
| members. |
| |
| * src/symlist.h, src/symlist.c (symbol_list_destructor_set) |
| (symbol_list_printer_set): Fuse into... |
| (symbol_list_code_props_set): this. |
| * src/symtab.h, src/symtab.c (default_tagged_destructor) |
| (default_tagged_printer): Fuse into... |
| (default_tagged_code_props): this. |
| (default_tagless_destructor, default_tagless_printer) |
| (default_tagless_code_props): Likewise. |
| (code_props_type_string): new. |
| (symbol_destructor_set, symbol_destructor_get, semantic_type_destructor_set) |
| (default_tagged_destructor_set, default_tagless_destructor_set) |
| (symbol_printer_set, symbol_printer_get, semantic_type_printer_set) |
| (default_tagged_printer_set, default_tagless_printer_set): Replace by... |
| (symbol_code_props_set, symbol_code_props_get, semantic_type_code_props_set) |
| (default_tagged_code_props_set, default_tagless_code_props_set): these. |
| * src/parse-gram.y (grammar_declaration): Adjust. |
| * src/output.c (CODE_PROP, grammar_declaration): Ditto. |
| * src/reader.c (symbol_should_be_used): Ditto. |
| |
| 2012-06-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: more uniformity. |
| * tests/local.at (AT_LEX_FORMALS, AT_LEX_ARGS, AT_LEX_PRE_FORMALS) |
| (AT_LEX_PRE_ARGS): Rename as... |
| (AT_YYLEX_FORMALS, AT_YYLEX_ARGS, AT_YYLEX_PRE_FORMALS) |
| (AT_YYLEX_PRE_ARGS): these, for consistency. |
| (AT_API_PREFIX): Take %name-prefix into account. |
| (AT_YYLEX_PROTOTYPE): New. |
| Use it. |
| * tests/actions.at, tests/calc.at, tests/cxx-type.at: Adjust to |
| use them. |
| |
| 2012-06-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: handle locations in a more generic way. |
| * tests/local.at (AT_YYERROR_PROTOTYPE): New. |
| Use it. |
| * tests/cxx-type.at: Extensive revamp to use a more traditional |
| quotation scheme, and to use the generic yyerror implementation. |
| Prefer Autotest macros to CPP macros. |
| * tests/java.at: . |
| |
| 2012-06-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: handle locations in the generic yyerror functions. |
| * tests/local.at (AT_YYERROR_DECLARE_EXTERN, AT_YYERROR_DECLARE) |
| (AT_YYERROR_DEFINE): Handle locations for C and C++. |
| * tests/calc.at: Use it for C++ (as C has extra arguments which |
| are not yet handled by AT_BISON_OPTION_PUSHDEFS). |
| * tests/actions.at: Adjust. |
| |
| 2012-06-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix AT_CHECK_CALC. |
| * tests/calc.at (AT_CHECK_CALC): Contrary to its documentation, |
| the test was skipped if given a second argument. |
| Unused feature, remove it. |
| |
| 2012-06-22 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve infrastructure |
| * tests/local.at (AT_LANG): Use c++ instead of cxx for C++. |
| Adjust dependencies. |
| (AT_YYERROR_DECLARE_EXTERN, AT_YYERROR_DECLARE): Issue nothing |
| for C++/Java. |
| (AT_YYERROR_DEFINE): Use m4_case. |
| (AT_JAVA_COMPILE): Use AT_SKIP_IF. |
| |
| 2012-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: factor. |
| * tests/glr-regression.at, tests/output.at, tests/push.at, |
| * tests/regression.at, tests/torture.at, tests/actions.at: |
| Use AT_YYLEX_* and AT_YYERROR_*. |
| |
| 2012-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: minor style changes |
| * data/glr.c, data/yacc.c: here. |
| |
| 2012-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: AT_LANG. |
| * tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): |
| Define/undefine AT_LANGE |
| (AT_LANG_COMPILE): New. |
| (AT_FULL_COMPILE): Use AT_LANG. |
| |
| 2012-06-21 Victor Santet <victor.santet@epita.fr> |
| |
| symtab: refactoring |
| Prepares forthcoming changes. |
| |
| * src/symtab.c (symbols_do): Accept the hash table and the sorted |
| list as arguments. Adjust dependencies. |
| |
| 2012-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: address syntax-check issues. |
| * examples/calc++/local.mk: Space changes. |
| * src/files.c: Avoid unmarked_diagnostics. |
| * src/output.c: Remove useless include. |
| |
| 2012-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| c skeletons: factor the declaration of yylloc and yylval. |
| There is one difference: now, even without --defines, we generate |
| extern declarations for these variables. The factoring is worth it. |
| * data/c.m4 (b4_declare_yylstype): Declare them. |
| * data/glr.c, data/yacc.c: Adjust. |
| |
| 2012-06-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: condemn YYPARSE_PARAM and YYLEX_PARAM. |
| * NEWS: here. |
| (Bison 1.875): Add %parse-param and %lex-param. |
| * doc/bison.texinfo: Spello. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| fix warnings for useless %printer/%destructor |
| The previous commit, which turns into a warning what used to be an |
| error: |
| |
| %printer {} foo; |
| %% |
| exp: '0'; |
| |
| has two shortcomings: the warning is way too long (foo is reported |
| to be useless later), and besides, it also turns into a warning much |
| more serious errors: |
| |
| %printer {} foo; |
| %% |
| exp: foo; |
| |
| Reduce the amount to warnings in the first case, restore the error in |
| the second. |
| |
| * src/symtab.h (status): Add a new inital state: undeclared. |
| * src/symtab.c (symbol_new): Initialize to undeclared. |
| (symbol_class_set): Simplify the logic of the code that neutralize |
| the "redeclared" warning after the "redefined" one. |
| (symbol_check_defined): "undeclared" is also an error. |
| * src/reader.c (grammar_current_rule_symbol_append): Symbols appearing |
| in a rule are "needed". |
| * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set): |
| An unknown symbol appearing in a %printer/%destructor is "used". |
| * src/reduce.c (nonterminals_reduce): Do not report as "useless" symbols |
| that are not used (e.g., those that for instance appeared only in a |
| %printer). |
| * tests/input.at (Undeclared symbols used for a printer or destructor): |
| Improve the cover the cases described above. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| gitignore: test-driver. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: style changes. |
| * src/reduce.c (reduce_grammar_tables): Define variables with their |
| initial value. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: fixes. |
| * NEWS: Fix spelling. |
| |
| 2012-06-20 Victor Santet <victor.santet@epita.fr> |
| |
| warnings: used but undeclared symbols are warnings |
| We used to raise an error if a symbol appears only in a %printer or |
| %destructor. Make it a warning. |
| |
| * src/symtab.h (status): New enum. |
| (symbol): Replace the binary "declared" with the three-state "status". |
| Adjust dependencies. |
| * src/symtab.c (symbol_check_defined): Needed symbols are an error, |
| whereas "used" are simply warnings. |
| * src/symlist.c (symbol_list_destructor_set, symbol_list_printer): Set |
| symbol status to 'used' when associated to destructors or printers. |
| * input.at (Undeclared symbols used for a printer or destructor): New. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: regen. |
| * Makefile.am (regen): New target. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen. |
| |
| 2012-06-20 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: regen. |
| * Makefile.am (regen): New target. |
| |
| 2012-06-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: enhance AT_YYERROR_DEFINE. |
| * tests/local.at: Handle the fact that locations are no longer |
| needed with lalr1.cc. |
| |
| 2012-06-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| maint: formatting changes. |
| tests: support api.prefix. |
| tests: pacify font-lock-mode. |
| tests: remove test covered elsewhere. |
| tests: factor the declaration/definition of yyerror and yylex. |
| regen. |
| tests: portability issues. |
| tests: call the parser from another compilation unit. |
| glr.c, yacc.c: declare yydebug in the header. |
| skeletons: use header guards. |
| tests: improve AT_FULL_COMPILE. |
| tests: reorder. |
| tests: strengthen the test on generated headers inclusion |
| yacc.c: instead of duplicating y.tab.h inside y.tac.c, include it. |
| yacc.c: factor. |
| |
| 2012-06-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: formatting changes. |
| * NEWS: Fix indentation of code snippets. |
| Untabify. |
| |
| 2012-06-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: support api.prefix. |
| * tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): |
| Define AT_API_PREFIX. |
| (AT_YYERROR_DEFINE, AT_YYERROR_DECLARE_EXTERN, AT_YYLEX_DECLARE_EXTERN) |
| (AT_YYLEX_DEFINE): Use it. |
| * tests/input.at, tests/regression.at, tests/torture.at: Add |
| AT_BISON_OPTION_PUSHDEFS/POPDEFS. |
| |
| 2012-06-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: pacify font-lock-mode. |
| * tests/local.at: here. |
| |
| 2012-06-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove test covered elsewhere. |
| * tests/headers.at (%union and --defines): Remove, pretty useless and |
| insignificant. |
| |
| 2012-06-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: factor the declaration/definition of yyerror and yylex. |
| * tests/local.at (AT_YYERROR_DECLARE, AT_YYERROR_DECLARE_EXTERN) |
| (AT_YYERROR_DEFINE, AT_YYLEX_DECLARE, AT_YYLEX_DECLARE_EXTERN) |
| (AT_YYLEX_DEFINE): New. |
| Must be used inside AT_BISON_OPTION_PUSHDEFS/POPDEFS pair. |
| * tests/actions.at, tests/conflicts.at, tests/glr-regression.at, |
| * tests/headers.at, tests/input.at, tests/named-refs.at, |
| * tests/regression.at, tests/skeletons.at, tests/synclines.at, |
| * tests/torture.at: Use them. |
| |
| 2012-06-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| regen. |
| |
| 2012-06-17 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: portability issues. |
| * tests/calc.at (AT_CALC_MAIN): Missing include reported by Hydra. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: call the parser from another compilation unit. |
| In order to improve the testing of %defines, which exports the |
| interface of the generated parser, change the calc.at tests so that |
| when %defines is passed, main will be in another compilation unit. It |
| loads the generated header. |
| |
| * tests/calc.at (AT_CALC_MAIN): New. |
| Includes the definition of the global variables. |
| Therefore, now declare them from the %requires section of the parser. |
| Adjust to yydebug and yyparse being renamed by %name-prefix. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c, yacc.c: declare yydebug in the header. |
| * data/c.m4 (b4_declare_yydebug): New. |
| * data/glr.c, data/yacc.c (b4_shared_declarations): Use it. |
| Remove the corresponding code from the parser body. |
| * NEWS: Doc this. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: use header guards. |
| * data/glr.c, data/glr.cc, data/yacc.c: here. |
| * NEWS: Document it. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: improve AT_FULL_COMPILE. |
| * tests/local.at: Accept a third argument. |
| Simplify quotation pattern. |
| Calls for better refactoring, but will suffice for a while. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: reorder. |
| * tests/calc.at (power): Move its definition, as a preparation for |
| forthcoming changes. |
| And space changes. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: strengthen the test on generated headers inclusion |
| * tests/headers.at (AT_TEST_CPP_GUARD_H): Accept Bison directives. |
| (Invalid CPP headers): Check glr. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: instead of duplicating y.tab.h inside y.tac.c, include it. |
| This is already what glr.c and lalr1.cc do. |
| |
| * data/yacc.c: here. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: xfdopen, and scope reduction. |
| * src/files.h, src/files.c (xfdopen): New. |
| * src/output.c (output_skeleton): Use it. |
| Reduce the scope of argv. |
| |
| 2012-06-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: space changes |
| * configure.ac, src/complain.c: space changes. |
| |
| 2012-06-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| yacc.c: factor. |
| yacc.c used to include two almost identical sections: one for the *.h |
| file, and another for the *.c file. The main difference is that in |
| the *.c file we used the yy* names (as %name-prefix is handled by |
| "#define yy* <prefix>*" before), while the *.hh used <prefix>* names. |
| Keep only the later. If this is troublesome, b4_shared_declarations |
| can easily take the desired prefix as argument. |
| |
| * data/yacc.c (b4_shared_declarations): New. |
| Use it to factor duplicated declarations. |
| |
| 2012-06-13 Stefano Lattarini <stefano.lattarini@gmail.com> (tiny change) |
| |
| cosmetics: prettify names for compiled object for bison |
| * src/local.mk (src_bison_SHORTNAME): Define to "bison". |
| |
| 2012-06-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: spello. |
| * data/lalr1.cc: Reported by Gilles Espinasse. |
| |
| 2012-06-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| skeletons: factor yacc.c and glr.c. |
| glr.c: minor refactoring. |
| tests: remove all the -On flags. |
| maint: fix spello. |
| maint: improve release procedure instructions. |
| gnulib: update readme-release. |
| maint: cfg.mk: manual title. |
| maint: cfg.mk: simplify |
| maint: post-release administrivia |
| |
| 2012-06-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: factor yacc.c and glr.c. |
| yacc.c and glr.c share common declarations. Their YYLTYPE are exactly |
| equal, and their YYSTYPE are sufficiently alike to be fused (its |
| declaration was protected by YYSTYPE_IS_DECLARED in yacc.c, but not in |
| glr.c). Besides, yacc.c duplicated the definitions of YYLTYPE and |
| YYSTYPE (*.h/*.c). |
| |
| * data/c.m4 (b4_declare_yylstype): New. |
| * data/yacc.c, data/glr.c: Use it. |
| |
| 2012-06-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: minor refactoring. |
| * data/glr.c (b4_shared_declarations): Move from the generated file |
| section, to the M4 prologue. |
| |
| 2012-06-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: remove all the -On flags. |
| * tests/atlocal.in: Here. |
| Reported by Gilles Espinasse. |
| |
| 2012-06-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix spello. |
| * README-hacking: Here. |
| * THANKS: Reported by Gilles Espinasse. |
| |
| 2012-06-12 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: improve release procedure instructions. |
| * gnulib: Update, in particular (README-release). |
| * bootstrap.conf: don't require gendocs, provided by gnu-web-doc-update, |
| provided by readme-release. |
| * README-hacking: Update accordingly. |
| |
| 2012-06-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update readme-release. |
| * gnulib (readme-release): Now includes the modules it promotes. |
| * bootstrap.conf: Simplify accordingly. |
| |
| 2012-06-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: cfg.mk: manual title. |
| * cfg.mk (manuel_title): New. |
| |
| 2012-06-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: cfg.mk: simplify |
| * cfg.mk: Remove bits provided by maint.mk. |
| |
| 2012-06-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: an envvar equal to "00" is 0. |
| * src/output.c (prepare): here. |
| Reported by Paul Eggert. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: don't use mbsr?chr. |
| Basically, revert ba60c39547a445dee3e07920931b4d7a81843868's move to |
| mbs* functions, which was prompted by -DGNULIB_POSIXCHECK. See |
| <http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00052.html> |
| and following. |
| |
| * bootstrap.conf: No longer ask for them. |
| * src/files.c, src/getargs.c, src/location.c, |
| * src/parse-gram.c, src/parse-gram.y, src/scan-gram.l, |
| * src/symtab.c: s/mbs(r?chr)/str$1/g. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: use xconcat-filename. |
| * bootstrap.conf (gnulib_modules): Request it. |
| * src/output.h, src/output.c (compute_pkgdatadir): Rename as... |
| (pkgdatadir): this. |
| Adjust dependencies. |
| * src/output.c (output_skeleton): Reduce the scope of "in". |
| Use xconcatenated_filename to simplify the construction of the |
| qualified paths to m4sugar.m4, bison.m4, and the selected skeleton. |
| There are a few minor differences: the new code uses strchr instead of |
| mbschr (but this was not really justified), and the new code does not |
| garantee a single slash even if $BISON_PKGDATADIR ends with several |
| (which was considered more accurate). See the discussion at |
| <http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00052.html>. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: minor simplification |
| * src/output.c (prepare): Assign use_push_for_pull_flag's value at its |
| declaration. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| version 2.5.1 |
| NEWS: prepare for 2.5.1. |
| maint: update release procedure |
| maint: fix comment typos |
| maint: post-release administrivia |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| version 2.5.1 |
| * NEWS: Record release date. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: prepare for 2.5.1. |
| * NEWS: Be compliant with do-release-commit-and-tag. |
| |
| 2012-06-05 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update release procedure |
| * bootstrap.conf: Request do-release-commit-and-tag and readme-release. |
| * README-hacking: Adjust. |
| |
| 2012-06-05 Jim Meyering <meyering@redhat.com> |
| |
| maint: fix comment typos |
| Using http://github.com/lyda/misspell-check, massage its |
| output into sed commands to perform the suggested changes. |
| Initially, I filtered out the THRU->Through changes, because |
| that failed to retain capitalization in the grammar token. |
| Instead, do this manually, beforehand: |
| |
| sed -i s/THRU/THROUGH/ tests/existing.at |
| git ls-files|misspellings -f -|perl -nl \ |
| -e '/^(.*?)\[(\d+)\]: (\w+) -> "(.*?)"$/ or next;' \ |
| -e '($file,$n,$l,$r)=($1,$2,$3,$4); $q="'\''"; $r=~s/$q/$q\\$q$q/g;'\ |
| -e 'print "sed -i $q${n}s!$l!$r!$q $file"'|bash |
| |
| 2012-05-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: regen. |
| |
| 2012-05-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge tag 'v2.5.1_rc2' |
| Bison 2.5.1_rc2. |
| |
| * tag 'v2.5.1_rc2': (34 commits) |
| Bison 2.5.1_rc2. |
| doc: fixes. |
| build: fix ChangeLog generation. |
| c++: compute the header guards. |
| skeletons: remove support for unused directive. |
| lalr1.cc: improve Doxygen documentation. |
| lalr1.cc: extract stack.hh. |
| news: convert to double quotes. |
| space changes. |
| build: do not prototype flex-generated functions. |
| build: fix ChangeLog generation. |
| Bison 2.5.1_rc1. |
| tests: save/restore Autotest special files when checking XML support. |
| tests: AT_SAVE_SPECIAL_FILES / AT_RESTORE_SPECIAL_FILES. |
| tests: honor TESTSUITEFLAGS in all the check targets. |
| build: do not enable c++ warnings on 0 when nullptr is not supported. |
| maint: update gnulib. |
| build: config.in.h. |
| build: move silent rules. |
| glr.c: reduce variable scopes. |
| maint: maintainer-release-check. |
| maint: shush a syntax-check. |
| maint: prefer "commit message" to "log entry". |
| command line: fix minor leaks. |
| maint: we no longer maintain the ChangeLog. |
| maint: fix the generation of the synclines for bison's parser. |
| maint: regen. |
| maint: import the xmemdup0 gnulib module. |
| maint: remove left-over gnulib modules. |
| maint: ignore files imported by autopoint. |
| build: AC_PROG_LEX: use more readable variable names. |
| maint: regen src/parse-gram.[ch] |
| maint: simplify parse-gram.y |
| maint: s/strncpy/memcpy/, when equivalent |
| |
| 2012-05-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: post-release administrivia |
| * NEWS: Add header line for next release. |
| * .prev-version: Record previous version. |
| * cfg.mk (old_NEWS_hash): Auto-update. |
| |
| 2012-05-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| Bison 2.5.1_rc2. |
| * NEWS: Update. |
| |
| 2012-05-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fixes. |
| * doc/bison.texinfo: Fix errors spotted by syntax-check. |
| |
| 2012-05-23 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix ChangeLog generation. |
| * gnulib: Update to get newest gitlog-to-changelog. |
| * bootstrap: Update. |
| * Makefile.am (gen-ChangeLog): Fix for Bison's git log style. |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: compute the header guards. |
| This is a frequent request. Recently pointed out by Wei Song, |
| <http://lists.gnu.org/archive/html/help-bison/2012-05/msg00002.html>. |
| |
| * data/c.m4 (b4_tocpp, b4_cpp_guard, b4_cpp_guard_open) |
| (b4_cpp_guard_close): New. |
| * data/lalr1.cc, data/location.cc, data/stack.hh: Use them. |
| * TODO (Header Guards): Move to... |
| * NEWS: here. |
| Formatting changes. |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| skeletons: remove support for unused directive. |
| * src/scan-skel.l (@dir_prefix@): Remove support, has never been |
| used, not even in the commit that introduced it, |
| 2b81e969ea04c1a6502928ba7e847ec8ff7dcb2f. |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: improve Doxygen documentation. |
| * data/location.cc: Qualify file names with directory name. |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| lalr1.cc: extract stack.hh. |
| See commit 51bacae6b58fd5c6cce861f00440dc917384625e. |
| * data/stack.hh: New, extracted from... |
| * data/lalr1.cc: here. |
| * data/Makefile.am: Adjust. |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| news: convert to double quotes. |
| * NEWS: Convert from `quoted' to "quoted". |
| Reported by Stefano Lattarini. |
| http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00039.html |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| space changes. |
| * src/flex-scanner.h: Indent nested cpp directives. |
| |
| 2012-05-21 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: do not prototype flex-generated functions. |
| Some versions of Flex, possibly modified by the distribution package |
| maintainers, have incompatible signatures. Since newer versions of |
| Flex prototype their functions, avoid the conflicts in that case. |
| Reported by Stefano Lattarini. |
| <http://lists.gnu.org/archive/html/bug-bison/2012-05/msg00012.html>. |
| |
| * src/flex-scanner.h (FLEX_VERSION_GT): New. |
| Use it to issue prototypes for flex-generated functions only for |
| versions up to 2.5.31, in accordance with the comment. |
| See commit dc9701e848f27ae64b6ddcf809580998667d60f2. |
| Use it to define yylex_destroy when needed. |
| |
| 2012-05-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix ChangeLog generation. |
| * Makefile.am (gen-ChangeLog): Fix for VPATH builds. |
| |
| 2012-05-14 Akim Demaille <akim@lrde.epita.fr> |
| |
| Bison 2.5.1_rc1. |
| * NEWS: Update. |
| * src/parse-gram.c, src/parse-gram.h: Regen. |
| |
| 2012-05-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: save/restore Autotest special files when checking XML support. |
| Currently the test 248, "parse-gram.y: LALR = IELR", fails |
| BISON_TEST_XML is set. |
| |
| * tests/local.at (AT_BISON_CHECK_XML): Belt: Save/restore files. |
| * tests/regression.at (parse-gram.y: LALR = IELR): Suspenders: Don't |
| rely on expout. |
| Each one of these changes suffices. |
| |
| 2012-05-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: AT_SAVE_SPECIAL_FILES / AT_RESTORE_SPECIAL_FILES. |
| Some of our macros play with expout and other Autotest special files, |
| which may break their callers (e.g., currently TESTSUITEFLAGS='248 |
| BISON_TEST_XML=1' fails). |
| |
| There is already some support for this. Expand it to be ready to use |
| it elsewhere. |
| |
| * tests/local.at (AT_RESTORE_SPECIAL_FILES, AT_SAVE_SPECIAL_FILES) |
| (at_save_special_files, at_restore_special_files): New. |
| (AT_BISON_CHECK_NO_XML): Use them. |
| |
| 2012-05-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: honor TESTSUITEFLAGS in all the check targets. |
| * tests/Makefile.am (installcheck-local): Simplify. |
| (maintainer-check-posix, maintainer-check-valgrind): Honor |
| $(TESTSUITEFLAGS). |
| |
| 2012-05-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: do not enable c++ warnings on 0 when nullptr is not supported. |
| * configure.ac (WARN_CXXFLAGS): Enable -Wzero-as-null-pointer-constant |
| only when nullptr is supported.. |
| |
| 2012-05-11 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update gnulib. |
| * bootstrap, gnulib: Update. |
| |
| 2012-05-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: config.in.h. |
| Historically we used config.hin (where everybody else used |
| config.h.in) to please DOS. Now that we use gnulib, there are already |
| tons of files with several dots, especially *.in.h. |
| |
| * configure.ac: Rename config.hin as config.in.h. |
| |
| 2012-05-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: move silent rules. |
| * tests/Makefile.am: In the generation of the test suite. |
| |
| 2012-05-09 Akim Demaille <demaille@gostai.com> |
| |
| glr.c: reduce variable scopes. |
| * data/glr.c: Where appropriate, fuse variable declarations followed |
| by assignments by variable declarations with a value. |
| Where appropriate, introduce new scopes to limit variable spans. |
| |
| 2012-05-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: maintainer-release-check. |
| * tests/Makefile.am (maintainer-release-check): New. |
| * Makefile.am (MAINTAINER_CHECKS): New. |
| Support maintainer-release-check. |
| * README-hacking: Document it, and syntax-check too. |
| |
| 2012-05-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: shush a syntax-check. |
| * cfg.mk: lib/timevar is not planned to be gnulib'ed, as it comes |
| from GCC. |
| |
| 2012-05-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: prefer "commit message" to "log entry". |
| * README-hacking: here. |
| Suggested by Stefano Lattarini. |
| |
| 2012-05-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| command line: fix minor leaks. |
| * src/getargs.c (getargs): Free pointers before allocating them new |
| content. |
| |
| 2012-05-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: we no longer maintain the ChangeLog. |
| * .gitattributes: No need to merge it. |
| * README-hacking: Update release instructions. |
| |
| 2012-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix the generation of the synclines for bison's parser. |
| * tests/bison.in: Import from master the changes that make |
| this script generate synclines that are independant of the |
| builddir/srcdir user's set up. |
| |
| 2012-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: regen. |
| * src/parse-gram.c, src/parse-gram.h: Regen. |
| |
| 2012-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: import the xmemdup0 gnulib module. |
| * bootstrap.conf: Require this module. |
| * src/parse-gram.y: Include xmemdup0.h. |
| |
| 2012-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: remove left-over gnulib modules. |
| * bootstrap.conf (gnulib_modules): Remove pipe-posix. |
| * lib/.gitignore, m4/.gitignore: Remove files that we no longer use. |
| |
| 2012-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: ignore files imported by autopoint. |
| * m4/.gitignore: here. |
| |
| 2012-05-06 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: AC_PROG_LEX: use more readable variable names. |
| * m4/flex.m4 (AC_PROG_LEX): Prefer LEX_IS_FLEX to FLEX. |
| Prefer true/false to yes/no for such variables. |
| * configure.ac: Adjust. |
| |
| 2012-05-06 Jim Meyering <meyering@redhat.com> |
| |
| maint: regen src/parse-gram.[ch] |
| |
| 2012-05-06 Jim Meyering <meyering@redhat.com> |
| Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: simplify parse-gram.y |
| * src/parse-gram.y (add_param): Use xmemdup0 in place of |
| xmalloc+memcpy, and strspn in place of an open-coded loop. |
| |
| 2012-05-06 Jim Meyering <meyering@redhat.com> |
| |
| maint: s/strncpy/memcpy/, when equivalent |
| * src/output.c (output_skeleton): Use memcpy, not strncpy, |
| since the source is known to fit in the destination buffer. |
| * src/parse-gram.y (%skeleton): Likewise. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: formatting changes. |
| * data/glr.c: Fix indentation. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/master' |
| * origin/master: |
| glr.c: untabify. |
| glr.cc: untabify. |
| glr.cc: formatting changes. |
| glr.cc: remove unused signature. |
| glr.cc: properly declare locations are const where appropriate. |
| doc: fix @xref. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: untabify. |
| * data/glr.c: here. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: untabify. |
| * data/glr.cc: here. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: formatting changes. |
| * data/glr.cc: Fit in 80 columns. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: remove unused signature. |
| * data/glr.cc (yydestruct_): Not used, remove. |
| It is yydestruct which is used. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.cc: properly declare locations are const where appropriate. |
| * data/glr.cc (yyerror): The location is const. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix @xref. |
| * doc/bison.texinfo: here. |
| |
| 2012-05-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: (22 commits) |
| tests: ignore code coverage/profiling failure messages |
| doc: fix some invalid @ref. |
| build: fix previous commit. |
| install-pdf: fix. |
| NEWS: Update. |
| %printer: support both yyo and yyoutput. |
| doc: mfcalc: demonstrate %printer. |
| tests: style changes. |
| build: require Flex. |
| build: flex.m4: check for Flex. |
| build: flex.m4: quote properly. |
| build: flex.m4. |
| build: autoconf: update. |
| glr: eliminate last bits of unwanted locations. |
| NEWS: 2.6 will drop K&R. |
| TODO: remove dead items. |
| TODO: import from master. |
| gnulib: update. |
| maint: update NEWS. |
| doc: fix index. |
| doc: fix documentation of YYERROR. |
| c++: more YY_NULL |
| |
| 2012-05-02 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: ignore code coverage/profiling failure messages |
| The Hydra buildfarm provides code coverage analysis. For some reason, |
| in some test cases, code coverage data seem to be incompatible, and |
| generate error messages at parser run-time. Ignore these messages so |
| that (i) these tests do pass, (ii) coverage results be provided by |
| Hydra. |
| |
| * tests/local.at (AT_PARSER_CHECK): Ignore messages for failed merges |
| of code coverage/profiling results. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix some invalid @ref. |
| * doc/bison.texinfo: Fix incorrect @ref uses. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix previous commit. |
| * bootstrap: Update from gnulib. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| install-pdf: fix. |
| * gnulib: Fix install-pdf in po/ and runtime-po/. |
| Reported by Hans Aberg. |
| Fixed by Joel E. Denny. |
| http://lists.gnu.org/archive/html/bug-bison/2011-05/msg00008.html |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: Update. |
| * NEWS: Spell check. |
| (%printer): is now documented. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| %printer: support both yyo and yyoutput. |
| lalr1.cc used to support yyo, but not yyoutput. Support both, |
| but document only yyoutput (at least until there is some consensus |
| on this). |
| |
| * data/c.m4 (yy_symbol_value_print): Also support yyo. |
| * data/glr.cc (yy_symbol_value_print_): Support both yyo and yyoutput. |
| * data/lalr1.cc: Also support yyoutput. |
| * doc/bison.texinfo: Explicitly use yyoutput in the examples. |
| * examples/mfcalc/mfcalc.test: Test the -p option. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: mfcalc: demonstrate %printer. |
| * doc/bison.texinfo (Printer Decl): New. |
| Number mfcalc.y snippets so that they are output in |
| the proper order. |
| (The mfcalc Main): Use yydebug. |
| (Debugging): Simplify the text. |
| (Enabling Traces, Mfcalc Traces, The YYPRINT Macro): New. |
| (Table of Symbols): Document YYPRINT and YYFPRINTF. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: style changes. |
| * tests/input.at: Use "print" in %printer instead of "destroy". |
| It is unused, so we don't care, yet it is less surprising. |
| * tests/actions.at: Comment changes. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| %printer: support both yyo and yyoutput. |
| lalr1.cc used to support yyo, but not yyoutput. Support both, |
| but document only yyoutput (at least until there is some consensus |
| on this). |
| |
| * data/c.m4 (yy_symbol_value_print): Also support yyo. |
| * data/glr.cc (yy_symbol_value_print_): Support both yyo and yyoutput. |
| * data/lalr1.cc: Also support yyoutput. |
| * doc/bison.texinfo: Explicitly use yyoutput in the examples. |
| * examples/mfcalc/mfcalc.test: Test the -p option. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: mfcalc: demonstrate %printer. |
| * doc/bison.texinfo (Printer Decl): New. |
| Number mfcalc.y snippets so that they are output in |
| the proper order. |
| (The mfcalc Main): Use yydebug. |
| (Debugging): Simplify the text. |
| (Enabling Traces, Mfcalc Traces, The YYPRINT Macro): New. |
| (Table of Symbols): Document YYPRINT and YYFPRINTF. |
| |
| 2012-04-16 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: style changes. |
| * tests/input.at: Use "print" in %printer instead of "destroy". |
| It is unused, so we don't care, yet it is less surprising. |
| * tests/actions.at: Comment changes. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: require Flex. |
| * configure.ac: Require Flex. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: flex.m4: check for Flex. |
| * m4/flex.m4 (_AC_PROG_LEX_YYTEXT_DECL): Check that $LEX |
| supports some of the Flex options, and exclusive start conditions. |
| Define FLEX to 'yes'/'', as AC_PROG_CC does for GCC. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: flex.m4: quote properly. |
| * m4/flex.m4: Use quotes more systematically. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: flex.m4. |
| * m4/flex.m4: New. |
| An exact copy of what is in Autoconf currently. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: autoconf: update. |
| * submodules/autoconf: Update. |
| There are no changes in data/m4sugar/foreach.m4, and the |
| changes in data/m4sugar/m4sugar.m4 are minor. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: eliminate last bits of unwanted locations. |
| * data/glr.c (YYLTYPE): Do not define when locations are |
| not demanded. |
| Adjust all dependencies. |
| |
| 2012-04-10 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: 2.6 will drop K&R. |
| * NEWS: here. |
| (glr.c): Fix a spello. |
| |
| 2012-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| TODO: remove dead items. |
| * TODO (Documentation, %printer, Java): Remove, already done (or just |
| waiting for approval). |
| (Fortran, BTYacc): Remove, there does not seem to be demand. |
| |
| 2012-04-09 Akim Demaille <akim@lrde.epita.fr> |
| |
| TODO: import from master. |
| * TODO: Copy the current version. |
| |
| 2012-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix bison wrapper. |
| * tests/bison.in (PERL): Fix. |
| |
| 2012-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix some invalid @ref. |
| * doc/bison.texinfo: Fix incorrect @ref uses. |
| |
| 2012-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: extexi: support out-of-order blocks. |
| * examples/extexi (%file_output): Remove. |
| (&process): Accept "FILE: BLOCK-NUM" requests. |
| |
| 2012-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: look for Perl in configure. |
| Bison uses "/usr/bin/perl" or "perl" in several places, and it does |
| not appear to be a problem. But, at least to make it simpler to |
| change PERL on the make command line, check for perl in configure. |
| |
| * configure.ac (PERL): New. |
| * doc/Doxyfile.in, doc/local.mk, examples/local.mk, |
| * tests/bison.in: Use it. |
| |
| 2012-04-08 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: rewrite extexi in Perl. |
| * examples/extexi: Rewrite in Perl. |
| * examples/local.mk (extract): Adjust. |
| |
| 2012-04-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: simplify clean. |
| * doc/local.mk (CLEANFILES): Since the previous commit, |
| there a no longer such files. |
| * Makefile.in (CLEANFILES): Initialize here. |
| |
| 2012-04-07 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update. |
| * bootstrap.conf (bootstrap_sync): True again. |
| It was disabled while waiting for changes to be integrated |
| in gnulib's bootstrap, which was done long ago. |
| * bootstrap, gnulib: Update. |
| |
| 2012-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: update NEWS. |
| * NEWS: Fix entry about __attribute__. |
| Reorder by "decreasing" order of importance. |
| |
| 2012-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix index. |
| http://lists.gnu.org/archive/html/bison-patches/2012-04/msg00006.html |
| |
| * doc/bison.texinfo: Avoid using @def* variant with more |
| than the defined entity as main entity, as it results in |
| an incorrect index. For instance, don't document |
| {return YYERROR;}, which results in a single index entry |
| "return YYERROR;", but rather as typed function whose |
| return type is "type", and whose argument list is ";". |
| |
| 2012-04-04 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: fix documentation of YYERROR. |
| * doc/bison.texinfo (Table of Symbols): Fix the documentation |
| of YYERROR by copying that from "Action Features". |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: fix distcheck issues. |
| For some reason it seems that texi2dvi -o no longer forces --clean |
| mode, so we have stray TeX compilation files staying in top_builddir |
| since TeX is run from there. |
| |
| While at it, upgrade the generation of the (completely obsolete) |
| reference card. Target PDF. |
| |
| * doc/local.mk (TEXI2DVI): Pass --build-dir. |
| (CLEANDIRS): More accurate. |
| (doc/refcard.dvi): Replace with... |
| (doc/refcard.pdf): this. |
| Adjust dependencies. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: don't rely on $< in non-pattern rules. |
| * doc/local.mk, tests/local.mk: here. |
| Reported by Stefano Lattarini. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: upgrade Doxyfile. |
| * doc/Doxyfile.in: Run doxygen -u. |
| Prompted by Tim Landscheidt. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: help Doxygen find our files. |
| * doc/Doxyfile.in (INCLUDE_PATH): here. |
| |
| 2012-04-01 Tim Landscheidt <tim@tim-landscheidt.de> |
| |
| Fix Doxygen generation and clean-up. |
| * doc/Doxyfile.in: Amend OUTPUT_DIRECTORY. |
| * doc/local.mk (html-local): Amend working directory. |
| (CLEANDIRS): Fix "html", remove "latex". |
| |
| 2012-04-01 Tim Landscheidt <tim@tim-landscheidt.de> |
| |
| Fix Doxygen comment. |
| * src/InadequacyList.h: s#</t>#</tt>#. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: more YY_NULL |
| Caught by maintainer-check-g++. |
| * data/glr.c, data/lalr1.cc, data/yacc.c, tests/cxx-type.at, |
| * tests/glr-regression.at, tests/push.at: |
| When simple to do, avoid expliciting the null ptr. |
| Otherwise use YY_NULL. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: more YY_NULL |
| Caught by maintainer-check-g++. |
| * data/glr.c, data/lalr1.cc, data/yacc.c, tests/cxx-type.at, |
| * tests/glr-regression.at, tests/push.at: |
| When simple to do, avoid expliciting the null ptr. |
| Otherwise use YY_NULL. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'origin/maint' |
| * origin/maint: |
| bump to 2012 in skeletons. |
| build: remove ancient Autoconf tests. |
| doc: c++: complete the location documentation. |
| c++: locations: provide convenience constructors. |
| c++: locations: remove useless "inline". |
| glr: do not use locations when they are not requested |
| c++: use nullptr for C++11. |
| build: simplify and improve the compiler warnings for tests. |
| gnulib: update. |
| maint: formatting changes. |
| NEWS: update. |
| Java: Fix syntax error handling without error token. |
| tests: beware of -pedantic on large #line numbers. |
| tests: when using the C++ compiler, use its flags too. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| bump to 2012 in skeletons. |
| * data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java, |
| * data/location.cc, data/yacc.c: Bump copyright year ranges. |
| |
| 2012-04-01 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: remove ancient Autoconf tests. |
| lib/subpipe.c was removed in 47fa574761319b0a422691223c9b8a9a72f36aa2. |
| |
| * m4/subpipe.m4: Remove. |
| * configure.ac (BISON_PREREQ_SUBPIPE): Remove. |
| |
| 2012-03-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: c++: complete the location documentation. |
| * data/location.cc (position::initialize, location::initialize): |
| Also accept line and column, with default values. |
| * doc/bison.texinfo (C++ position, C++ location): New nodes. |
| Describe more thoroughly these classes. |
| Fix several Texinfo misuses. |
| |
| 2012-03-31 Akim Demaille <demaille@gostai.com> |
| |
| c++: locations: provide convenience constructors. |
| * data/location.cc (position::position): Accept file, line and |
| column as arguments with default values. |
| Always qualify initial line and column literals as unsigned. |
| (location::location): Provide convenience constructors. |
| |
| 2012-03-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: locations: remove useless "inline". |
| * data/location.cc: "inline" is implicit when defining |
| methods in the class definition. |
| |
| 2012-03-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr: do not use locations when they are not requested |
| When the test suite runs with -O2 and warnings enabled, G++ |
| complains of locations being used, but not initialized. |
| The simplest is to not use locations. |
| |
| * data/glr.c (b4_locuser_formals, b4_locuser_args): New. |
| Use them when locations should not be used. |
| Use b4_locations_if where appropriate. |
| (yyuserAction): Modify the order to the arguments to make |
| it more alike the other routines, and to make use of |
| b4_locuser_args simpler. |
| |
| 2012-03-31 Akim Demaille <akim@lrde.epita.fr> |
| |
| c++: use nullptr for C++11. |
| C++11 introduces "nullptr" which plays the role of C's NULL, in |
| replacement of "0". Fix the C++ skeletons to avoid warnings about |
| uses of "0" in place of "nullptr", and improve C skeletons to also use |
| this "nullptr" when compiled with a C++11 compiler. |
| |
| * configure.ac: More C++ warnings. |
| * NEWS (2.5.1): Document this. |
| * data/c++.m4, data/c.m4 (b4_null_define): New. |
| (b4_null): Use YY_NULL instead of 0. |
| * data/glr.c, data/lalr1.cc, data/location.cc, data/yacc.c: |
| Call b4_null_define/b4_null where appropriate. |
| Use YY_NULL instead of NULL. |
| * data/location.cc (initialize): Accept a default argument, |
| YY_NULL. |
| * tests/actions.at, tests/calc.at: Adjust. |
| |
| * data/glr.c, lib/libiberty.h, src/system.h (__attribute__): |
| Do not disable it when __STRICT_ANSI__ is defined, as, for |
| instance, it disables the __attribute__((unused)) which |
| protects us from some compiler warnings. |
| This was already done elsewhere in Bison, in 2001, see |
| 4a0d89369599a2cea01f4fbdf791f426a02cb5a3. |
| * tests/regression.at: Adjust output. |
| |
| 2012-03-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| build: simplify and improve the compiler warnings for tests. |
| * configure.ac (warn_common, warn_c, warn_cxx): New. |
| Use them to compute independently the options supported |
| by the C and C++ compilers. |
| Don't AC_SUBST the variables passed to gl_WARN_ADD: it |
| does it for us. |
| (WARN_CFLAGS_TEST, WARN_CXXFLAGS_TEST): Don't aggregate |
| $WARN_CFLAGS and $WARN_CXXFLAGS in them now, leave it |
| to atlocal.in. |
| (O0CFLAGS, O0CXXFLAGS): Move their definition to... |
| * tests/atlocal.in: here. |
| Be more systematic between C and C++. |
| Reorder to factor between variables. |
| Propagate all of the variables when --compile-c-with-cxx. |
| |
| 2012-03-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update. |
| |
| 2012-03-30 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: formatting changes. |
| * src/system.h: Indent CPP directives using cppi. |
| |
| 2012-03-27 Akim Demaille <akim@lrde.epita.fr> |
| |
| NEWS: update. |
| * NEWS: Java fixes, more about the doc changes, liby issues. |
| |
| 2012-03-27 Tim Landscheidt <tim@tim-landscheidt.de> |
| |
| Java: Fix syntax error handling without error token. |
| * data/lalr1.java (YYParser::parse): Here. |
| * tests/java.at: Add test case. |
| |
| 2012-03-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: beware of -pedantic on large #line numbers. |
| * tests/local.at (AT_TEST_TABLES_AND_PARSE): Don't pass -pedantic |
| when compiling large canonical-LR parsers. |
| Reported by Tys Lefering. |
| http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00025.html |
| |
| 2012-03-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: when using the C++ compiler, use its flags too. |
| * tests/local.at: Go for colors. |
| (--compile-c-with-cxx): New option. |
| We used to pass "CC=$CXX" as command line argument, |
| but it was not possible to adjust CFLAGS accordingly |
| in atlocal, since it is loaded before assignments on |
| the command line are honored (so that the command line |
| takes precedence). |
| * tests/atlocal.in: Implement it. |
| * tests/local.mk: Use it. |
| |
| 2012-03-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: style changes in the Makefile. |
| * tests/local.mk: Prefer passing variable assignment by |
| the command line, instead of the environment, so that it |
| is reported in the logs. |
| Prefer single quotes for shell literal strings. |
| |
| 2012-03-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: beware of -pedantic on large #line numbers. |
| * tests/local.at (AT_TEST_TABLES_AND_PARSE): Don't pass -pedantic |
| when compiling large canonical-LR parsers. |
| Reported by Tys Lefering. |
| http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00025.html |
| |
| 2012-03-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: when using the C++ compiler, use its flags too. |
| * tests/local.at: Go for colors. |
| (--compile-c-with-cxx): New option. |
| We used to pass "CC=$CXX" as command line argument, |
| but it was not possible to adjust CFLAGS accordingly |
| in atlocal, since it is loaded before assignments on |
| the command line are honored (so that the command line |
| takes precedence). |
| * tests/atlocal.in: Implement it. |
| * tests/local.mk: Use it. |
| |
| 2012-03-24 Akim Demaille <akim@lrde.epita.fr> |
| |
| tests: fix dependencies. |
| * tests/local.mk (check_SCRIPTS): Add atlocal and atconfig so |
| that they are properly updated before running tests. |
| (RUN_TESTSUITE_deps): New. |
| Use it to factor the dependencies of "*-check" targets, |
| especially those that don't bounce to the regular |
| "check-local" target, since then they don't benefit from the |
| proper dependencies (such as atlocal). |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| Merge remote-tracking branch 'fsf/maint' |
| * fsf/maint: (404 commits) |
| doc: update the --verbose report format. |
| doc: spell check. |
| doc: stmt, not stmnt. |
| doc: save width. |
| doc: reformat grammar snippets. |
| doc: use only @example, not @smallexample. |
| doc: style changes. |
| doc: minor fixes to "Understanding" section |
| tests: minor fixes/simplifications |
| tests: be robust to quote style. |
| maint: update gnulib. |
| tests: be robust to POSIXLY_CORRECT being defined. |
| doc: fix environment issues. |
| regen. |
| tests: fix regressions. |
| glr: fix ambiguity reports. |
| doc: stylistic improvements. |
| maint: address sc_prohibit_doubled_word. |
| maint: address sc_prohibit_always-defined_macros. |
| maint: address sc_bindtextdomain, sc_program_name and sc_prohibit_HAVE_MBRTOWC. |
| ... |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: spell fix. |
| * doc/bison.texinfo: here. |
| Reported by Tim Landscheidt. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: update the --verbose report format. |
| * doc/bison.texinfo (Understanding): Adjust to match the |
| current format. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: spell check. |
| * doc/bison.texinfo: here. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: stmt, not stmnt. |
| * doc/bison.texinfo: s/stmnt/stmt/g. This is a |
| much more common abbreviation for "statement". |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: save width. |
| * doc/bison.texinfo (Language and Grammar): Use the same |
| layout for an example in all the versions, i.e., keep |
| as general case what used to be used only for Info. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: reformat grammar snippets. |
| * doc/bison.texinfo: Convert the grammar examples to |
| use a narrower style. This helps fitting into the |
| @smallbook constraints. |
| http://lists.gnu.org/archive/html/bison-patches/2012-03/msg00011.html |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: use only @example, not @smallexample. |
| * doc/bison.texinfo: Convert all @smallexamples into @examples. |
| Adjust layout where needed. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: style changes. |
| * doc/bison.texinfo: Avoid line width issues with TeX. |
| Upgrade ancient messages. |
| Move some comments to better looking places. |
| Add more @group. |
| (Mfcalc Symbol Table): Reduce variable scopes. |
| Prefer size_t for sizes. |
| Prefer declarations with an initial value. |
| Fix a @group environment. |
| |
| 2012-03-19 Paul Eggert <eggert@cs.ucla.edu> |
| |
| doc: minor fixes to "Understanding" section |
| * doc/bison.texinfo (Understanding): Minor wording fixes and |
| improvements. Fixes problems reported in |
| <https://savannah.gnu.org/patch/?4306>. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: update the --verbose report format. |
| * doc/bison.texinfo (Understanding): Adjust to match the |
| current format. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: spell check. |
| * doc/bison.texinfo: here. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: stmt, not stmnt. |
| * doc/bison.texinfo: s/stmnt/stmt/g. This is a |
| much more common abbreviation for "statement". |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: save width. |
| * doc/bison.texinfo (Language and Grammar): Use the same |
| layout for an example in all the versions, i.e., keep |
| as general case what used to be used only for Info. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: reformat grammar snippets. |
| * doc/bison.texinfo: Convert the grammar examples to |
| use a narrower style. This helps fitting into the |
| @smallbook constraints. |
| http://lists.gnu.org/archive/html/bison-patches/2012-03/msg00011.html |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: use only @example, not @smallexample. |
| * doc/bison.texinfo: Convert all @smallexamples into @examples. |
| Adjust layout where needed. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| doc: style changes. |
| * doc/bison.texinfo: Avoid line width issues with TeX. |
| Upgrade ancient messages. |
| Move some comments to better looking places. |
| Add more @group. |
| (Mfcalc Symbol Table): Reduce variable scopes. |
| Prefer size_t for sizes. |
| Prefer declarations with an initial value. |
| Fix a @group environment. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| c.m4: better newline control with b4_parse_param_use. |
| * data/c.m4: Use m4_ifvaln instead of m4_ifval where |
| applicable. |
| (b4_parse_param_use): Switch order between two nested |
| "if"s to avoid useless empty lines. |
| Adjust callers to avoid useless lines. |
| |
| 2012-03-19 Akim Demaille <akim@lrde.epita.fr> |
| |
| glr.c: remove (broken) support for YYPRINT. |
| YYPRINT uses yytoknum which glr does not define. Since YYPRINT |
| is considered obsolete, and did not work, don't fix its support, |
| remove it from glr.c. |
| |
| * data/c.m4 (yy_symbol_value_print): Use YYPRINT only for yacc.c. |
| * TODO: Done. |
| |
| 2012-03-17 Paul Eggert <eggert@cs.ucla.edu> |
| |
| doc: minor fixes to "Understanding" section |
| * doc/bison.texinfo (Understanding): Minor wording fixes and |
| improvements. Fixes problems reported in |
| <https://savannah.gnu.org/patch/?4306>. |
| |
| 2012-03-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| TODO: update. |
| |
| 2012-03-15 Akim Demaille <akim@lrde.epita.fr> |
| |
| gnulib: update. |
| |
| 2012-03-13 Akim Demaille <demaille@gostai.com> |
| |
| tests: minor fixes/simplifications |
| * tests/local.at (AT_BISON_CHECK_NO_XML): Simplify sed programs, |
| quotation, and default value assignments. |
| Ensure a proper value to the numeric variables. |
| Reported by Lie Yan. |
| http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html |
| |
| 2012-03-13 Akim Demaille <akim@lrde.epita.fr> |
| |
| maint: fix distcheck. |
| * examples/local.mk (MAINTAINERCLEANFILES): Complete, and rename as... |
| (CLEANFILES): this, |
| * examples/calc++/local.mk, examples/mfcalc/local.mk, |
| * examples/rpcalc/local.mk (CLEANFILES): Add the generated files. |
| |
| 2012-03-13 Akim Demaille <demaille@gostai.com> |
| |
| tests: minor fixes/simplifications |
| * tests/local.at (AT_BISON_CHECK_NO_XML): Simplify sed programs, |
| quotation, and default value assignments. |
| Ensure a proper value to the numeric variables. |
| Reported by Lie Yan. |
| http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html |
| |
| 2012-03-09 Akim Demaille <demaille@gostai.com> |
| |
| tests: be robust to POSIXLY_CORRECT being defined. |
| * tests/local.at (AT_BISON_CHECK_NO_XML): Check if |
| POSIXLY_CORRECT is defined, not if it is defined to 1. |
| Reported by Lie Yan. |
| http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html |
| |
| 2012-03-09 Akim Demaille <demaille@gostai.com> |
| |
| tests: be robust to quote style. |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>. |
| |
| * src/main.c (main): Define the quoting style we use. |
| * tests/atlocal.in: Use ASCII style quotes during the tests. |
| |
| 2012-03-09 Akim Demaille <demaille@gostai.com> |
| |
| maint: update gnulib. |
| * gnulib: update. |
| * src/scan-gram.l: Don't use the (former version of) STREQ. |
| |
| 2012-03-09 Akim Demaille <demaille@gostai.com> |
| |
| tests: remove quote magic from the bison test wrapper. |
| Basically, revert 4c4d35394d1bdb4dc3392482ab002bc111a3378f. |
| |
| * tests/bison.in: Leave bison's stderr as is. |
| |
| 2012-03-09 Akim Demaille <demaille@gostai.com> |
| |
| tests: be robust to quote style. |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>. |
| |
| * src/main.c (main): Define the quoting style we use. |
| * tests/atlocal.in: Use ASCII style quotes during the tests. |
| |
| 2012-03-09 Akim Demaille <demaille@gostai.com> |
| |
| avoid direct strncmp calls. |
| Before this change, bison would accept either .tab and _tab equivalently, |
| whatever the current platform. Besides, it was not obeying everywhere |
| to the possible definition of TAB_EXT to something else than .tab. |
| |
| For consistency, handle only TAB_EXT (".tab" on non DJGPP platforms). |
| Support for "_tab" is neither documented, nor tested. |
| |
| * src/system.h (STRNCMP_LIT): New. |
| From Jim Meyering. |
| (STRPREFIX_LIT): New. |
| * src/files.c, src/getargs.c: Use it. |
| |
| 2012-03-06 Akim Demaille <demaille@gostai.com> |
| |
| tests: be robust to POSIXLY_CORRECT being defined. |
| * tests/local.at (AT_BISON_CHECK_NO_XML): Check if |
| POSIXLY_CORRECT is defined, not if it is defined to 1. |
| Reported by Lie Yan. |
| http://lists.gnu.org/archive/html/bug-bison/2012-03/msg00000.html |
| |
| 2012-02-24 Akim Demaille <demaille@gostai.com> |
| |
| build: comment changes. |
| * Makefile.am, examples/calc++/local.mk, examples/local.mk, |
| * examples/mfcalc/local.mk, examples/rpcalc/local.mk, |
| * lib/local.mk, src/local.mk, tests/local.mk: |
| Make the copyright licenses more uniform. |
| |
| 2012-02-24 Akim Demaille <demaille@gostai.com> |
| |
| build: fix more example extraction issues. |
| * Makefile.am (dist_TESTS): New. |
| (TESTS, EXTRA_DIST): Run and ship them. |
| * examples/calc++/local.mk: examples/calc++/calc++.stamp no longer |
| exists, don't try to ship it. |
| (.yy.stamp): New recipe. |
| Use it. |
| * examples/calc++/local.mk, examples/mfcalc/local.mk, |
| * examples/rpcalc/local.mk: |
| Don't ship the sources. |
| Adjust the CPPFLAGS: there is nothing left in srcdir. |
| (MAINTAINERCLEANFILES): Remove, now we are in builddir. |
| (TESTS): Rename as... |
| (dist_TESTS): this. |
| |
| 2012-02-24 Akim Demaille <demaille@gostai.com> |
| |
| maint: fix example extraction issues. |
| calc++: don't rely on Automake to compile a C++ parser. |
| |
| Basically, revert commit 609b3d8096fb0cc1fa4d908b6e1a860ced260bda, |
| Automake 1.11.3 is not safe enough for C++ parser. |
| |
| * examples/calc++/calc++-parser.hh: Remove. |
| * examples/calc++/local.mk (examples/calc++/calc++-parser.stamp): |
| New. |
| |
| examples: factor the extractions into a single step |
| |
| extexi had to be run in the extraction directory. Now, it can be |
| given the files with expected output directory. This allows to |
| use $(*_extracted) variables (before we had to list again their |
| members, but limited to their base names). In turn, this also |
| allows fusing the extraction recipes into a single one. |
| |
| Also, it is currently too hard (or requires too much duplication, |
| since Make wants all the occurrences of the files to be prefixed with |
| $(srcdir)/, which is something Automake cannot support for *_SOURCES) |
| to work in the source tree. So extract, and compile scanners and parsers |
| in the build tree. |
| |
| * examples/extexi (basename): New. |
| (BEGIN): Now "file_wanted" maps base name to extracted file name. |
| * examples/calc++/local.mk, examples/mfcalc/local.mk, |
| * examples/rpcalc/local.mk: Fuse extraction rules into... |
| * examples/local.mk: Here. |
| (extract, extracted): New. |
| |
| 2012-02-23 Akim Demaille <demaille@gostai.com> |
| |
| maint: use STREQ/STRNEQ. |
| * doc/bison.texinfo: Space change. |
| * src/system.h (STREQ, STRNEQ): New. |
| * src/files.c, src/ielr.c, src/lalr.c, src/muscle-tab.c, |
| * src/output.c, src/print.c, src/print_graph.c, |
| * src/reader.c, src/scan-skel.l, src/tables.c, |
| * src/uniqstr.c: |
| Use them. |
| * src/scan-gram.l: Do not use streq.h, use system.h's STREQ. |
| * cfg.mk: The documentation is an exception. |
| |
| 2012-02-23 Akim Demaille <demaille@gostai.com> |
| |
| doc: fix environment issues. |
| * doc/bison.texinfo: Do not use @verbatim, in particular when |
| we use @group inside. |
| Use @quotation instead of @display for frequently asked questions, |
| it looks much nicer. |
| |
| 2012-02-23 Akim Demaille <demaille@gostai.com> |
| |
| doc: fix environment issues. |
| * doc/bison.texinfo: Do not use @verbatim, in particular when |
| we use @group inside. |
| Use @quotation instead of @display for frequently asked questions, |
| it looks much nicer. |
| |
| 2012-02-23 Akim Demaille <demaille@gostai.com> |
| |
| regen. |
| * src/parse-gram.h, src/parse-gram.c: regen. |
| |
| 2012-02-23 Akim Demaille <demaille@gostai.com> |
| |
| tests: fix regressions. |
| Exit status 63 is documented for version-mismatch. |
| * bootstrap.conf (gnulib_modules): Remove sysexits. |
| * src/system.h (EX_MISMATCH): Define. |
| * src/parse-gram.y (version_check): Use it instead of EX_CONFIG. |
| |
| Missing includes. |
| * tests/calc.at, tests/named-refs.at: Include assert.h. |
| |
| 2012-02-22 Akim Demaille <demaille@gostai.com> |
| |
| maint: gitignore. |
| * examples/mfcalc/.gitignore, examples/rpcalc/.gitignore: Fix. |
| |
| 2012-02-21 Akim Demaille <demaille@gostai.com> |
| |
| regen. |
| * src/parse-gram.c, src/parse-gram.h: regen. |
| |
| 2012-02-21 Akim Demaille <demaille@gostai.com> |
| |
| tests: fix regressions. |
| Exit status 63 is documented for version-mismatch. |
| * bootstrap.conf (gnulib_modules): Remove sysexits. |
| * src/system.h (EX_MISMATCH): Define. |
| * src/parse-gram.y (version_check): Use it instead of EX_CONFIG. |
| |
| Missing includes. |
| * tests/calc.at, tests/named-refs.at: Include assert.h. |
| |
| 2012-02-21 Akim Demaille <demaille@gostai.com> |
| |
| tests: post-process stderr to normalize quotes. |
| * tests/bison.in: Save bison's stderr, and convert gettextized |
| quotes to plain ASCII. |
| |
| 2012-02-21 Akim Demaille <demaille@gostai.com> |
| |
| glr: fix ambiguity reports. |
| * tests/glr-regression.at (Ambiguity reports): New. |
| |
| 2012-02-21 Akim Demaille <demaille@gostai.com> |
| |
| glr: fix ambiguity reports. |
| Fix a regression introduced in commit |
| 783aa653f4ca70a75919c8516b950494c612cbfe. |
| |
| * tests/glr-regression.at (Ambiguity reports): New. |
| * data/glr.c (yyreportTree): Fix an offset error. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| doc: stylistic improvements. |
| * doc/bison.texinfo: Prefer "continue" to empty loop bodies. |
| Add some @group/@end group to avoid poor page breaks. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address sc_prohibit_doubled_word. |
| * data/yacc.c, doc/bison.texinfo: Reword to avoid having to |
| disable that check. |
| * cfg.mk: No longer skip this test. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address sc_prohibit_always-defined_macros. |
| * cfg.mk: No longer skip it, except where EXIT_SUCCESS is used |
| as a witness for stdlib.h. |
| Skip this test when appropriate. |
| * data/yacc.c: Drop a note about why EXIT_SUCCESS is defined here. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address sc_bindtextdomain, sc_program_name and sc_prohibit_HAVE_MBRTOWC. |
| * bootstrap.conf (gnulib_modules): Require progname. |
| * src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it. |
| * cfg.mk (exclude): New. |
| Use it. |
| Skip lib/main.c for bindtextdomain and set_program_name. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove stray file. |
| * config.hin: Remove. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| doc: stylistic improvements. |
| * doc/bison.texinfo: Prefer "continue" to empty loop bodies. |
| Add some @group/@end group to avoid poor page breaks. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| doc: check the rpcalc. |
| * doc/bison.texinfo: Tag rpcalc.y snippets. |
| Add missing includes. |
| (Rpcalc Rules): Don't issue leading tabs. |
| Complete an Info menu. |
| Use @result. |
| * examples/rpcalc/local.mk: New. |
| * examples/rpcalc/rpcalc.test: New. |
| * examples/local.mk: Use them. |
| * examples/mfcalc/mfcalc.test: Remove dup test. |
| * examples/test: Disable debug traces. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| regen. |
| * src/parse-gram.c, src/parse-gram.h: Regen. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address sc_prohibit_doubled_word. |
| * data/yacc.c, doc/bison.texinfo: Reword to avoid having to |
| disable that check. |
| * cfg.mk: No longer skip this test. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address sc_prohibit_always-defined_macros. |
| * cfg.mk: No longer skip it, except where EXIT_SUCCESS is used |
| as a witness for stdlib.h. |
| Skip this test when appropriate. |
| * data/yacc.c: Drop a note about why EXIT_SUCCESS is defined here. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address sc_bindtextdomain, sc_program_name and sc_prohibit_HAVE_MBRTOWC. |
| * bootstrap.conf (gnulib_modules): Require progname. |
| * src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it. |
| * cfg.mk (exclude): New. |
| Use it. |
| Skip lib/main.c for bindtextdomain and set_program_name. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove stray file. |
| * config.hin: Remove. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| bitset: fix an incorrect error message. |
| * lib/bitset_stats.c: here. |
| Reported by Stefano Lattarini. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address some syntax-issues remaining after cherry-picking from master. |
| * cfg.mk: Skip bison generated files, 2.5 is generating trailing |
| blanks. This is already fixed in master. |
| * tests/conflicts.at, tests/java.at: Fix white space issues. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| regen. |
| * src/parse-gram.c, src/parse-gram.h: Regen. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| bitset: fix an incorrect error message. |
| * lib/bitset_stats.c: here. |
| Reported by Stefano Lattarini. |
| |
| 2012-02-19 Jim Meyering <meyering@redhat.com> |
| |
| maint: reenable sc_m4_quote_check |
| * cfg.mk (local-checks-to-skip): Reenable sc_m4_quote_check. |
| * m4/dmalloc.m4: Add quotes. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove trailing empty lines. |
| * cfg.mk: No longer skip sc_prohibit_empty_lines_at_EOF, except |
| for parse-gram.h (generated). |
| * examples/mfcalc/.gitignore, lib/.gitignore, m4/.gitignore, |
| * po/.gitignore, runtime-po/.gitignore: Remove trailing/leading |
| empty lines. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: avoid "magic number exit". |
| * cfg.mk (local-checks-to-skip): No longer skip it. |
| * bootstrap.conf (gnulib_modules): Add sysexits. |
| * doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y, |
| * src/system.h, tests/calc.at, tests/named-refs.at: Use assert |
| where appropriate instead of "if (...) exit". |
| Use symbolic exit status elsewhere. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: fix some syntax-check issues. |
| * cfg.mk (local-checks-to-skip): Remove |
| sc_prohibit_quotearg_without_use, sc_prohibit_strcmp, |
| sc_unmarked_diagnostics, sc_useless_cpp_parens. |
| (sc_unmarked_diagnostics): Skip DJGPP. |
| * data/yacc.c, src/LR0.c, src/closure.c, |
| * src/flex-scanner.h, src/gram.c, src/lalr.c, |
| * src/print-xml.c, src/print.c, src/print_graph.c, |
| * src/reader.c, src/reduce.c, src/tables.c: |
| Don't use parens with cpp's defined. |
| Remove useless includes. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: address a couple of syntax-check errors. |
| * cfg.mk (local-checks-to-skip): Remove sc_error_message_period |
| and sc_error_message_uppercase. |
| Address the uncovered issues. |
| * po/POTFILES.in: Add missing files. |
| * src/symtab.c: Remove useless includes. |
| * lib/bitset_stats.c, src/files.c, tests/glr-regression.at: Use |
| conformant error messages. |
| |
| 2012-02-19 Akim Demaille <demaille@gostai.com> |
| |
| maint: gnulib: upgrade. |
| |
| 2012-02-18 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove trailing empty lines. |
| * cfg.mk: No longer skip sc_prohibit_empty_lines_at_EOF, except |
| for parse-gram.h (generated). |
| * examples/mfcalc/.gitignore, lib/.gitignore, m4/.gitignore, |
| * po/.gitignore, runtime-po/.gitignore: Remove trailing/leading |
| empty lines. |
| |
| 2012-02-18 Akim Demaille <demaille@gostai.com> |
| |
| maint: regen. |
| * src/parse-gram.c, src/parse-gram.h: regen. |
| |
| 2012-02-18 Akim Demaille <demaille@gostai.com> |
| |
| maint: avoid "magic number exit". |
| * cfg.mk (local-checks-to-skip): No longer skip it. |
| * bootstrap.conf (gnulib_modules): Add sysexits. |
| * doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y, |
| * src/system.h, tests/calc.at, tests/named-refs.at: Use assert |
| where appropriate instead of "if (...) exit". |
| Use symbolic exit status elsewhere. |
| |
| 2012-02-18 Akim Demaille <demaille@gostai.com> |
| |
| maint: fix some syntax-check issues. |
| * cfg.mk (local-checks-to-skip): Remove |
| sc_prohibit_quotearg_without_use, sc_prohibit_strcmp, |
| sc_unmarked_diagnostics, sc_useless_cpp_parens. |
| (sc_unmarked_diagnostics): Skip DJGPP. |
| * data/yacc.c, src/LR0.c, src/closure.c, |
| * src/flex-scanner.h, src/gram.c, src/lalr.c, |
| * src/print-xml.c, src/print.c, src/print_graph.c, |
| * src/reader.c, src/reduce.c, src/tables.c: |
| Don't use parens with cpp's defined. |
| Remove useless includes. |
| |
| 2012-02-18 Akim Demaille <demaille@gostai.com> |
| |
| maint: address a couple of syntax-check errors. |
| * cfg.mk (local-checks-to-skip): Remove sc_error_message_period |
| and sc_error_message_uppercase. |
| Address the uncovered issues. |
| * po/POTFILES.in: Add missing files. |
| * src/symtab.c: Remove useless includes. |
| * lib/bitset_stats.c, src/files.c, tests/glr-regression.at: Use |
| conformant error messages. |
| |
| 2012-02-18 Akim Demaille <demaille@gostai.com> |
| |
| maint: gnulib: upgrade. |
| |
| 2012-02-17 Akim Demaille <demaille@gostai.com> |
| |
| doc: mfcalc: fix includes. |
| * doc/bison.texinfo: math.h is needed early. |
| |
| 2012-02-17 Akim Demaille <demaille@gostai.com> |
| |
| examples: factor the test suite. |
| * examples/mfcalc/test, examples/calc++/test: Extract the |
| common bits into... |
| * examples/test: here. |
| (cwd): New. |
| Use it to avoid a race on the temporary directory. |
| Reported by Jim Meyering. |
| * examples/mfcalc/test, examples/calc++/test: Rename into... |
| * examples/mfcalc/mfcalc.test, examples/calc++/calc++.test: these. |
| * examples/calc++/local.mk, examples/mfcalc/local.mk, |
| * examples/local.mk: Adjust. |
| |
| 2012-02-17 Akim Demaille <demaille@gostai.com> |
| |
| examples: fix the test suites. |
| * examples/calc++/test, examples/mfcalc/test (me): Be more |
| meaningfull: include the example name. |
| (prog): Factor. |
| (run): Avoid printf, use echo. |
| Add missing parens. |
| (cleanup): New. |
| Call it on trap. |
| Remove the previous "rm" that did the cleanup. |
| Move into a private directory to avoid concurrency issues. |
| Reported by Jim Meyering. |
| |
| 2012-02-17 Jim Meyering <meyering@redhat.com> |
| |
| examples: link mfcalc with -lm for uses of pow, cos, atan, etc. |
| * examples/mfcalc/local.mk (examples_mfcalc_mfcalc_LDADD): Define. |
| |
| 2012-02-16 Akim Demaille <demaille@gostai.com> |
| |
| mfcalc: extract and exercise. |
| * examples/mfcalc/local.mk, examples/mfcalc/test: New, |
| based on calc++'s ones. |
| * examples/local.mk: Include mfcalc/local.mk. |
| |
| 2012-02-16 Akim Demaille <demaille@gostai.com> |
| |
| calc++: factor for other extracted tests. |
| * Makefile.am (TESTS, check_PROGRAMS): Initialize here. |
| * examples/local.mk (doc, extexi): Define here. |
| * examples/calc++/local.mk: Adjust accordingly. |
| * configure.ac: Ask for parallel-tests (for the way the logs |
| are handled). |
| * examples/calc++/test: As a consequence, always be verbose. |
| ($prog): New. |
| (run): Use it. |
| Sort the tests in a more natural order (simplest first). |
| |
| 2012-02-16 Akim Demaille <demaille@gostai.com> |
| |
| doc: mfcalc: send errors to stderr. |
| * doc/bison.texinfo (Mfcalc Lexer): New. |
| (Mfcalc Main): Move the definition of main and yyerror here, for |
| clarity. |
| Let yyerror report on stderr. |
| |
| 2012-02-16 Akim Demaille <demaille@gostai.com> |
| |
| doc: fix mfcalc code. |
| * doc/bison.texinfo (Multi-function Calc): Add missing includes. |
| Fix the rendering of the result: use @result and remove the |
| initial tabulation in the actual code. |
| Fix stylistic issues: avoid the , operator. |
| Add extexi mark-up. |
| * examples/extexi: Also support @smallexample. |
| |
| 2012-02-16 Akim Demaille <demaille@gostai.com> |
| |
| tests: c++: stylistic changes. |
| * tests/c++.at: Don't use void for incoming arguments. |
| Prefer cstdlib to stdlib.h. |
| |
| 2012-02-16 Jim Meyering <meyering@redhat.com> |
| |
| tests: avoid c++ failure due to lack of getenv decl |
| * tests/c++.at (Syntax error as exception): Avoid spurious failure |
| at least when compiling with g++-4.7.x due to lack of declaration |
| of getenv. Include <stdlib.h>. |
| |
| 2012-02-15 Akim Demaille <demaille@gostai.com> |
| |
| maint: rely on Automake for parsers. |
| * Makefile.am (AM_YFLAGS): Automake looks for "-d" alone. |
| Move other options in here. |
| (BISON): New. |
| (YACC): Use it. |
| (bison_SOURCES): Now that automake can see `-d' in AM_YFLAGS, |
| we can rely on it to compile and ship the parser header |
| files. |
| |
| Based on commit 737406a32c201471699bfa0843d1f432f3ec29ab and |
| commit 3d6ca339083c278d907c9f030f4ba6bc5ecb07f2. |
| |
| 2012-02-15 Akim Demaille <demaille@gostai.com> |
| |
| maint: trust Automake for parser headers. |
| * examples/calc++/local.mk, src/local.mk: Now that automake |
| can see `-d' in AM_YFLAGS, we can rely on it to compile |
| and ship the parser header files. |
| |
| 2012-02-15 Akim Demaille <demaille@gostai.com> |
| |
| maint: help Automake reading Yacc flags. |
| * Makefile.am (AM_YFLAGS): Automake looks for "-d" alone. |
| |
| 2012-02-15 Akim Demaille <demaille@gostai.com> |
| |
| calc++: rely on Automake. |
| Rely on $(YACC) being the bison being built, and let Automake do the |
| rest. It turned out to be much more difficult than anticipated, for |
| various reasons, including some bad behavior from Automake 1.11.2 |
| which (i) generates calc++-parser.h instead of calc++-parser.hh, and |
| (ii) leaves an #include "y.tab.h" in the generated parser instead |
| of #include "calc++-parser.h". |
| |
| The authors of Automake appear to be aware of the problem, |
| http://lists.gnu.org/archive/html/automake/2011-05/msg00008.html |
| so a simple work around will suffice for the time being. |
| |
| * examples/calc++/y.tab.h, examples/calc++/calc++-parser.hh: New. |
| To work around Automake 1.11.2 issues. |
| * examples/calc++/local.mk: Remove all the rules for compilation |
| with bison, leave them to Automake. |
| So provide it with "calc++-parse.yy" as a source file. |
| (calc_sources_generated, calc_sources_extracted): Rename as. |
| (calc_generated, calc_extracted): these. |
| (calc_sources): New. |
| Fix them. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: tidy the Makefile a bit. |
| * src/local.mk: Put yacc related variables together. |
| (AUTOMAKE_OPTIONS): Move to... |
| * Makefile.am: here. |
| Remove an old Emacs mode request which disables Automake support. |
| * src/local.mk (YACC, AM_YFLAGS): Move to... |
| * Makefile.am: here, as they will be used by other local.mks. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: de-recurse the handling of examples |
| The directory was still using a local Makefile.am because it provides |
| "scoped" Make variables: these examples are not meant to use the same |
| CPPFLAGS etc. If we were to use the same -I set, we'd pick up |
| gnulib's stdio.h for instance, which we do not want for these simple |
| examples. |
| |
| Yet, as a result, the dependencies are less accurate, there is code |
| duplication, etc. This is especially perceptible when trying to |
| extract more examples from the documentation, as will be done in |
| forthcoming changes. |
| |
| In order to make the tuning of CPPFLAGS easier, discard the predefined |
| -I from Automake. |
| |
| * examples/calc++/Makefile.am: Rename as... |
| * examples/calc++/local.mk: this. |
| Adjust the paths which are now rooted in top_srcdir/top_builddir. |
| Handle BISON_CXX_WORKS here, instead of the too crude previous |
| approach that completely discarded the whole directory. |
| ($(BISON)): Remove now useless bouncing recipe. |
| (calc___CPPFLAGS): New. |
| Stay away from -Ilib. |
| * Makefile.am, configure.ac, examples/local.mk, |
| * examples/calc++/test: Adjust. |
| |
| * configure.ac: Pass nostdinc to Automake. |
| * src/local.mk, lib/local.mk (AM_CPPFLAGS): Move to... |
| * Makefile.am: here. |
| |
| * src/local.mk, examples/calc++/Makefile.am (BISON, BISON_IN): Factor |
| to... |
| * Makefile.am: here. |
| * tests/local.mk: Use it. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| variant: fix the example. |
| * examples/variant.yy: Adjust to "assert" being now |
| "parse.assert". |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: more authors. |
| * AUTHORS: here. |
| Suggested by Tys Lefering. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: add license headers. |
| * examples/calc++/test, examples/variant.yy, AUTHORS, THANKS, |
| * tests/atlocal.in, tests/bison.in: Add license headers. |
| Reported by Tys Lefering. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove obsolete file. |
| * etc/make-ChangeLogs: Remove (used for rcs to cvs migration!). |
| Reported by Tys Lefering. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: more authors. |
| * AUTHORS: here. |
| Suggested by Tys Lefering. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: add license headers. |
| * examples/calc++/test, examples/variant.yy, AUTHORS, THANKS, |
| * tests/atlocal.in, tests/bison.in: Add license headers. |
| Reported by Tys Lefering. |
| |
| 2012-02-14 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove obsolete file. |
| * etc/make-ChangeLogs: Remove (used for rcs to cvs migration!). |
| Reported by Tys Lefering. |
| |
| 2012-02-10 Akim Demaille <demaille@gostai.com> |
| |
| lalr1.cc: also handle syntax_error when calling yylex. |
| * data/lalr1.cc (parse): Catch syntax_error around yylex and |
| forward them to errlab1. |
| * tests/c++.at (Syntax error as exception): Check support for |
| syntax exceptions raised by the scanner. |
| * NEWS, doc/bison.texinfo: Document it. |
| |
| 2012-02-10 Akim Demaille <demaille@gostai.com> |
| |
| tests: lalr1.cc: check syntax_error. |
| * tests/c++.at (Syntax error as exception): New. |
| |
| 2012-02-10 Akim Demaille <demaille@gostai.com> |
| |
| tests: don't require locations uselessly. |
| * tests/c++.at (Syntax error discarding no lookahead): Contrary to |
| 2.5, C++ parsers can work without locations. |
| |
| 2012-02-10 Akim Demaille <demaille@gostai.com> |
| |
| maint: more silent rules. |
| * tests/local.mk (TESTSUITE_AT): Include plackage.m4. |
| Adjust dependencies. |
| Make testsuite.at its first argument. |
| (package.m4): Be silent. |
| (testsuite): Be silent. |
| Use $<. |
| |
| 2012-02-10 Akim Demaille <demaille@gostai.com> |
| |
| skeletons: simplify the protections against "unused" warnings. |
| * data/c.m4 (b4_parse_param_use): Also accept optional arguments |
| to "use". |
| Simplify callers. |
| * data/glr.c (yyuserAction): Simplify use of b4_parse_param_use. |
| (yy_reduce_print): Don't use b4_parse_param_use, as all the arguments |
| _are_ used. |
| * data/lalr1.cc (YY_SYMBOL_PRINT): Even when disabled, "use" the |
| symbol argument. |
| This neutralizes a warning in yypush_ when there are no symbols |
| with a semantic values. |
| (yy_destroy_): Remove useless "use" of yymsg. |
| |
| 2012-02-10 Akim Demaille <demaille@gostai.com> |
| |
| glr: formatting changes. |
| * data/glr.c: Split long strings. |
| |
| 2012-02-08 Akim Demaille <demaille@gostai.com> |
| |
| use a more consistent quoting style. |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>. |
| Use quotearg as often as possible instead of leaving the choice of |
| the quotes to the translators. Use shorter messages. Factor similar |
| messages to a single format, to make localization easier. |
| |
| * src/files.c, src/getargs.c, src/muscle-tab.c, src/reader.c |
| * src/scan-code.l, src/scan-gram.l, src/symtab.c: |
| Use quote() or quotearg_colon() on printf arguments instead of |
| quotes in the format string. |
| * data/bison.m4: Keep sync with the changes in muscle-tab.c. |
| |
| * tests/skeletons.at, tests/input.at, tests/regression.at: Adjust |
| expected messages. |
| |
| 2012-02-08 Akim Demaille <demaille@gostai.com> |
| |
| use a more consistent quoting style. |
| See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>. |
| Use quotearg as often as possible instead of leaving the choice of |
| the quotes to the translators. Use shorter messages. Factor similar |
| messages to a single format, to make localization easier. |
| |
| * src/files.c, src/getargs.c, src/muscle-tab.c, src/reader.c |
| * src/scan-code.l, src/scan-gram.l, src/symtab.c: |
| Use quote() or quotearg_colon() on printf arguments instead of |
| quotes in the format string. |
| * data/bison.m4: Keep sync with the changes in muscle-tab.c. |
| |
| * tests/skeletons.at, tests/input.at, tests/regression.at: Adjust |
| expected messages. |
| |
| 2012-01-31 Jim Meyering <meyering@redhat.com> |
| |
| maint: reenable sc_m4_quote_check |
| * cfg.mk (local-checks-to-skip): Reenable sc_m4_quote_check. |
| * m4/dmalloc.m4: Add quotes. |
| |
| 2012-01-31 Jim Meyering <meyering@redhat.com> |
| |
| maint: force "make syntax-check" to pass by skipping failing tests |
| * cfg.mk (local-checks-to-skip): Skip all currently-failing tests. |
| Remove changelog-check; it's long gone. |
| |
| 2012-01-31 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove stray debug code. |
| * src/Makefile.am (echo): Remove. |
| |
| 2012-01-31 Akim Demaille <demaille@gostai.com> |
| |
| maint: space changes. |
| * src/Makefile.am: Use 2 leading spaces for variable definition |
| spreading over several lines. |
| |
| 2012-01-31 Akim Demaille <demaille@gostai.com> |
| |
| maint: more silent-rules. |
| * doc/local.mk, src/local.mk, examples/calc++/Makefile.am: Use |
| $(AM_V_GEN) and $(AM_V_at) where appropriate. |
| |
| 2012-01-31 Jim Meyering <meyering@redhat.com> |
| |
| do not ignore errors like ENOSPC,EIO when writing to stdout |
| Standard output was never explicitly closed, so we could not |
| detect failure. Thus, bison would ignore the errors of writing |
| to a full file system and getting an I/O error on write, but only |
| for standard output, e.g., for --print-localedir, --print-datadir, |
| --help and some verbose output. |
| Now, "bison --print-datadir > /dev/full" reports the write failure: |
| bison: write error: No space left on device |
| Before, it would exit 0 with no diagnostic, implying success. |
| This is not an issue for "--output=-" or the other FILE-accepting |
| command-line options, because unlike most other GNU programs, |
| an output file argument of "-" is treated as the literal "./-", |
| rather than standard output. |
| * bootstrap.conf (gnulib_modules): Add closeout. |
| * src/main.c: Include "closeout.h". |
| Use atexit to ensure we close stdout. |
| * .gitignore: Ignore new files pulled in via gnulib-tool. |
| |
| 2012-01-31 Akim Demaille <demaille@gostai.com> |
| |
| maint: more silent-rules. |
| * doc/local.mk, src/local.mk, examples/calc++/Makefile.am: Use |
| $(AM_V_GEN) and $(AM_V_at) where appropriate. |
| |
| 2012-01-29 Jim Meyering <meyering@redhat.com> |
| |
| do not ignore errors like ENOSPC,EIO when writing to stdout |
| Standard output was never explicitly closed, so we could not |
| detect failure. Thus, bison would ignore the errors of writing |
| to a full file system and getting an I/O error on write, but only |
| for standard output, e.g., for --print-localedir, --print-datadir, |
| --help and some verbose output. |
| Now, "bison --print-datadir > /dev/full" reports the write failure: |
| bison: write error: No space left on device |
| Before, it would exit 0 with no diagnostic, implying success. |
| This is not an issue for "--output=-" or the other FILE-accepting |
| command-line options, because unlike most other GNU programs, |
| an output file argument of "-" is treated as the literal "./-", |
| rather than standard output. |
| * bootstrap.conf (gnulib_modules): Add closeout. |
| * src/main.c: Include "closeout.h". |
| Use atexit to ensure we close stdout. |
| * .gitignore: Ignore new files pulled in via gnulib-tool. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| tests: fix expected output. |
| * tests/actions.at (YYBACKUP): here. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| tests: fix expected output. |
| * tests/actions.at (YYBACKUP): here. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| maint: fix configure.ac |
| Fix commit 1890a2a816dab86c23cc1d0af8fac3986335deb7. |
| |
| * configure.ac: Fix variable assignment. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| yacc: fix YYBACKUP. |
| Reported by David Kastrup: |
| https://lists.gnu.org/archive/html/bug-bison/2011-10/msg00002.html. |
| |
| * data/yacc.c (YYBACKUP): Accept rhs size. |
| Restore the proper state value. |
| * TODO (YYBACKUP): Make it... |
| * tests/actions.at: a new test case. |
| * NEWS, THANKS: Update. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| maint: update TODO. |
| * TODO (Labeling the symbols): Remove, it's done ("Name references"). |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| maint: update THANKS. |
| * THANKS: Update Tys's address, on his request. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| maint: fix --gcc-warnings support. |
| * configure.ac: Use enable_gcc_warnings instead of enableval, |
| which is valid only with AC_ARG_ENABLE. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| maint: silent-rules. |
| * configure.ac: Ask for silent-rules support. |
| Enable it by default. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| maint: remove trailing blanks. |
| * src/scan-code.l: Here. |
| |
| 2012-01-26 Akim Demaille <demaille@gostai.com> |
| |
| yacc: fix YYBACKUP. |
| Reported by David Kastrup: |
| https://lists.gnu.org/archive/html/bug-bison/2011-10/msg00002.html. |
| |
| * data/yacc.c (YYBACKUP): Accept rhs size. |
| Restore the proper state value. |
| * TODO (YYBACKUP): Make it... |
| * tests/actions.at: a new test case. |
| * NEWS, THANKS: Update. |
| |
| 2012-01-25 Akim Demaille <demaille@gostai.com> |
| |
| maint: update TODO. |
| * TODO (Labeling the symbols): Remove, it's done ("Name references"). |
| |
| 2012-01-25 Akim Demaille <demaille@gostai.com> |
| |
| maint: update THANKS. |
| * THANKS: Update Tys's address, on his request. |
| |
| 2012-01-25 Akim Demaille <demaille@gostai.com> |
| |
| maint: fix --gcc-warnings support. |
| * configure.ac: Use enable_gcc_warnings instead of enableval, |
| which is valid only with AC_ARG_ENABLE. |
| |
| 2012-01-25 Akim Demaille <demaille@gostai.com> |
| |
| maint: silent-rules. |
| * configure.ac: Ask for silent-rules support. |
| Enable it by default. |
| |
| 2012-01-25 Paul Eggert <eggert@cs.ucla.edu> |
| |
| tests: port to Solaris 10 'diff -u' |
| * tests/regression.at (parse-gram.y: LALR = IELR): Port to Solaris 10, |
| where "diff -u X X" outputs "No differences encountered" |
| instead of outputting nothing. Reported by Tomohiro Suzuki in |
| <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00101.html>. |
| |
| 2012-01-25 Jim Meyering <meyering@redhat.com> |
| |
| build: avoid possibly-replaced fprintf in liby-source, yyerror.c |
| * lib/yyerror.c (yyerror): Use fputs and fputc rather than fprintf |
| with a mere "%s\n" format. Always return 0 now, on the assumption |
| that the return value was never used anyway. |
| Don't include <config.h> after all. This avoids a problem |
| reported by Thiru Ramakrishnan in |
| http://lists.gnu.org/archive/html/help-bison/2011-11/msg00000.html |
| * cfg.mk: Exempt lib/yyerror.c from the sc_require_config_h_first test. |
| * THANKS: Update. |
| |
| 2012-01-24 Paul Eggert <eggert@cs.ucla.edu> |
| |
| tests: port to Solaris 10 'diff -u' |
| * tests/regression.at (parse-gram.y: LALR = IELR): Port to Solaris 10, |
| where "diff -u X X" outputs "No differences encountered" |
| instead of outputting nothing. Reported by Tomohiro Suzuki in |
| <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00101.html>. |
| |
| 2012-01-24 Jim Meyering <meyering@redhat.com> |
| |
| maint: generate ChangeLog from git log |
| * Makefile.am (gen-ChangeLog): New rule. |
| (dist-hook): Depend on it. |
| (EXTRA_DIST): Distribute the two ChangeLog-* files. |
| * bootstrap.conf (gnulib_modules): Add gitlog-to-changelog. |
| (bootstrap_post_import_hook): Ensure that ChangeLog exists. |
| * build-aux/git-log-fix: New file. |
| * ChangeLog-2012: Renamed ... |
| * ChangeLog: ... from this. |
| * ChangeLog-1998: Renamed ... |
| * OChangeLog: ...from this |
| * .gitignore: Add ChangeLog. |
| |
| 2012-01-24 Jim Meyering <meyering@redhat.com> |
| |
| change more quotes in source, and adjust tests to match |
| Run this command to change each `%s' to '%s' in source directories: |
| git grep -l '`%s'\' src djgpp data \ |
| |xargs perl -pi -e '$q="'\''";s/`%s$q/$q%s$q/g' |
| * data/bison.m4: Affected per the above. |
| * djgpp/subpipe.c: Likewise. |
| * src/files.c: Likewise. |
| * src/getargs.c: Likewise. |
| * src/muscle-tab.c: Likewise. |
| * src/reader.c: Likewise. |
| * tests/glr-regression.at: Adjust to match. |
| * tests/input.at: Likewise. |
| * tests/push.at: Likewise. |
| * tests/skeletons.at: Likewise. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| quote consistently and make tests pass with new quoting from gnulib |
| Updating to gnulib pulled in new quote and quotarg modules, |
| by which quoting is now done like 'this' rather than `this'. |
| That change induces many "make check" test failures. This change |
| adapts code and tests so that "make check" passes once again. |
| * src/scan-code.l: Quote like 'this', not like `this'. |
| * src/scan-gram.l: Likewise. |
| * src/symtab.c: Likewise. |
| * tests/actions.at: Adjust tests to match. |
| * tests/input.at: Likewise. |
| * tests/named-refs.at: Likewise. |
| * tests/output.at: Likewise. |
| * tests/regression.at: Likewise. |
| * lib/.gitignore: Regenerate. |
| * m4/.gitignore: Likewise. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| build: avoid possibly-replaced fprintf in liby-source, yyerror.c |
| * lib/yyerror.c (yyerror): Use fputs and fputc rather than fprintf |
| with a mere "%s\n" format. Always return 0 now, on the assumption |
| that the return value was never used anyway. |
| Don't include <config.h> after all. This avoids a problem |
| reported by Thiru Ramakrishnan in |
| http://lists.gnu.org/archive/html/help-bison/2011-11/msg00000.html |
| * cfg.mk: Exempt lib/yyerror.c from the sc_require_config_h_first test. |
| * THANKS: Update. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| build: update gnulib and autoconf submodules to latest (cherry picked from commit 728415f885e5cb8e518c8576fa6e1f541e384130) |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| build: manually update bootstrap from gnulib, and adapt |
| Updating to the latest bootstrap from gnulib involves more of a |
| change than usual, and updating to the latest gnulib would involve |
| its own set of challenges with the upcoming quoting changes, so |
| we update bootstrap manually and separately. |
| * bootstrap: Update from gnulib. |
| * lib/Makefile.am: Initialize more variables to empty, so that gnulib.mk |
| can append to them with "+=". |
| * bootstrap.conf (gnulib_mk_hook): Remove. No longer honored. |
| (gnulib_tool_option_extras): Generate gnulib.mk. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| maint: include <config.h> first |
| * cfg.mk (exclude_file_name_regexp--sc_require_config_h_first): |
| Exempt data/glr.c and data/yacc.c from the include-config.h-first |
| requirement. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| build: include <config.h> from lib/yyerror.c |
| * lib/yyerror.c: Include <config.h>. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| maint: list djgpp/subpipe.c in po/POTFILES.in |
| * po/POTFILES.in: Add djgpp/subpipe.c. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| maint: placate the space-TAB syntax-check |
| * cfg.mk (exclude_file_name_regexp--sc_space_tab): Exempt |
| tests/input.at and tests/c++.at, since they appear to use |
| SP-TAB sequences deliberately. |
| * OChangeLog: Remove space-before-TAB. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| doc: correct typo: s/can not/cannot/ |
| * doc/bison.texinfo (Bug Reports): s/can not/cannot/ |
| And remove trailing blanks. |
| |
| 2012-01-23 Jim Meyering <meyering@redhat.com> |
| |
| build: generalize etc/prefix-gnulib-mk |
| This script hard-coded "libbison" and lib/gnulib.mk. |
| Adjust the script to require a --lib-name=$gnulib_name option |
| and a FILE argument like lib/$gnulib_mk. |
| Also add support for --help and --version. |
| * etc/prefix-gnulib-mk: Generalize. |
| * bootstrap.conf (bootstrap_post_import_hook): Update its invocation. |
| |
| 2012-01-22 Jim Meyering <meyering@redhat.com> |
| |
| maint: get gpl-3.0 from gnulib |
| * bootstrap.conf (gnulib_modules): Add gpl-3.0. |
| * doc/gpl-3.0.texi: Remove from version control, now that |
| we get it via gnulib. |
| * doc/.gitignore: Ignore it. |
| |
| 2012-01-20 Akim Demaille <demaille@gostai.com> |
| |
| maint: be more robust to gnulib's FOO_H variables. |
| * configure.ac: Instead of listing gnulib's variables, look for |
| them among AC_SUBST variables. |
| |
| 2012-01-20 Jim Meyering <meyering@redhat.com> |
| |
| maint: generate ChangeLog from git log |
| * Makefile.am (gen-ChangeLog): New rule. |
| (dist-hook): Depend on it. |
| (EXTRA_DIST): Distribute the two ChangeLog-* files. |
| * bootstrap.conf (gnulib_modules): Add gitlog-to-changelog. |
| (bootstrap_post_import_hook): Ensure that ChangeLog exists. |
| * build-aux/git-log-fix: New file. |
| * ChangeLog-2012: Renamed ... |
| * ChangeLog: ... from this. |
| * ChangeLog-1998: Renamed ... |
| * OChangeLog: ...from this |
| * .gitignore: Add ChangeLog. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| change more quotes in source, and adjust tests to match |
| Run this command to change each `%s' to '%s' in source directories: |
| git grep -l '`%s'\' src djgpp data \ |
| |xargs perl -pi -e '$q="'\''";s/`%s$q/$q%s$q/g' |
| * data/bison.m4: Affected per the above. |
| * djgpp/subpipe.c: Likewise. |
| * src/files.c: Likewise. |
| * src/getargs.c: Likewise. |
| * src/muscle-tab.c: Likewise. |
| * src/reader.c: Likewise. |
| * tests/glr-regression.at: Adjust to match. |
| * tests/input.at: Likewise. |
| * tests/push.at: Likewise. |
| * tests/skeletons.at: Likewise. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| quote consistently and make tests pass with new quoting from gnulib |
| Updating to gnulib pulled in new quote and quotarg modules, |
| by which quoting is now done like 'this' rather than `this'. |
| That change induces many "make check" test failures. This change |
| adapts code and tests so that "make check" passes once again. |
| * src/scan-code.l: Quote like 'this', not like `this'. |
| * src/scan-gram.l: Likewise. |
| * src/symtab.c: Likewise. |
| * tests/actions.at: Adjust tests to match. |
| * tests/input.at: Likewise. |
| * tests/named-refs.at: Likewise. |
| * tests/output.at: Likewise. |
| * tests/regression.at: Likewise. |
| * lib/.gitignore: Regenerate. |
| * m4/.gitignore: Likewise. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| build: update gnulib and autoconf submodules to latest |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| build: manually update bootstrap from gnulib, and adapt |
| Updating to the latest bootstrap from gnulib involves more of a |
| change than usual, and updating to the latest gnulib would involve |
| its own set of challenges with the upcoming quoting changes, so |
| we update bootstrap manually and separately. |
| * bootstrap: Update from gnulib. |
| * Makefile.am: Initialize more variables to empty, so that gnulib.mk |
| can append to them with "+=". |
| * bootstrap.conf (gnulib_mk_hook): Remove. No longer honored. |
| (bootstrap_post_import_hook): Instead, run the same command, |
| etc/prefix-gnulib-mk lib/$gnulib_mk, via slightly different API. |
| Temporarily disable "bootstrap_sync=true". |
| * etc/prefix-gnulib-mk: Don't prepend "lib/" to tokens like -I$(... |
| or "\". |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| maint: include <config.h> first |
| * cfg.mk (exclude_file_name_regexp--sc_require_config_h_first): |
| Exempt data/glr.c and data/yacc.c from the include-config.h-first |
| requirement. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| build: include <config.h> from lib/yyerror.c |
| * lib/yyerror.c: Include <config.h>. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| maint: list djgpp/subpipe.c in po/POTFILES.in |
| * po/POTFILES.in: Add djgpp/subpipe.c. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| maint: placate the space-TAB syntax-check |
| * cfg.mk (exclude_file_name_regexp--sc_space_tab): Exempt |
| tests/input.at and tests/c++.at, since they appear to use |
| SP-TAB sequences deliberately. |
| * OChangeLog: Remove space-before-TAB. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| maint: remove final trailing space |
| * src/scan-gram.l (%): Remove single space at end of line. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| maint: get gpl-3.0 from gnulib |
| * bootstrap.conf (gnulib_modules): Add gpl-3.0. |
| * doc/gpl-3.0.texi: Remove from version control, now that |
| we get it via gnulib. |
| * doc/.gitignore: Ignore it. |
| |
| 2012-01-19 Jim Meyering <meyering@redhat.com> |
| |
| doc: correct typo: s/can not/cannot/ |
| * doc/bison.texinfo (Bug Reports): s/can not/cannot/ |
| And remove trailing blanks. |