- "union" => [],
- "variant" => ['%variant'],
- "union-debug" => ['%debug'],
- "variant-debug" => ['%debug', '%variant'],
+ "f-union" => ['%skeleton "lalr1-fusion.cc"'],
+ "f-uni-deb" => ['%skeleton "lalr1-fusion.cc"', '%debug'],
+ "f-var" => ['%skeleton "lalr1-fusion.cc"', '%variant'],
+ "f-var-deb" => ['%skeleton "lalr1-fusion.cc"', '%debug', '%variant'],
+ "f-var-dtr" => ['%skeleton "lalr1-fusion.cc"', '%variant', "%code {\n#define VARIANT_DESTROY\n}"],
+ "f-var-deb-dtr" => ['%skeleton "lalr1-fusion.cc"', '%debug', '%variant', "%code {\n#define VARIANT_DESTROY\n}"],
+ )
+ );
+}
+
+=item C<bench_fusion_parser ()>
+
+Bench the C++ lalr1.cc parser using Boost.Variants or %union.
+
+=cut
+
+sub bench_fusion_parser ()
+{
+ bench_grammar
+ ('variant',
+ (
+ "split" => [],
+ "fused" => ['%skeleton "lalr1-fusion.cc"'],