X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/1fa5d8bbf92cc7ab3f7294b8f4f4465b04d4444a..5ab8c47bcf5088cf420db6e03cd44bfa68e92ca0:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 83ae569c..a7e2b729 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +2008-11-03 Akim Demaille + + Use variants to support objects as semantic values. + This patch was inspired by work by Michiel De Wilde. But he used Boost + variants which (i) requires Boost on the user side, (ii) is slow, and + (iii) has useless overhead (the parser knows the type of the semantic value + there is no reason to duplicate this information as Boost.Variants do). + + This implementation reserves a buffer large enough to store the largest + objects. yy::variant implements this buffer. It was implemented with + Quentin Hocquet. + + * src/output.c (type_names_output): New. + (output_skeleton): Invoke it. + * data/c++.m4 (b4_variant_if): New. + (b4_symbol_value): If needed, provide a definition for variants. + * data/lalr1.cc (b4_symbol_value, b4_symbol_action_) + (b4_symbol_variant, _b4_char_sizeof_counter, _b4_char_sizeof_dummy) + (b4_char_sizeof, yy::variant): New. + (parser::parse): If variants are requested, define + parser::union_type, parser::variant, change the definition of + semantic_type, construct $$ before running the user action instead + of performing a default $$ = $1. + * examples/variant.yy: New. + Based on an example by Michiel De Wilde. + 2008-11-03 Akim Demaille Parameterize the extraction of semantic values.