extern void perror (const char *s);
%}
+/* Also exercise %union. */
+%union
+{
+ int ival; /* A comment to exercise an old bug. */
+};
+
/* Bison Declarations */
%token CALC_EOF 0 "end of file"
-%token NUM "number"
+%token <ival> NUM "number"
+%type <ival> exp
%nonassoc '=' /* comparison */
%left '-' '+'
line:
'\n'
-| exp '\n'
+| exp '\n' {}
;
exp:
if (c == '.' || isdigit (c))
{
yyungetc (c);
- yylval = read_signed_integer ();
+ yylval.ival = read_signed_integer ();
return NUM;
}
AT_CHECK([bison calc.y -o calc.c m4_bpatsubst([$1], [--yyerror-verbose])],
[0], [], [])
-# Some compilers issue warnings we don't want to hear about.
-# Maybe some day we will have proper Autoconf macros to disable these
-# warnings, but this place is not the right one for that.
-# So let's keep only GCC warnings, which we know are sane.
-# Well, that's only part of the story: some assemblers issue warnings
-# which can be totally useless, and actually polluting. It seems that
-# the best bet be to completely ignore stderr, but to pass -Werror
-# to GCC.
-if test "$GCC" = yes; then
- CFLAGS="$CFLAGS -Werror"
-fi
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [ignore])
# Test the priorities.
1 - (2 - 3) = 2
2^2^3 = 256
-(2^2)^3 = 64], [488])
+(2^2)^3 = 64], [486])
# Some parse errors.
_AT_CHECK_CALC_ERROR([$1], [0 0], [10],