]> git.saurik.com Git - bison.git/blobdiff - etc/bench.pl.in
The single-stack C++ parser is now the standard one.
[bison.git] / etc / bench.pl.in
index 22328cfa91381893cc4820f7c799281d778c7710..91c35b997aa218feeb3b06c22128e9ca30a0c012 100755 (executable)
@@ -147,21 +147,13 @@ sub verbose($$)
 
 Format the list of directives for Bison for bench named C<$bench>.
 
 
 Format the list of directives for Bison for bench named C<$bench>.
 
-The special fake C<%variant> directive requests the use of
-Boost.Variants instead of a regular union.  So don't pass it, it is
-not a valid directive.
-
 =cut
 
 sub directives($@)
 {
   my ($bench, @directive) = @_;
   my $res = "/* Directives for bench `$bench'. */\n";
 =cut
 
 sub directives($@)
 {
   my ($bench, @directive) = @_;
   my $res = "/* Directives for bench `$bench'. */\n";
-  for my $d (@directive)
-    {
-      $res .= $d . "\n"
-        unless $d eq '%variant';
-    }
+  $res .= join ("\n", @directive) . "\n";
   $res .= "/* End of directives for bench `$bench'. */\n";
   return $res;
 }
   $res .= "/* End of directives for bench `$bench'. */\n";
   return $res;
 }
@@ -527,7 +519,7 @@ sub generate_grammar_variant ($$@)
 {
   my ($base, $max, @directive) = @_;
   my $directives = directives ($base, @directive);
 {
   my ($base, $max, @directive) = @_;
   my $directives = directives ($base, @directive);
-  my $variant = grep { $_ eq '%variant' } @directive;
+  my $variant = grep { $_ eq '%define variant' } @directive;
 
   my $out = new IO::File ">$base.y"
     or die;
 
   my $out = new IO::File ">$base.y"
     or die;
@@ -563,7 +555,6 @@ EOF
   if ($variant)
     {
       print $out <<'EOF';
   if ($variant)
     {
       print $out <<'EOF';
-%code variant {int,std::string}
 %token <std::string> TEXT
 %token <int> NUMBER
 %printer { std::cerr << "Number: " << $$; } <int>
 %token <std::string> TEXT
 %token <int> NUMBER
 %printer { std::cerr << "Number: " << $$; } <int>
@@ -590,7 +581,7 @@ EOF
     }
   else
     {
     }
   else
     {
-      # Not using Boost variants.
+      # Not using Bison variants.
       print $out <<'EOF';
 %union {int ival; std::string* sval;}
 %token <sval> TEXT
       print $out <<'EOF';
 %union {int ival; std::string* sval;}
 %token <sval> TEXT
@@ -819,12 +810,13 @@ sub bench_variant_parser ()
   bench_grammar
     ('variant',
      (
   bench_grammar
     ('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}"],
+      "f-union"         => ['%skeleton "lalr1.cc"'],
+      "f-uni-deb"   => ['%skeleton "lalr1.cc"', '%debug'],
+      "f-var"       => ['%skeleton "lalr1.cc"', '%define variant'],
+      "f-var-deb" => ['%skeleton "lalr1.cc"', '%debug', '%define variant'],
+      "f-var-dtr"       => ['%skeleton "lalr1.cc"', '%define variant', "%code {\n#define VARIANT_DESTROY\n}"],
+      "f-var-deb-dtr" => ['%skeleton "lalr1.cc"', '%debug', '%define variant', "%code {\n#define VARIANT_DESTROY\n}"],
+      "f-var-deb-dtr-ass" => ['%skeleton "lalr1.cc"', '%debug', '%define variant', "%code {\n#define VARIANT_DESTROY\n}", "%define assert"],
      )
     );
 }
      )
     );
 }
@@ -842,8 +834,8 @@ sub bench_fusion_parser ()
   bench_grammar
     ('variant',
      (
   bench_grammar
     ('variant',
      (
-      "split"         => [],
-      "fused"         => ['%skeleton "lalr1-fusion.cc"'],
+      "split"         => ['%skeleton "lalr1-split.cc"'],
+      "fused"         => ['%skeleton "lalr1.cc"'],
      )
     );
 }
      )
     );
 }