X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f42c012fcf0c4eb4d07b59caca90de5442f988c3..57597927ef1b9cc751df4314764a6edd575ffc8b:/tests/regression.at diff --git a/tests/regression.at b/tests/regression.at index 4222b408..f101f218 100644 --- a/tests/regression.at +++ b/tests/regression.at @@ -130,7 +130,6 @@ AT_SETUP([Early token definitions without --yacc]) AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([input.y], [[%{ -#include ]AT_YYERROR_DECLARE_EXTERN[ ]AT_YYLEX_DECLARE_EXTERN[ void print_my_token (void); @@ -141,6 +140,7 @@ void print_my_token (void); int val; }; %{ +#include void print_my_token (void) { @@ -263,11 +263,11 @@ AT_CHECK([cat input.output], [], 0 $accept: expr $end - 1 $@1: /* empty */ + 1 $@1: %empty 2 expr: 'a' $@1 'b' - 3 $@2: /* empty */ + 3 $@2: %empty 4 expr: $@2 'c' @@ -373,11 +373,14 @@ AT_DATA([input.y], %token LE 134 "<=" %left OR "<=" %% -exp: ; +exp: %empty; %% ]]) -AT_BISON_CHECK([-v -o input.c input.y]) +AT_BISON_CHECK([-v -Wall -o input.c input.y], 0, [], +[[input.y:1.29-32: warning: useless precedence and associativity for "||" [-Wprecedence] +input.y:2.29-32: warning: useless precedence and associativity for "<=" [-Wprecedence] +]]) AT_CLEANUP @@ -446,8 +449,6 @@ AT_BISON_OPTION_PUSHDEFS # Bison managed, when fed with '%token 'f' "f"' to #define 'f'! AT_DATA_GRAMMAR([input.y], [%{ -#include -#include ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ %} @@ -572,7 +573,7 @@ AT_CHECK([cat input.output], 0, 2 CONST_DEC_LIST: CONST_DEC 3 | CONST_DEC_LIST CONST_DEC - 4 $@1: /* empty */ + 4 $@1: %empty 5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok ';' @@ -720,7 +721,7 @@ AT_KEYWORDS([report]) AT_DATA([input.y], [[%% statement: struct_stat; -struct_stat: /* empty. */ | if else; +struct_stat: %empty | if else; if: "if" "const" "then" statement; else: "else" statement; %% @@ -839,7 +840,6 @@ m4_define([_AT_DATA_DANCER_Y], } $1 %token ARROW INVALID NUMBER STRING DATA -%defines %verbose %error-verbose /* Grammar follows */ @@ -869,7 +869,7 @@ type: DATA | INVALID ; -body: /* empty */ +body: %empty | body member ; @@ -920,18 +920,16 @@ m4_define([_AT_DATA_EXPECT2_Y], [%{ static int yylex (AT_LALR1_CC_IF([int *], [void])); AT_LALR1_CC_IF([[#include ]], -[[#include -#include +[[ ]AT_YYERROR_DECLARE])[ %} $1 -%defines %error-verbose %token A 1000 %token B %% -program: /* empty */ +program: %empty | program e ';' | program error ';'; @@ -999,13 +997,11 @@ AT_SETUP([Braced code in declaration in rules section]) AT_BISON_OPTION_PUSHDEFS([%debug]) AT_DATA_GRAMMAR([input.y], [[%{ -#include ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ %} %debug %error-verbose - %% start: @@ -1123,11 +1119,10 @@ AT_SETUP([[Token number in precedence declaration]]) # we lost this in Bison 1.50. AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([input.y], -[[%{ - #include +[[%code { ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ -%} +} %error-verbose %right END 0 @@ -1152,9 +1147,10 @@ sr_conflict: ]]) AT_BISON_OPTION_POPDEFS -AT_BISON_CHECK([[-o input.c input.y]], [[0]],, -[[input.y:23.5-19: warning: rule useless in parser due to conflicts: start: start [-Wother] -input.y:27.5-19: warning: rule useless in parser due to conflicts: sr_conflict: TK2 "tok alias" [-Wother] +AT_BISON_CHECK([[-Wall -o input.c input.y]], [[0]],, +[[input.y:24.5-19: warning: rule useless in parser due to conflicts [-Wother] +input.y:28.5-19: warning: rule useless in parser due to conflicts [-Wother] +input.y:18.7-9: warning: useless precedence and associativity for TK1 [-Wprecedence] ]]) AT_COMPILE([[input]]) AT_PARSER_CHECK([[./input]]) @@ -1197,7 +1193,6 @@ AT_SETUP([[parse.error=verbose and YYSTACK_USE_ALLOCA]]) AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([input.y], [[%code { - #include ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ #define YYSTACK_USE_ALLOCA 1 @@ -1272,7 +1267,6 @@ AT_SETUP([[parse.error=verbose overflow]]) AT_BISON_OPTION_PUSHDEFS AT_DATA_GRAMMAR([input.y], [[%code { - #include ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ @@ -1386,7 +1380,6 @@ AT_BISON_OPTION_PUSHDEFS([%debug $1]) AT_DATA_GRAMMAR([input.y], [[%code { - #include ]AT_YYERROR_DECLARE[ int yylex (]AT_PURE_IF([[YYSTYPE *]], [[void]])[); } @@ -1473,7 +1466,6 @@ m4_pushdef([AT_LAC_CHECK], [AT_BISON_OPTION_PUSHDEFS([%debug]) AT_DATA_GRAMMAR([input.y], [[%code { - #include ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ #define YYMAXDEPTH 8 @@ -1547,27 +1539,22 @@ AT_CLEANUP m4_pushdef([AT_TEST], [AT_SETUP([[Lex and parse params: $1]]) +## FIXME: Improve parsing of parse-param. AT_BISON_OPTION_PUSHDEFS([%locations %skeleton "$1" %parse-param { int x } %parse-param { int y }]) -## FIXME: Improve parsing of parse-param and use the generated -## yyerror. AT_DATA_GRAMMAR([input.y], -[[%defines -%locations +[[%locations %skeleton "$1" %union { int ival; } %parse-param { int x } // Spaces, tabs, and new lines. %parse-param { @&t@ - int y @&t@ +@tb@ int y@tb@ @&t@ @&t@ @&t@ } %{ -#include -#include - ]AT_YYERROR_DECLARE[ ]AT_YYLEX_DECLARE[ %} @@ -1590,7 +1577,7 @@ yyparse (int x, int y) int main (void) { - return !!yyparse(1, 2); + return yyparse(1, 2); } ]]) @@ -1609,3 +1596,33 @@ AT_TEST([lalr1.cc]) AT_TEST([glr.cc]) m4_popdef([AT_TEST]) + + +## ----------------------- ## +## stdio.h is not needed. ## +## ----------------------- ## + +# At some point, by accident, yy_location_print_ was using fprintf and +# FILE which are from stdio.h, which we do not require. +AT_SETUP([[stdio.h is not needed]]) + +AT_BISON_OPTION_PUSHDEFS + +AT_DATA_GRAMMAR([input.y], +[[%locations +%code +{ + static int yylex (void) { return 0; } + static void yyerror (const char* msg) { (void) msg; } +} +%% +exp: {} +%% +]AT_MAIN_DEFINE[ +]]) + +AT_FULL_COMPILE([input]) + +AT_BISON_OPTION_POPDEFS + +AT_CLEANUP