]> git.saurik.com Git - bison.git/blobdiff - tests/calc.at
maint: update gnu-web-doc-update.
[bison.git] / tests / calc.at
index e54a367006d8c4e84da1ad34b95c2e5f6edd0c86..e4cb07f19c3365605d7b4956f0e96156d3b5c993 100644 (file)
@@ -45,7 +45,8 @@ m4_define([_AT_DATA_CALC_Y],
        [m4_fatal([$0: Invalid arguments: $@])])dnl
 
 m4_pushdef([AT_CALC_MAIN],
-[#if HAVE_UNISTD_H
+[#include <assert.h>
+#if HAVE_UNISTD_H
 # include <unistd.h>
 #else
 # undef alarm
@@ -58,7 +59,7 @@ int
 ]AT_NAME_PREFIX[parse (]AT_PARAM_IF([semantic_value *result, int *count]))[
 {
   ]AT_NAME_PREFIX[::parser parser]AT_PARAM_IF([ (result, count)])[;
-#if YYDEBUG
+#if ]AT_API_PREFIX[DEBUG
   parser.set_debug_level (1);
 #endif
   return parser.parse ();
@@ -97,10 +98,8 @@ main (int argc, const char **argv)
   status = ]AT_NAME_PREFIX[parse (]AT_PARAM_IF([[&result, &count]])[);
   if (fclose (input))
     perror ("fclose");
-  if (global_result != result)
-    abort ();
-  if (global_count != count)
-    abort ();
+  assert (global_result == result);
+  assert (global_count == count);
   return status;
 }
 ]])
@@ -109,15 +108,15 @@ main (int argc, const char **argv)
 m4_pushdef([AT_CALC_LEX],
 [[#include <ctype.h>
 
-int ]AT_NAME_PREFIX[lex (]AT_LEX_FORMALS[);
-static int get_char (]AT_LEX_FORMALS[);
-static void unget_char (]AT_LEX_PRE_FORMALS[ int c);
+]AT_YYLEX_DECLARE_EXTERN[
+static int get_char (]AT_YYLEX_FORMALS[);
+static void unget_char (]AT_YYLEX_PRE_FORMALS[ int c);
 
 ]AT_LOCATION_IF([
-static YYLTYPE last_yylloc;
+static AT_YYLTYPE last_yylloc;
 ])[
 static int
-get_char (]AT_LEX_FORMALS[)
+get_char (]AT_YYLEX_FORMALS[)
 {
   int res = getc (input);
   ]AT_USE_LEX_ARGS[;
@@ -135,7 +134,7 @@ get_char (]AT_LEX_FORMALS[)
 }
 
 static void
-unget_char (]AT_LEX_PRE_FORMALS[ int c)
+unget_char (]AT_YYLEX_PRE_FORMALS[ int c)
 {
   ]AT_USE_LEX_ARGS[;
 ]AT_LOCATION_IF([
@@ -146,26 +145,26 @@ unget_char (]AT_LEX_PRE_FORMALS[ int c)
 }
 
 static int
-read_signed_integer (]AT_LEX_FORMALS[)
+read_signed_integer (]AT_YYLEX_FORMALS[)
 {
-  int c = get_char (]AT_LEX_ARGS[);
+  int c = get_char (]AT_YYLEX_ARGS[);
   int sign = 1;
   int n = 0;
 
   ]AT_USE_LEX_ARGS[;
   if (c == '-')
     {
-      c = get_char (]AT_LEX_ARGS[);
+      c = get_char (]AT_YYLEX_ARGS[);
       sign = -1;
     }
 
   while (isdigit (c))
     {
       n = 10 * n + (c - '0');
-      c = get_char (]AT_LEX_ARGS[);
+      c = get_char (]AT_YYLEX_ARGS[);
     }
 
-  unget_char (]AT_LEX_PRE_ARGS[ c);
+  unget_char (]AT_YYLEX_PRE_ARGS[ c);
 
   return sign * n;
 }
@@ -177,8 +176,7 @@ read_signed_integer (]AT_LEX_FORMALS[)
 | blanks and tabs, returns 0 for EOF.                            |
 `---------------------------------------------------------------*/
 
-int
-]AT_NAME_PREFIX[lex (]AT_LEX_FORMALS[)
+]AT_YYLEX_PROTOTYPE[
 {
   static int init = 1;
   int c;
@@ -200,13 +198,13 @@ int
       AT_LOC_FIRST_LINE   = AT_LOC_LAST_LINE;
 ])[
     }
-  while ((c = get_char (]AT_LEX_ARGS[)) == ' ' || c == '\t');
+  while ((c = get_char (]AT_YYLEX_ARGS[)) == ' ' || c == '\t');
 
   /* process numbers   */
   if (c == '.' || isdigit (c))
     {
-      unget_char (]AT_LEX_PRE_ARGS[ c);
-      ]AT_VAL[.ival = read_signed_integer (]AT_LEX_ARGS[);
+      unget_char (]AT_YYLEX_PRE_ARGS[ c);
+      ]AT_VAL[.ival = read_signed_integer (]AT_YYLEX_ARGS[);
       return NUM;
     }
 
@@ -266,21 +264,16 @@ AT_SKEL_CC_IF(
 
 %code provides
 {
-#include <stdio.h>
-/* The input.  */
-extern FILE *input;
-extern semantic_value global_result;
-extern int global_count;]AT_SKEL_CC_IF([[
-#ifndef YYLTYPE
-# define YYLTYPE ]AT_NAME_PREFIX[::parser::location_type
-#endif
-]])[
+  #include <stdio.h>
+  /* The input.  */
+  extern FILE *input;
+  extern semantic_value global_result;
+  extern int global_count;
 }
 
 %code
 {
 #include <assert.h>
-#include <stdlib.h>
 #include <string.h>
 #define USE(Var)
 
@@ -288,14 +281,11 @@ FILE *input;
 static int power (int base, int exponent);
 
 ]AT_SKEL_CC_IF(,
-[/* yyerror receives the location if:
-   - %location & %pure & %glr
-   - %location & %pure & %yacc & %parse-param. */
-static void yyerror (AT_YYERROR_ARG_LOC_IF([YYLTYPE *llocp, ])
+[static void yyerror (AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ])
                      AT_PARAM_IF([semantic_value *result, int *count, ])
                      const char *s
                      );])[
-int yylex (]AT_LEX_FORMALS[);
+]AT_YYLEX_DECLARE_EXTERN[
 }
 
 ]AT_SKEL_CC_IF([AT_LOCATION_TYPE_IF([], [
@@ -376,18 +366,10 @@ power (int base, int exponent)
     return o;
   }
 ]])
-
-/* A C++ error reporting function.  */
-void
-AT_NAME_PREFIX::parser::error (const location_type& l, const std::string& m)
-{
-  (void) l;
-  std::cerr << AT_LOCATION_IF([l << ": " << ])m << std::endl;
-}
-],
+AT_YYERROR_DEFINE],
 [/* A C error reporting function.  */
 static void
-yyerror (AT_YYERROR_ARG_LOC_IF([YYLTYPE *llocp, ])
+yyerror (AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ])
          AT_PARAM_IF([semantic_value *result, int *count, ])
          const char *s)
 {
@@ -518,16 +500,15 @@ AT_CHECK([cat stderr], 0, [expout])
 ])
 
 
-# AT_CHECK_CALC([BISON-OPTIONS, [EXPECTED-TO-FAIL]])
-# --------------------------------------------------
+# AT_CHECK_CALC([BISON-OPTIONS])
+# ------------------------------
 # Start a testing chunk which compiles `calc' grammar with
 # BISON-OPTIONS, and performs several tests over the parser.
-# However, if EXPECTED-TO-FAIL is nonempty, this test is expected to fail.
 m4_define([AT_CHECK_CALC],
-[# We use integers to avoid dependencies upon the precision of doubles.
-AT_SETUP([Calculator $1])
+[m4_ifval([$2], [m4_fatal([$0: expected a single argument])])
 
-m4_ifval([$2], [AT_CHECK([exit 77])])
+# We use integers to avoid dependencies upon the precision of doubles.
+AT_SETUP([Calculator $1])
 
 AT_BISON_OPTION_PUSHDEFS([$1])
 
@@ -647,14 +628,16 @@ AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %locations])
 AT_CHECK_CALC_LALR([%error-verbose %locations])
 
 AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR([%error-verbose %locations %defines %define api.prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_LALR([%debug])
 AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
-AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc])
 
-AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
+AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
 
 
 # ----------------------- #
@@ -676,6 +659,7 @@ AT_CHECK_CALC_GLR()
 AT_CHECK_CALC_GLR([%defines])
 AT_CHECK_CALC_GLR([%locations])
 AT_CHECK_CALC_GLR([%name-prefix "calc"])
+AT_CHECK_CALC_GLR([%define api.prefix "calc"])
 AT_CHECK_CALC_GLR([%verbose])
 AT_CHECK_CALC_GLR([%yacc])
 AT_CHECK_CALC_GLR([%error-verbose])
@@ -687,10 +671,12 @@ AT_CHECK_CALC_GLR([%error-verbose %locations %defines %name-prefix "calc" %verbo
 
 AT_CHECK_CALC_GLR([%debug])
 AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_GLR([%error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_GLR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_GLR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
+AT_CHECK_CALC_GLR([%define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
 
 
 # ----------------------------- #
@@ -712,11 +698,13 @@ m4_define([AT_CHECK_CALC_LALR1_CC],
 AT_CHECK_CALC_LALR1_CC([])
 AT_CHECK_CALC_LALR1_CC([%define location_type Span])
 AT_CHECK_CALC_LALR1_CC([%error-verbose %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR1_CC([%error-verbose %define api.prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_LALR1_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc])
 
-AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %define api.prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
+AT_CHECK_CALC_LALR1_CC([%pure-parser %error-verbose %debug %define api.prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
 
 
 
@@ -739,6 +727,7 @@ m4_define([AT_CHECK_CALC_GLR_CC],
 AT_CHECK_CALC_GLR_CC([])
 AT_CHECK_CALC_GLR_CC([%define location_type Span])
 AT_CHECK_CALC_GLR_CC([%error-verbose %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_GLR_CC([%error-verbose %define api.prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_GLR_CC([%debug])
 AT_CHECK_CALC_GLR_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc])
@@ -746,3 +735,4 @@ AT_CHECK_CALC_GLR_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %name-prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
+AT_CHECK_CALC_GLR_CC([%pure-parser %error-verbose %debug %define api.prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])