#! /usr/bin/perl -w
-# Copyright (C) 2006, 2008-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc.
#
# This file is part of Bison, the GNU Compiler Compiler.
#
| 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"
#if USE_TOKEN_CTOR
yy::parser::symbol_type yylex();
#else
- yy::parser::token_type yylex(yy::parser::semantic_type* yylval,
- yy::parser::location_type* yylloc);
+ yy::parser::token_type yylex(yy::parser::semantic_type* yylvalp,
+ yy::parser::location_type* yyllocp);
#endif
// Conversion to string.
#if USE_TOKEN_CTOR
yy::parser::symbol_type yylex()
#else
-yy::parser::token_type yylex(yy::parser::semantic_type* yylval,
- yy::parser::location_type* yylloc)
+yy::parser::token_type yylex(yy::parser::semantic_type* yylvalp,
+ yy::parser::location_type* yyllocp)
#endif
{
typedef yy::parser::location_type location_type;
#if USE_TOKEN_CTOR
return yy::parser::make_END_OF_FILE (location_type ());
#else
- *yylloc = location_type ();
+ *yyllocp = location_type ();
return token::END_OF_FILE;
#endif
}
return yy::parser::make_NUMBER (stage, location_type ());
#else
# if defined ONE_STAGE_BUILD
- yylval->build(stage);
+ yylvalp->build(stage);
# elif USE_VARIANTS
- yylval->build<int>() = stage;
+ yylvalp->build<int>() = stage;
# else
- yylval->ival = stage;
+ yylvalp->ival = stage;
# endif
- *yylloc = location_type ();
+ *yyllocp = location_type ();
return token::NUMBER;
#endif
}
return yy::parser::make_TEXT ("A string.", location_type ());
#else
# if defined ONE_STAGE_BUILD
- yylval->build(std::string("A string."));
+ yylvalp->build(std::string("A string."));
# elif USE_VARIANTS
- yylval->build<std::string>() = std::string("A string.");
+ yylvalp->build<std::string>() = std::string("A string.");
# else
- yylval->sval = new std::string("A string.");
+ yylvalp->sval = new std::string("A string.");
# endif
- *yylloc = location_type ();
+ *yyllocp = location_type ();
return token::TEXT;
#endif
}
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";
}
@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];