Use "%define variant" in bench.pl.

* etc/bench.pl.in: No longer use the pseudo directive %variants,
	just use %define variants.
This commit is contained in:
Akim Demaille
2008-10-22 05:57:46 -05:00
parent ccde1f98b0
commit f6038cb8c3
3 changed files with 13 additions and 16 deletions

View File

@@ -1,3 +1,9 @@
2008-11-07 Akim Demaille <demaille@gostai.com>
Use "%define variant" in bench.pl.
* etc/bench.pl.in: No longer use the pseudo directive %variants,
just use %define variants.
2008-11-07 Akim Demaille <demaille@gostai.com> 2008-11-07 Akim Demaille <demaille@gostai.com>
Regen. Regen.

View File

@@ -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 =cut
sub directives($@) sub directives($@)
{ {
my ($bench, @directive) = @_; my ($bench, @directive) = @_;
my $res = "/* Directives for bench `$bench'. */\n"; my $res = "/* Directives for bench `$bench'. */\n";
for my $d (@directive) $res .= join ("\n", @directive) . "\n";
{
$res .= $d . "\n"
unless $d eq '%variant';
}
$res .= "/* End of directives for bench `$bench'. */\n"; $res .= "/* End of directives for bench `$bench'. */\n";
return $res; return $res;
} }
@@ -527,7 +519,7 @@ sub generate_grammar_variant ($$@)
{ {
my ($base, $max, @directive) = @_; my ($base, $max, @directive) = @_;
my $directives = directives ($base, @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" my $out = new IO::File ">$base.y"
or die; or die;
@@ -563,7 +555,6 @@ EOF
if ($variant) if ($variant)
{ {
print $out <<'EOF'; print $out <<'EOF';
%code variant {int,std::string}
%token <std::string> TEXT %token <std::string> TEXT
%token <int> NUMBER %token <int> NUMBER
%printer { std::cerr << "Number: " << $$; } <int> %printer { std::cerr << "Number: " << $$; } <int>
@@ -821,10 +812,10 @@ sub bench_variant_parser ()
( (
"f-union" => ['%skeleton "lalr1-fusion.cc"'], "f-union" => ['%skeleton "lalr1-fusion.cc"'],
"f-uni-deb" => ['%skeleton "lalr1-fusion.cc"', '%debug'], "f-uni-deb" => ['%skeleton "lalr1-fusion.cc"', '%debug'],
"f-var" => ['%skeleton "lalr1-fusion.cc"', '%variant'], "f-var" => ['%skeleton "lalr1-fusion.cc"', '%define variant'],
"f-var-deb" => ['%skeleton "lalr1-fusion.cc"', '%debug', '%variant'], "f-var-deb" => ['%skeleton "lalr1-fusion.cc"', '%debug', '%define variant'],
"f-var-dtr" => ['%skeleton "lalr1-fusion.cc"', '%variant', "%code {\n#define VARIANT_DESTROY\n}"], "f-var-dtr" => ['%skeleton "lalr1-fusion.cc"', '%define variant', "%code {\n#define VARIANT_DESTROY\n}"],
"f-var-deb-dtr" => ['%skeleton "lalr1-fusion.cc"', '%debug', '%variant', "%code {\n#define VARIANT_DESTROY\n}"], "f-var-deb-dtr" => ['%skeleton "lalr1-fusion.cc"', '%debug', '%define variant', "%code {\n#define VARIANT_DESTROY\n}"],
) )
); );
} }

View File

@@ -58,7 +58,7 @@ typedef std::list<std::string> strings_type;
%% %%
result: result:
list { std::cout << $1 << std::endl; } list { std::cout << $1 << std::endl; }
; ;
list: list: