This series of patches was prompted by Tom Shields, who reported that using several glr2.cc parsers together leads to either linking conflicts or undefined behavior (probably because of One Definition Rule violations).
According to my tests, we should no longer have such issues. However my tests are weak, and a real world check would be most interesting. So, users of glr2.cc (especially you, Tom), please test this tarball, and report the result. https://www.lrde.epita.fr/~akim/private/bison/bison-3.8.1.21-21068.tar.gz https://www.lrde.epita.fr/~akim/private/bison/bison-3.8.1.21-21068.tar.lz https://www.lrde.epita.fr/~akim/private/bison/bison-3.8.1.21-21068.tar.xz I have not yet installed these patches. I will in the near future (in case there were comments). Cheers! PS/ The diffs are `diff -w`, to avoid all the reindentation noise. Akim Demaille (14): glr2.cc: don't publish YY_EXCEPTIONS glr2.cc: put semantic_option into an unnamed namespace glr2.cc: prefer unnamed namespace to 'static' glr2.cc: put create_state_set_index in unnamed namespace glr2.cc: move glr_stack and glr_state into the parser class glr2.cc: style: clarify control flow glr2.cc: move state_stack into the unnamed namespace glr2.cc: put glr_state_set and glr_stack_item in unnamed namespace glr2.cc: prefer using, and remove useless type aliases glr2.cc: use only symbol_kind_type, not yysymbol_kind_t glr2.cc: move strong_index_alias into the unnamed namespace glr2.cc: check linking conflicts glr2.cc: kill trailing white spaces glr2.cc: don't pass %parse-param to destroy data/skeletons/glr2.cc | 4444 ++++++++++++++++++++-------------------- tests/headers.at | 13 +- 2 files changed, 2251 insertions(+), 2206 deletions(-) -- 2.32.0
