(_AT_DATA_CALC_Y): Include unistd.h if available.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 2 Jun 2003 03:58:34 +0000 (03:58 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 2 Jun 2003 03:58:34 +0000 (03:58 +0000)
Define 'alarm' to do nothing if unistd.h is not available.
Add a new rule "exp: '-' error;" to test the above change to
data/yacc.c.  Use 'alarm' to abort any test taking longer than
10 seconds, as it's probably looping.
(AT_CHECK_CALC): Test recovery from error in new grammar rule.
Also, the new yacc.c generates two fewer diagnostics for an
existing test.

tests/calc.at

index 2eb594e..377b9d1 100644 (file)
@@ -1,4 +1,4 @@
-# Checking the output filenames.                         -*- Autotest -*-
+# Simple calculator.                         -*- Autotest -*-
 # Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -45,6 +45,12 @@ AT_DATA_GRAMMAR([calc.y],
 # include <stdlib.h>
 # include <string.h>
 #endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else
+# undef alarm
+# define alarm(seconds) /* empty */
+#endif
 #include <ctype.h>
 
 extern void perror (const char *s);
@@ -117,6 +123,7 @@ exp:
 | '(' exp ')'        { $$ = $2;             }
 | '(' error ')'      { $$ = 1111;           }
 | '!'                { YYERROR;             }
+| '-' error          { YYERROR;             }
 ;
 %%
 /* The input. */
@@ -303,6 +310,7 @@ main (int argc, const char **argv)
   int count = 0;
   int status;
 
+  alarm (10);
   if (argc == 2)
     yyin = fopen (argv[1], "r");
   else
@@ -503,9 +511,13 @@ calc: error: 4444 != 1])
 
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
-_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [64],
+_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [62],
 [1.9: syntax error, unexpected "number"
 calc: error: 2222 != 1])
+_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [70],
+[1.3: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
+1.11: syntax error, unexpected "number"
+calc: error: 2222 != 1])
 AT_BISON_OPTION_POPDEFS
 
 AT_CLEANUP