tests: factor the definition of main

With Théophile Ranquet.

* tests/local.at (AT_MAIN_DEFINE): New.
(AT_YYERROR_DEFINE): Improve formatting.
* tests/actions.at, tests/c++.at, tests/conflicts.at,
* tests/glr-regression.at, tests/input.at, tests/regression.at,
* tests/skeletons.at, tests/torture.at: Adjust.
* tests/c++.at: Add missing %skeleton for a PUSHDEFS, and a missing
PUSH/POPDEFS for another test.
This commit is contained in:
Akim Demaille
2013-01-15 18:29:45 +01:00
parent 70b7c35747
commit 3ef9fa8f83
9 changed files with 79 additions and 181 deletions

View File

@@ -52,11 +52,7 @@ exp: { putchar ('0'); }
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE(["123456789"])[ ]AT_YYLEX_DEFINE(["123456789"])[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -295,11 +291,7 @@ sum_of_the_five_previous_values:
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE[ ]AT_YYLEX_DEFINE[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_CHECK([-d -v -o input.c input.y], 0) AT_BISON_CHECK([-d -v -o input.c input.y], 0)
@@ -330,11 +322,7 @@ sum: { printf ("%d\n", $0.val + $-1.val + $-2.val); } ;
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE[ ]AT_YYLEX_DEFINE[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_FULL_COMPILE([input]) AT_FULL_COMPILE([input])
@@ -1256,11 +1244,7 @@ start: { USE($$); } ;
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE[ ]AT_YYLEX_DEFINE[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -1422,11 +1406,7 @@ yylex (void)
} }
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_CHECK([[-o input.c input.y]]) AT_BISON_CHECK([[-o input.c input.y]])
@@ -1712,11 +1692,7 @@ accept: /*empty*/ {
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE(["a"])[ ]AT_YYLEX_DEFINE(["a"])[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
AT_BISON_CHECK([[-o input.c input.y]]) AT_BISON_CHECK([[-o input.c input.y]])
@@ -1763,13 +1739,7 @@ exp:
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE(["bcd"], [*lvalp = (toknum + 1) * 10])[ ]AT_YYLEX_DEFINE(["bcd"], [*lvalp = (toknum + 1) * 10])[
]AT_MAIN_DEFINE[
int
main (void)
{
yydebug = !!getenv("YYDEBUG");
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS

View File

@@ -163,14 +163,7 @@ namespace yy
} }
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_MAIN_DEFINE[
int
main ()
{
yy::parser p;
p.set_debug_level (!!getenv ("YYDEBUG"));
return p.parse ();
}
]]) ]])
AT_BISON_CHECK([-o list.cc list.yy]) AT_BISON_CHECK([-o list.cc list.yy])
@@ -370,6 +363,8 @@ AT_CLEANUP
AT_SETUP([[Syntax error discarding no lookahead]]) AT_SETUP([[Syntax error discarding no lookahead]])
AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"])
AT_DATA_GRAMMAR([[input.yy]], AT_DATA_GRAMMAR([[input.yy]],
[[%skeleton "lalr1.cc" [[%skeleton "lalr1.cc"
@@ -421,13 +416,9 @@ yy::parser::error (const std::string &m)
std::cerr << m << std::endl; std::cerr << m << std::endl;
} }
int ]AT_MAIN_DEFINE[
main ()
{
yy::parser parser;
return parser.parse ();
}
]]) ]])
AT_BISON_CHECK([[-o input.cc input.yy]]) AT_BISON_CHECK([[-o input.cc input.yy]])
AT_COMPILE_CXX([[input]]) AT_COMPILE_CXX([[input]])
# This used to print "Discarding 'a'." again at the end. # This used to print "Discarding 'a'." again at the end.
@@ -437,6 +428,7 @@ Discarding 'a'.
Reducing 'a'. Reducing 'a'.
]]) ]])
AT_BISON_OPTION_POPDEFS
AT_CLEANUP AT_CLEANUP
@@ -446,6 +438,8 @@ AT_CLEANUP
AT_SETUP([[Syntax error as exception]]) AT_SETUP([[Syntax error as exception]])
AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"])
AT_DATA_GRAMMAR([[input.yy]], AT_DATA_GRAMMAR([[input.yy]],
[[%skeleton "lalr1.cc" [[%skeleton "lalr1.cc"
@@ -499,15 +493,9 @@ yy::parser::error (const std::string &m)
{ {
std::cerr << "error: " << m << std::endl; std::cerr << "error: " << m << std::endl;
} }
]AT_MAIN_DEFINE[
int
main ()
{
yy::parser parser;
parser.set_debug_level (!!getenv ("YYDEBUG"));
return parser.parse ();
}
]]) ]])
AT_BISON_CHECK([[-o input.cc input.yy]]) AT_BISON_CHECK([[-o input.cc input.yy]])
AT_COMPILE_CXX([[input]]) AT_COMPILE_CXX([[input]])
@@ -518,6 +506,7 @@ error: invalid character
caught error caught error
]]) ]])
AT_BISON_OPTION_POPDEFS
AT_CLEANUP AT_CLEANUP

View File

@@ -221,30 +221,9 @@ public Object getLVal ()
/*-------. /*-------.
| main. | | main. |
`-------*/]AT_SKEL_JAVA_IF([[ `-------*/
]AT_MAIN_DEFINE
class input ])
{
public static void main (String args[]) throws IOException
{
YYParser p = new YYParser ();
p.parse ();
}
}]], [AT_SKEL_CC_IF([[
int
main (void)
{
yy::parser parser;
return parser.parse ();
}]], [[
int
main (void)
{
return yyparse ();
}]])])[
]])
AT_FULL_COMPILE([[input]]) AT_FULL_COMPILE([[input]])
@@ -492,13 +471,8 @@ reduce-nonassoc: %prec 'a';
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE(["aaa"])[ ]AT_YYLEX_DEFINE(["aaa"])[
]AT_MAIN_DEFINE
int ])
main (void)
{
return yyparse ();
}
]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
# Show canonical LR's failure. # Show canonical LR's failure.

View File

@@ -326,7 +326,7 @@ int yylex (void)
} }
int int
main(int argc, char* argv[]) main (int argc, char* argv[])
{ {
int res; int res;
input = stdin; input = stdin;
@@ -488,11 +488,7 @@ start:
%% %%
]AT_YYLEX_DEFINE(["a"])[ ]AT_YYLEX_DEFINE(["a"])[
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse () != 1;
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -501,7 +497,7 @@ AT_BISON_CHECK([[-o glr-regr5.c glr-regr5.y]], 0, [],
]]) ]])
AT_COMPILE([glr-regr5]) AT_COMPILE([glr-regr5])
AT_PARSER_CHECK([[./glr-regr5]], 0, [], AT_PARSER_CHECK([[./glr-regr5]], 1, [],
[syntax is ambiguous [syntax is ambiguous
]) ])
@@ -540,11 +536,7 @@ start: 'a' | 'a' ;
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE(["a"])[ ]AT_YYLEX_DEFINE(["a"])[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse () != 1;
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -553,7 +545,7 @@ AT_BISON_CHECK([[-o glr-regr6.c glr-regr6.y]], 0, [],
]]) ]])
AT_COMPILE([glr-regr6]) AT_COMPILE([glr-regr6])
AT_PARSER_CHECK([[./glr-regr6]], 0, AT_PARSER_CHECK([[./glr-regr6]], 1,
[Destructor called. [Destructor called.
], ],
[syntax is ambiguous [syntax is ambiguous
@@ -722,12 +714,7 @@ int yylex (void)
} }
} }
int ]AT_MAIN_DEFINE[
main (void)
{
yyparse();
return 0;
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -1600,11 +1587,7 @@ yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
return input[toknum++]; return input[toknum++];
} }
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse () != 1;
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -1613,7 +1596,7 @@ AT_BISON_CHECK([[-o glr-regr17.c glr-regr17.y]], 0, [],
]]) ]])
AT_COMPILE([glr-regr17]) AT_COMPILE([glr-regr17])
AT_PARSER_CHECK([[./glr-regr17]], 0, [], AT_PARSER_CHECK([[./glr-regr17]], 1, [],
[1.1-2.2: syntax is ambiguous [1.1-2.2: syntax is ambiguous
]) ])
@@ -1655,11 +1638,7 @@ sym3: %merge<merge> { $$ = 0; } ;
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE[ ]AT_YYLEX_DEFINE[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS

View File

@@ -859,12 +859,7 @@ AT_DATA([main.c],
#include "input.h" #include "input.h"
int yyparse (void); int yyparse (void);
]AT_MAIN_DEFINE[
int
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS

View File

@@ -129,6 +129,8 @@ m4_define([_AT_BISON_OPTION_PUSHDEFS],
[m4_fatal([$0: Invalid arguments: $@])])dnl [m4_fatal([$0: Invalid arguments: $@])])dnl
m4_pushdef([AT_DEFINES_IF], m4_pushdef([AT_DEFINES_IF],
[m4_bmatch([$3], [%defines], [$1], [$2])]) [m4_bmatch([$3], [%defines], [$1], [$2])])
m4_pushdef([AT_DEBUG_IF],
[m4_bmatch([$3], [%debug\|%define parse.trace], [$1], [$2])])
m4_pushdef([AT_SKEL_CC_IF], m4_pushdef([AT_SKEL_CC_IF],
[m4_bmatch([$3], [%language "[Cc]\+\+"\|%skeleton "[a-z0-9]+\.cc"], [$1], [$2])]) [m4_bmatch([$3], [%language "[Cc]\+\+"\|%skeleton "[a-z0-9]+\.cc"], [$1], [$2])])
m4_pushdef([AT_SKEL_JAVA_IF], m4_pushdef([AT_SKEL_JAVA_IF],
@@ -289,6 +291,7 @@ m4_popdef([AT_SKEL_JAVA_IF])
m4_popdef([AT_GLR_CC_IF]) m4_popdef([AT_GLR_CC_IF])
m4_popdef([AT_LALR1_CC_IF]) m4_popdef([AT_LALR1_CC_IF])
m4_popdef([AT_DEFINES_IF]) m4_popdef([AT_DEFINES_IF])
m4_popdef([AT_DEBUG_IF])
AT_LOC_POPDEF])dnl AT_LOC_POPDEF])dnl
])# AT_BISON_OPTION_POPDEFS ])# AT_BISON_OPTION_POPDEFS
@@ -424,7 +427,8 @@ AT_YYERROR_SEES_LOC_IF([[
[c++], [[/* A C++ error reporting function. */ [c++], [[/* A C++ error reporting function. */
void void
]AT_NAME_PREFIX[::parser::error (]AT_LOCATION_IF([[const location_type& l, ]])[const std::string& m) ]AT_NAME_PREFIX[::parser::error (]AT_LOCATION_IF([[const location_type& l, ]])[const std::string& m)
{ std::cerr << ]AT_LOCATION_IF([l << ": " << ])[m << std::endl; {
std::cerr << ]AT_LOCATION_IF([l << ": " << ])[m << std::endl;
}]], }]],
[java], [AT_LOCATION_IF([[public void yyerror (Calc.Location l, String s) [java], [AT_LOCATION_IF([[public void yyerror (Calc.Location l, String s)
{ {
@@ -442,6 +446,38 @@ void
]) ])
# AT_MAIN_DEFINE
# --------------
m4_define([AT_MAIN_DEFINE],
[m4_case(AT_LANG,
[c],
[[#include <stdlib.h> /* getenv. */
int
main (void)
{]AT_DEBUG_IF([
yydebug = !!getenv("YYDEBUG");])[
return !!yyparse ();
}]],
[c++],
[[#include <cstdlib> // getenv.
int
main (void)
{
yy::parser p;]AT_DEBUG_IF([
p.set_debug_level (!!getenv("YYDEBUG"));])[
return !!p.parse ();
}]],
[java],
[[class input
{
public static void main (String args[]) throws IOException
{
YYParser p = new YYParser ();
p.parse ();
}
}]])])
## --------------- ## ## --------------- ##
## Running Bison. ## ## Running Bison. ##
## --------------- ## ## --------------- ##

View File

@@ -464,12 +464,7 @@ exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!";
%% %%
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE([{ SPECIAL }])[ ]AT_YYLEX_DEFINE([{ SPECIAL }])[
]AT_MAIN_DEFINE[
int
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -899,12 +894,7 @@ yyparse ()
return parser.parse (); return parser.parse ();
} }
])[ ])[
]AT_MAIN_DEFINE[
int
main (void)
{
return yyparse ();
}
]]) ]])
])# _AT_DATA_DANCER_Y ])# _AT_DATA_DANCER_Y
@@ -983,12 +973,7 @@ yylex (]AT_LALR1_CC_IF([int *lval], [void])[)
assert (toknum < sizeof tokens / sizeof *tokens); assert (toknum < sizeof tokens / sizeof *tokens);
return tokens[toknum++]; return tokens[toknum++];
} }
]AT_MAIN_DEFINE[
int
main (void)
{
return yyparse ();
}
]]) ]])
])# _AT_DATA_EXPECT2_Y ])# _AT_DATA_EXPECT2_Y
@@ -1180,12 +1165,7 @@ sr_conflict:
]AT_YYERROR_DEFINE[ ]AT_YYERROR_DEFINE[
]AT_YYLEX_DEFINE([{ 1, 2, 3, 0 }])[ ]AT_YYLEX_DEFINE([{ 1, 2, 3, 0 }])[
]AT_MAIN_DEFINE[
int
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -1277,11 +1257,7 @@ syntax_error:
recovery by shifting 3 tokens) in order to detect any loss of the recovery by shifting 3 tokens) in order to detect any loss of the
reallocated buffer. */ reallocated buffer. */
]AT_YYLEX_DEFINE(["abc"])[ ]AT_YYLEX_DEFINE(["abc"])[
int ]AT_MAIN_DEFINE[
main (void)
{
return yyparse ();
}
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS

View File

@@ -106,12 +106,7 @@ yylex (void)
{ {
return 'a'; return 'a';
} }
]AT_MAIN_DEFINE[
int
main (void)
{
return yyparse ();
}
]]) ]])
AT_DATA_GRAMMAR([[input-cmd-line.y]], AT_DATA_GRAMMAR([[input-cmd-line.y]],

View File

@@ -115,12 +115,7 @@ yylex (void)
} }
return inner++; return inner++;
} }
int ]AT_MAIN_DEFINE[
main (void)
{
yydebug = !!getenv ("YYDEBUG");
return yyparse ();
}
EOF EOF
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
@@ -204,13 +199,7 @@ yylex (void)
assert (counter++ == MAX + 1); assert (counter++ == MAX + 1);
return 0; return 0;
} }
]AT_MAIN_DEFINE[
int
main (void)
{
yydebug = !!getenv ("YYDEBUG");
return yyparse ();
}
EOF EOF
]]) ]])
@@ -342,12 +331,7 @@ yylex (void)
return counter++; return counter++;
} }
int ]AT_MAIN_DEFINE[
main (void)
{
yydebug = !!getenv ("YYDEBUG");
return yyparse ();
}
EOF EOF
]]) ]])