bison-patches
[Top][All Lists]
Advanced

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

Test the return value of yyparse


From: Akim Demaille
Subject: Test the return value of yyparse
Date: Fri, 15 Nov 2002 10:01:11 +0100
User-agent: Gnus/5.090008 (Oort Gnus v0.08) Emacs/21.2 (i386-pc-linux-gnu)

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        Always check the value returned by yyparse.

        * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value
        returned by yyparse.
        (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument.
        Adjust calls.
        * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value
        returned by yyparse.

Index: tests/calc.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/calc.at,v
retrieving revision 1.42
diff -u -u -r1.42 calc.at
--- tests/calc.at 14 Nov 2002 09:58:01 -0000 1.42
+++ tests/calc.at 15 Nov 2002 08:55:59 -0000
@@ -291,6 +291,7 @@
 {
   value_t result = 0;
   int count = 0;
+  int status = 0;
   yyin = NULL;
 
   if (argc == 2)
@@ -307,11 +308,10 @@
 #if YYDEBUG
   yydebug = 1;
 #endif
-  yyparse (]AT_PARAM_IF([&result, &count])[);
+  status = yyparse (]AT_PARAM_IF([&result, &count])[);
   assert (global_result == result);
   assert (global_count  == count);
-
-  return 0;
+  return status;
 }
 ]])
 ])# _AT_DATA_CALC_Y
@@ -349,9 +349,10 @@
 ])
 
 
-# _AT_CHECK_CALC_ERROR(BISON-OPTIONS, INPUT, [NUM-DEBUG-LINES],
+# _AT_CHECK_CALC_ERROR(BISON-OPTIONS, EXIT-STATUS, INPUT,
+#                      [NUM-DEBUG-LINES],
 #                      [VERBOSE-AND-LOCATED-ERROR-MESSAGE])
-# -------------------------------------------------------------
+# ---------------------------------------------------------
 # Run `calc' on INPUT, and expect a `parse error' message.
 #
 # If INPUT starts with a slash, it is used as absolute input file name,
@@ -367,17 +368,17 @@
 # If BISON-OPTIONS contains `%debug' but not `%glr', then NUM-STDERR-LINES
 # is the number of expected lines on stderr.
 m4_define([_AT_CHECK_CALC_ERROR],
-[m4_bmatch([$2], [^/],
-           [AT_PARSER_CHECK([./calc $2], 0, [], [stderr])],
+[m4_bmatch([$3], [^/],
+           [AT_PARSER_CHECK([./calc $3], $2, [], [stderr])],
            [AT_DATA([[input]],
-[[$2
+[[$3
 ]])
-AT_PARSER_CHECK([./calc input], 0, [], [stderr])])
+AT_PARSER_CHECK([./calc input], $2, [], [stderr])])
 m4_bmatch([$1],
   [%debug.*%glr\|%glr.*%debug],
      [],
   [%debug],
-     [AT_CHECK([wc -l <stderr | sed 's/[[^0-9]]//g'], 0, [$3
+     [AT_CHECK([wc -l <stderr | sed 's/[[^0-9]]//g'], 0, [$4
 ])])
 
 # Normalize the observed and expected error messages, depending upon the
@@ -397,7 +398,7 @@
 mv at-stderr stderr
 # 2. Create the reference error message.
 AT_DATA([[expout]],
-[$4
+[$5
 ])
 # 3. If locations are not used, remove them.
 AT_YYERROR_SEES_LOC_IF([],
@@ -497,27 +498,27 @@
                [486])
 
 # Some parse errors.
-_AT_CHECK_CALC_ERROR([$1], [0 0], [11],
+_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [11],
                      [1.3-1.4: parse error, unexpected "number"])
-_AT_CHECK_CALC_ERROR([$1], [1//2], [15],
+_AT_CHECK_CALC_ERROR([$1], [1], [1//2], [15],
                      [1.3-1.4: parse error, unexpected '/', expecting "number" 
or '-' or '('])
-_AT_CHECK_CALC_ERROR([$1], [error], [4],
+_AT_CHECK_CALC_ERROR([$1], [1], [error], [4],
                      [1.1-1.2: parse error, unexpected $undefined, expecting 
"number" or '-' or '\n' or '('])
-_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [22],
+_AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [22],
                      [1.7-1.8: parse error, unexpected '='])
-_AT_CHECK_CALC_ERROR([$1],
+_AT_CHECK_CALC_ERROR([$1], [1],
                      [
 +1],
                      [14],
                      [2.1-2.2: parse error, unexpected '+'])
 # Exercise error messages with EOF: work on an empty file.
-_AT_CHECK_CALC_ERROR([$1], [/dev/null], [4],
+_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [4],
                      [1.1-1.2: parse error, unexpected "end of input", 
expecting "number" or '-' or '\n' or '('])
 
 # Exercise the error token: without it, we die at the first error,
 # hence be sure i. to have several errors, ii. to test the action
 # associated to `error'.
-_AT_CHECK_CALC_ERROR([$1], [(1 ++ 2) + (0 0) = 1], [82],
+_AT_CHECK_CALC_ERROR([$1], [0], [(1 ++ 2) + (0 0) = 1], [82],
 [1.5-1.6: parse error, unexpected '+', expecting "number" or '-' or '('
 1.15-1.16: parse error, unexpected "number"
 calc: error: 0 != 1])
Index: tests/glr-regr1.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/glr-regr1.at,v
retrieving revision 1.4
diff -u -u -r1.4 glr-regr1.at
--- tests/glr-regr1.at 14 Nov 2002 09:58:01 -0000 1.4
+++ tests/glr-regr1.at 15 Nov 2002 08:55:59 -0000
@@ -63,8 +63,7 @@
 int
 main (void)
 {
-  yyparse ();
-  return 0;
+  return yyparse ();
 }
 
 int




reply via email to

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