summaryrefslogtreecommitdiff
path: root/THANKS
Commit message (Collapse)AuthorAgeFilesLines
* c++: provide backward compatibility on by_typeAkim Demaille2020-05-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* c++: use modern idioms to make classes non-copyableAkim Demaille2020-05-011-0/+1
| | | | | | | | | 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.
* Merge branch 'maint'Akim Demaille2020-04-051-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
| * build: fix compatibility with old compilersAkim Demaille2020-04-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | examples: don't use yysyntax_error_argumentsAkim Demaille2020-03-281-0/+1
|/ | | | | | | | | | | | | | | | 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.
* code: be robust to reference with invalid tagsAkim Demaille2020-03-061-1/+2
| | | | | | | | | | 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.
* examples: be more robust to spaces in pathsAkim Demaille2020-01-211-0/+1
| | | | | | | | | 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.
* CI: use ICC againAkim Demaille2020-01-191-0/+2
| | | | | | | | 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.
* package: bump copyrights to 2020Akim Demaille2020-01-101-1/+1
| | | | Run 'make update-copyright'.
* tests: avoid creating files whose name collide with standard headersAkim Demaille2019-11-261-1/+2
| | | | | | | | | 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'.
* examples: fix missing dependenciesAkim Demaille2019-10-241-0/+1
| | | | | | | | | | | 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.
* style: update comment in reader.cYuichiro Kaneko2019-10-231-0/+1
| | | | | | rrhs and rlhs were removed by b2ed6e5826e772162719db595446b2c58e4ac5d6. * src/reader.c (packgram): Update comment.
* glr: display line numbers in tracesAkim Demaille2019-10-111-1/+2
| | | | | | | Suggested by Lars Maier. * data/skeletons/glr.c: Also display rule locations when rules are deferred, and rejected.
* yacc: use the most appropriate integral type for state numbersAkim Demaille2019-09-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* c++: add copy ctors for compatibility with the IAR compilerAkim Demaille2019-09-271-0/+1
| | | | | | | | 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).
* quotearg: avoid leaksAkim Demaille2019-09-221-0/+1
| | | | | | | 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.
* fix: don't die when EOF token is defined twiceAkim Demaille2019-09-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | 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.
* check for memory exhaustionAkim Demaille2019-09-081-0/+1
| | | | | | | | | | | 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.
* diagnostics: fix invalid error message indentationLászló Várady2019-09-081-0/+1
| | | | | | | | | | | | | 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.
* thanks: fix an addressAkim Demaille2019-05-221-1/+1
|
* doc: avoid Texinfo portability issuesAkim Demaille2019-05-201-0/+1
| | | | | | | | | | 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.
* diagnostics: don't crash when libtextstyle is installedAkim Demaille2019-05-191-0/+1
| | | | | | | | | 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.
* diagnostics: %pure-parser is obsoleteAkim Demaille2019-05-191-0/+1
| | | | | | | | | | | 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.
* CI: use a pipeline: first build the tarball, then check itAkim Demaille2019-05-191-0/+1
| | | | | | | | | | | | 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.
* doc: use colors for diagnostics in TeX tooAkim Demaille2019-05-091-0/+2
| | | | | | | | | 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.
* diagnostics: don't try to quote special filesAkim Demaille2019-04-231-0/+1
| | | | | | | | | 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.
* lalr: fix segmentation violationAkim Demaille2019-03-301-0/+1
| | | | | | | | | | | | | | | | | | | 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.
* examples: add an example with a reentrant parser in Flex+BisonAkim Demaille2019-02-171-0/+1
| | | | | | | | | | | 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.
* gram: fix handling of nterms in actions when some are unusedAkim Demaille2019-02-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* package: bump copyrights to 2019Akim Demaille2019-01-051-1/+1
|
* package: make bison a relocatable packageAkim Demaille2018-12-251-0/+2
| | | | | | | | | | | | | | | | | | 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.
* c++: fix double free when a symbol_type was movedAkim Demaille2018-12-241-0/+1
| | | | | | | | | | | | | | | | | 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.
* d: add skeleton for the D languageAkim Demaille2018-12-041-0/+1
| | | | | | | 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.
* c++: using macros around user types breaks when they include commaAkim Demaille2018-11-201-0/+1
| | | | | | | | | | | | | | | | | 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.
* build: fix issues in the generated tarballAkim Demaille2018-11-081-0/+1
| | | | | | | | | | | 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.
* build: fix typoAkim Demaille2018-11-071-0/+1
| | | | | | | | Reported by Horst Von Brand. https://savannah.gnu.org/support/?109580 * examples/local.mk (.PHOMY): Rename as... (.PHONY): this.
* examples: ship themAkim Demaille2018-11-061-0/+1
| | | | | | | | | | | | | | | | | | | 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.
* examples: #include <cstring> in calc++Adam Sampson2018-11-021-0/+1
| | | | | strerror is defined by <string.h>, and recent versions of GNU libstdc++ no longer include this automatically from <string>.
* build: fix use of gnulib Make variablesAkim Demaille2018-10-301-0/+1
| | | | | | | | 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.
* build: add missing gnulib libsAkim Demaille2018-10-201-0/+1
| | | | | | Reported by Denis Excoffier. * lib/local.mk, src/local.mk: here.
* THANKS: add Josh SorefAkim Demaille2018-10-051-0/+1
|
* timevar: don't declare getrusage if we don't use itAkim Demaille2018-09-221-0/+1
| | | | | | | | | 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.
* examples: beware of shell portability issuesAkim Demaille2018-09-021-0/+1
| | | | | | | | | | | | 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.
* lalr1.cc: support compilation with disabled support for exceptionsAkim Demaille2018-08-191-0/+1
| | | | | | | | | | | | | | | | 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.
* C++: fix portability issue with MSVC 2017Akim Demaille2018-08-181-0/+1
| | | | | | | | | | | | | | | | | 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.
* build: fix concurrent build failureAkim Demaille2018-08-181-0/+2
| | | | | | | 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.
* doc: clarify the destructor selection exampleAkim Demaille2018-08-181-0/+1
| | | | | | | Reported by Gary L Peskin. http://lists.gnu.org/archive/html/help-bison/2016-02/msg00000.html * doc/bison.texi (Destructor Decl): here.
* portability: don't use _Pragma with ICCAkim Demaille2018-08-181-0/+1
| | | | | | | | | | | | | | | 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.
* escape properly the file names in #line for printer/destructorAkim Demaille2018-08-181-0/+1
| | | | | | | | | | | | | | | | 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.
* add support for typed mid-rule actionsAkim Demaille2018-08-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.