summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorTheophile Ranquet <ranquet@lrde.epita.fr>2012-12-26 16:26:17 +0100
committerTheophile Ranquet <ranquet@lrde.epita.fr>2013-01-11 18:57:08 +0100
commitca42755f13e176c481a537ce2bb1ec735e09915f (patch)
tree5ee383771354134552ea4c8a3c5ae3128cfef246 /etc
parentbcf54c336eb1ed48e229448790ec1300fbef0a82 (diff)
downloadbison-ca42755f13e176c481a537ce2bb1ec735e09915f.tar.gz
bench: add %b directive to use a specific Bison
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.
Diffstat (limited to 'etc')
-rwxr-xr-xetc/bench.pl.in10
1 files changed, 9 insertions, 1 deletions
diff --git a/etc/bench.pl.in b/etc/bench.pl.in
index 6b1e87dd..59cadee4 100755
--- a/etc/bench.pl.in
+++ b/etc/bench.pl.in
@@ -35,6 +35,7 @@ I<directives>:
| 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"
@@ -806,7 +807,8 @@ sub compile ($)
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";
}
@@ -1048,6 +1050,12 @@ sub parse_dirs ()
@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];