mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-10 04:43:03 +00:00
(_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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user