(_AT_DATA_CALC_Y): Include unistd.h if available.

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.
This commit is contained in:
Paul Eggert
2003-06-02 03:58:34 +00:00
parent a6b89bb2dc
commit 82c53be476

View 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