bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/5] tests: factor the definition of main


From: Akim Demaille
Subject: [PATCH 3/5] tests: factor the definition of main
Date: Mon, 21 Jan 2013 16:36:53 +0100

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.
---
 tests/actions.at        | 44 +++++++-------------------------------------
 tests/c++.at            | 33 +++++++++++----------------------
 tests/conflicts.at      | 36 +++++-------------------------------
 tests/glr-regression.at | 39 +++++++++------------------------------
 tests/input.at          |  7 +------
 tests/local.at          | 38 +++++++++++++++++++++++++++++++++++++-
 tests/regression.at     | 34 +++++-----------------------------
 tests/skeletons.at      |  7 +------
 tests/torture.at        | 22 +++-------------------
 9 files changed, 79 insertions(+), 181 deletions(-)

diff --git a/tests/actions.at b/tests/actions.at
index f054c31..804d7d3 100644
--- a/tests/actions.at
+++ b/tests/actions.at
@@ -52,11 +52,7 @@ exp:     { putchar ('0'); }
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE(["123456789"])[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -295,11 +291,7 @@ sum_of_the_five_previous_values:
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 
 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_YYLEX_DEFINE[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 
 AT_FULL_COMPILE([input])
@@ -1256,11 +1244,7 @@ start: { USE($$); } ;
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -1422,11 +1406,7 @@ yylex (void)
 }
 
 ]AT_YYERROR_DEFINE[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 
 AT_BISON_CHECK([[-o input.c input.y]])
@@ -1712,11 +1692,7 @@ accept: /*empty*/ {
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE(["a"])[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 AT_BISON_CHECK([[-o input.c input.y]])
@@ -1763,13 +1739,7 @@ exp:
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE(["bcd"], [*lvalp = (toknum + 1) * 10])[
-
-int
-main (void)
-{
-  yydebug = !!getenv("YYDEBUG");
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
diff --git a/tests/c++.at b/tests/c++.at
index 0bebe8a..868479a 100644
--- a/tests/c++.at
+++ b/tests/c++.at
@@ -163,14 +163,7 @@ namespace yy
 }
 
 ]AT_YYERROR_DEFINE[
-
-int
-main ()
-{
-  yy::parser p;
-  p.set_debug_level (!!getenv ("YYDEBUG"));
-  return p.parse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 
 AT_BISON_CHECK([-o list.cc list.yy])
@@ -370,6 +363,8 @@ AT_CLEANUP
 
 AT_SETUP([[Syntax error discarding no lookahead]])
 
+AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"])
+
 AT_DATA_GRAMMAR([[input.yy]],
 [[%skeleton "lalr1.cc"
 
@@ -421,13 +416,9 @@ yy::parser::error (const std::string &m)
   std::cerr << m << std::endl;
 }
 
-int
-main ()
-{
-  yy::parser parser;
-  return parser.parse ();
-}
+]AT_MAIN_DEFINE[
 ]])
+
 AT_BISON_CHECK([[-o input.cc input.yy]])
 AT_COMPILE_CXX([[input]])
 # This used to print "Discarding 'a'." again at the end.
@@ -437,6 +428,7 @@ Discarding 'a'.
 Reducing 'a'.
 ]])
 
+AT_BISON_OPTION_POPDEFS
 AT_CLEANUP
 
 
@@ -446,6 +438,8 @@ AT_CLEANUP
 
 AT_SETUP([[Syntax error as exception]])
 
+AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"])
+
 AT_DATA_GRAMMAR([[input.yy]],
 [[%skeleton "lalr1.cc"
 
@@ -499,15 +493,9 @@ yy::parser::error (const std::string &m)
 {
   std::cerr << "error: " << m << std::endl;
 }
-
-int
-main ()
-{
-  yy::parser parser;
-  parser.set_debug_level (!!getenv ("YYDEBUG"));
-  return parser.parse ();
-}
+]AT_MAIN_DEFINE[
 ]])
+
 AT_BISON_CHECK([[-o input.cc input.yy]])
 AT_COMPILE_CXX([[input]])
 
@@ -518,6 +506,7 @@ error: invalid character
 caught error
 ]])
 
+AT_BISON_OPTION_POPDEFS
 AT_CLEANUP
 
 
diff --git a/tests/conflicts.at b/tests/conflicts.at
index 0945481..81765aa 100644
--- a/tests/conflicts.at
+++ b/tests/conflicts.at
@@ -221,30 +221,9 @@ public Object getLVal ()
 
 /*-------.
 | main.  |
-`-------*/]AT_SKEL_JAVA_IF([[
-
-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_MAIN_DEFINE
+])
 
 AT_FULL_COMPILE([[input]])
 
@@ -492,13 +471,8 @@ reduce-nonassoc: %prec 'a';
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE(["aaa"])[
-
-int
-main (void)
-{
-  return yyparse ();
-}
-]])
+]AT_MAIN_DEFINE
+])
 AT_BISON_OPTION_POPDEFS
 
 # Show canonical LR's failure.
diff --git a/tests/glr-regression.at b/tests/glr-regression.at
index a8809eb..e5e758c 100644
--- a/tests/glr-regression.at
+++ b/tests/glr-regression.at
@@ -326,7 +326,7 @@ int yylex (void)
 }
 
 int
-main(int argc, char* argv[])
+main (int argc, char* argv[])
 {
   int res;
   input = stdin;
@@ -488,11 +488,7 @@ start:
 %%
 ]AT_YYLEX_DEFINE(["a"])[
 ]AT_YYERROR_DEFINE[
-int
-main (void)
-{
-  return yyparse () != 1;
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -501,7 +497,7 @@ AT_BISON_CHECK([[-o glr-regr5.c glr-regr5.y]], 0, [],
 ]])
 AT_COMPILE([glr-regr5])
 
-AT_PARSER_CHECK([[./glr-regr5]], 0, [],
+AT_PARSER_CHECK([[./glr-regr5]], 1, [],
 [syntax is ambiguous
 ])
 
@@ -540,11 +536,7 @@ start: 'a' | 'a' ;
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE(["a"])[
-int
-main (void)
-{
-  return yyparse () != 1;
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -553,7 +545,7 @@ AT_BISON_CHECK([[-o glr-regr6.c glr-regr6.y]], 0, [],
 ]])
 AT_COMPILE([glr-regr6])
 
-AT_PARSER_CHECK([[./glr-regr6]], 0,
+AT_PARSER_CHECK([[./glr-regr6]], 1,
 [Destructor called.
 ],
 [syntax is ambiguous
@@ -722,12 +714,7 @@ int yylex (void)
     }
 }
 
-int
-main (void)
-{
-  yyparse();
-  return 0;
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -1600,11 +1587,7 @@ yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
   return input[toknum++];
 }
 
-int
-main (void)
-{
-  return yyparse () != 1;
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -1613,7 +1596,7 @@ AT_BISON_CHECK([[-o glr-regr17.c glr-regr17.y]], 0, [],
 ]])
 AT_COMPILE([glr-regr17])
 
-AT_PARSER_CHECK([[./glr-regr17]], 0, [],
+AT_PARSER_CHECK([[./glr-regr17]], 1, [],
 [1.1-2.2: syntax is ambiguous
 ])
 
@@ -1655,11 +1638,7 @@ sym3: %merge<merge> { $$ = 0; } ;
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
diff --git a/tests/input.at b/tests/input.at
index f3ca5d9..8127f4b 100644
--- a/tests/input.at
+++ b/tests/input.at
@@ -859,12 +859,7 @@ AT_DATA([main.c],
 #include "input.h"
 
 int yyparse (void);
-
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
diff --git a/tests/local.at b/tests/local.at
index aa14ced..d4e425d 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -129,6 +129,8 @@ m4_define([_AT_BISON_OPTION_PUSHDEFS],
        [m4_fatal([$0: Invalid arguments: address@hidden)])dnl
 m4_pushdef([AT_DEFINES_IF],
 [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_bmatch([$3], [%language "[Cc]\+\+"\|%skeleton "[a-z0-9]+\.cc"], [$1], 
[$2])])
 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_LALR1_CC_IF])
 m4_popdef([AT_DEFINES_IF])
+m4_popdef([AT_DEBUG_IF])
 AT_LOC_POPDEF])dnl
 ])# AT_BISON_OPTION_POPDEFS
 
@@ -424,7 +427,8 @@ AT_YYERROR_SEES_LOC_IF([[
 [c++], [[/* A C++ error reporting function.  */
 void
 ]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)
 {
@@ -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.  ##
 ## --------------- ##
diff --git a/tests/regression.at b/tests/regression.at
index bee5915..398b949 100644
--- a/tests/regression.at
+++ b/tests/regression.at
@@ -464,12 +464,7 @@ exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!";
 %%
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE([{ SPECIAL }])[
-
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -899,12 +894,7 @@ yyparse ()
   return parser.parse ();
 }
 ])[
-
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 ])# _AT_DATA_DANCER_Y
 
@@ -983,12 +973,7 @@ yylex (]AT_LALR1_CC_IF([int *lval], [void])[)
   assert (toknum < sizeof tokens / sizeof *tokens);
   return tokens[toknum++];
 }
-
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 ])# _AT_DATA_EXPECT2_Y
 
@@ -1180,12 +1165,7 @@ sr_conflict:
 
 ]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE([{ 1, 2, 3, 0 }])[
-
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -1277,11 +1257,7 @@ syntax_error:
      recovery by shifting 3 tokens) in order to detect any loss of the
      reallocated buffer.  */
 ]AT_YYLEX_DEFINE(["abc"])[
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 AT_BISON_OPTION_POPDEFS
 
diff --git a/tests/skeletons.at b/tests/skeletons.at
index aaa3083..68a004e 100644
--- a/tests/skeletons.at
+++ b/tests/skeletons.at
@@ -106,12 +106,7 @@ yylex (void)
 {
   return 'a';
 }
-
-int
-main (void)
-{
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 ]])
 
 AT_DATA_GRAMMAR([[input-cmd-line.y]],
diff --git a/tests/torture.at b/tests/torture.at
index 338c33c..5489e91 100644
--- a/tests/torture.at
+++ b/tests/torture.at
@@ -115,12 +115,7 @@ yylex (void)
     }
   return inner++;
 }
-int
-main (void)
-{
-  yydebug = !!getenv ("YYDEBUG");
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 EOF
 ]])
 AT_BISON_OPTION_POPDEFS
@@ -204,13 +199,7 @@ yylex (void)
   assert (counter++ == MAX + 1);
   return 0;
 }
-
-int
-main (void)
-{
-  yydebug = !!getenv ("YYDEBUG");
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 EOF
 ]])
 
@@ -342,12 +331,7 @@ yylex (void)
   return counter++;
 }
 
-int
-main (void)
-{
-  yydebug = !!getenv ("YYDEBUG");
-  return yyparse ();
-}
+]AT_MAIN_DEFINE[
 EOF
 ]])
 
-- 
1.8.1.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]