]> git.saurik.com Git - bison.git/commitdiff
bench: add %b directive to use a specific Bison
authorTheophile Ranquet <ranquet@lrde.epita.fr>
Wed, 26 Dec 2012 15:26:17 +0000 (16:26 +0100)
committerTheophile Ranquet <ranquet@lrde.epita.fr>
Fri, 11 Jan 2013 17:57:08 +0000 (18:57 +0100)
For example,
  $ bench.pl -v '%s lalr1.cc & %d variant & ( %b ~/old-bison/bin/bison
    | %b ~/new-bison/bin/bison )' -g list -i 10000

* etc/bench.pl.in: Here.

etc/bench.pl.in

index 6b1e87ddac113a190c4a801f4ca92cb27614133c..59cadee4f906dd1ebb72a5bd7f67b072d80a5096 100755 (executable)
@@ -35,6 +35,7 @@ I<directives>:
      | directives & directives  -- Concatenation
      | [ directives> ]          -- Optional
      | ( directives> )          -- Parentheses
      | directives & directives  -- Concatenation
      | [ directives> ]          -- Optional
      | ( directives> )          -- Parentheses
+     | %b PATH                  -- Use bison at PATH for this bench
      | #d NAME[=VALUE]          -- %code { #define NAME [VALUE] }
      | %d NAME[=VALUE]          -- %define NAME ["VALUE"]
      | %s skeleton              -- %skeleton "skeleton"
      | #d NAME[=VALUE]          -- %code { #define NAME [VALUE] }
      | %d NAME[=VALUE]          -- %define NAME ["VALUE"]
      | %s skeleton              -- %skeleton "skeleton"
@@ -806,7 +807,8 @@ sub compile ($)
 
   my $compiler = $language eq 'C++' ? $cxx : $cc;
 
 
   my $compiler = $language eq 'C++' ? $cxx : $cc;
 
-  run "$bison $base.y -o $base.c";
+  my $my_bison = `sed -ne '/%bison "\\(.*\\)"/{s//\\1/;p;q;}' $base.y`;
+  run ((length $my_bison ? $my_bison : $bison) . " $base.y -o $base.c");
   run "$compiler -o $base $cflags $base.c";
 }
 
   run "$compiler -o $base $cflags $base.c";
 }
 
@@ -1048,6 +1050,12 @@ sub parse_dirs ()
       @res = ("%skeleton \"$token[0]\"");
       shift @token;
     }
       @res = ("%skeleton \"$token[0]\"");
       shift @token;
     }
+  elsif ($token[0] eq '%b')
+    {
+      shift @token;
+      @res = ("/*\n%bison \"$token[0]\"\\\n*/");
+      shift @token;
+    }
   else
     {
       @res = $token[0];
   else
     {
       @res = $token[0];