mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 01:33:03 +00:00
* tests/regression.at (%nonassoc and eof): New.
Suggested by Robert Anisko.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2002-01-25 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* tests/regression.at (%nonassoc and eof): New.
|
||||||
|
Suggested by Robert Anisko.
|
||||||
|
|
||||||
2002-01-23 Akim Demaille <akim@epita.fr>
|
2002-01-23 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
Version 1.32.
|
Version 1.32.
|
||||||
|
|||||||
@@ -19,6 +19,81 @@
|
|||||||
AT_BANNER([[Regression tests.]])
|
AT_BANNER([[Regression tests.]])
|
||||||
|
|
||||||
|
|
||||||
|
## ------------------- ##
|
||||||
|
## %nonassoc and eof. ##
|
||||||
|
## ------------------- ##
|
||||||
|
|
||||||
|
AT_SETUP([%nonassoc and eof])
|
||||||
|
|
||||||
|
AT_DATA([input.y],
|
||||||
|
[[
|
||||||
|
%{
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <error.h>
|
||||||
|
#define YYERROR_VERBOSE 1
|
||||||
|
#define yyerror(Msg) \
|
||||||
|
do { \
|
||||||
|
fprintf (stderr, "%s\n", Msg); \
|
||||||
|
exit (1); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* The current argument. */
|
||||||
|
static const char *input = NULL;
|
||||||
|
|
||||||
|
static int
|
||||||
|
yylex (void)
|
||||||
|
{
|
||||||
|
/* No token stands for end of file. */
|
||||||
|
if (input && *input)
|
||||||
|
return *input++;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
%}
|
||||||
|
|
||||||
|
%nonassoc '<' '>'
|
||||||
|
|
||||||
|
%%
|
||||||
|
expr: expr '<' expr
|
||||||
|
| expr '>' expr
|
||||||
|
| '0'
|
||||||
|
;
|
||||||
|
%%
|
||||||
|
int
|
||||||
|
main (int argc, const char *argv[])
|
||||||
|
{
|
||||||
|
if (argc > 1)
|
||||||
|
input = argv[1];
|
||||||
|
return yyparse ();
|
||||||
|
}
|
||||||
|
]])
|
||||||
|
|
||||||
|
# Specify the output files to avoid problems on different file systems.
|
||||||
|
AT_CHECK([bison input.y -o input.c])
|
||||||
|
AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
|
||||||
|
|
||||||
|
AT_CHECK([input '0<0'])
|
||||||
|
# FIXME: This is an actual bug, but a new one, in the sense that
|
||||||
|
# no one has ever spotted it! The messages are *wrong*: there should
|
||||||
|
# be nothing there, it should be expected eof.
|
||||||
|
AT_CHECK([input '0<0<0'], [1], [],
|
||||||
|
[parse error, unexpected '<', expecting '<' or '>'
|
||||||
|
])
|
||||||
|
|
||||||
|
AT_CHECK([input '0>0'])
|
||||||
|
AT_CHECK([input '0>0>0'], [1], [],
|
||||||
|
[parse error, unexpected '>', expecting '<' or '>'
|
||||||
|
])
|
||||||
|
|
||||||
|
AT_CHECK([input '0<0>0'], [1], [],
|
||||||
|
[parse error, unexpected '>', expecting '<' or '>'
|
||||||
|
])
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
## ---------------- ##
|
## ---------------- ##
|
||||||
## Braces parsing. ##
|
## Braces parsing. ##
|
||||||
## ---------------- ##
|
## ---------------- ##
|
||||||
|
|||||||
Reference in New Issue
Block a user