mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 10:13:03 +00:00
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:
@@ -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.
|
||||||
|
|||||||
@@ -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}"],
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user