]> git.saurik.com Git - bison.git/blobdiff - tests/input.at
For push mode, convert yyparse from a macro to a function, invoke yylex
[bison.git] / tests / input.at
index dec1cbe67e52eff06e79a2b7d50cb1b764a1d086..12d620c8edf616e4d2dff50a7a95e320d7766d8d 100644 (file)
@@ -25,7 +25,7 @@ AT_BANNER([[Input Processing.]])
 ## Invalid $n.  ##
 ## ------------ ##
 
-AT_SETUP([Invalid \$n and @n])
+AT_SETUP([Invalid $n and @n])
 
 AT_DATA([input.y],
 [[%%
@@ -80,13 +80,15 @@ m4_define([_AT_UNUSED_VALUES_DECLARATIONS],
 %destructor { destroy ($$); } INT a b c d e f g h i j k l;]]])
 
 
-# AT_CHECK_UNUSED_VALUES(DECLARATIONS_AFTER)
-# --------------------------------------------
+# AT_CHECK_UNUSED_VALUES(DECLARATIONS_AFTER, CHECK_MIDRULE_VALUES)
+# ------------------------------------------------------------------
 # Generate a grammar to test unused values,
 # compile it, run it.  If DECLARATIONS_AFTER
 # is set, then the token, type, and destructor
 # declarations are generated after the rules
-# rather than before.
+# rather than before.  If CHECK_MIDRULE_VALUES
+# is set, then --warnings=midrule-values is
+# set.
 
 m4_define([AT_CHECK_UNUSED_VALUES],
 [AT_DATA([input.y],
@@ -116,19 +118,19 @@ l: INT | INT { $<integer>$ = $<integer>1; } INT { $<integer>$ = $<integer>2 + $<
 _AT_UNUSED_VALUES_DECLARATIONS])
 )
 
-AT_CHECK([bison input.y], [0], [],
+AT_CHECK([bison]m4_ifval($2, [ --warnings=midrule-values ])[ input.y], [0], [],
 [[input.y:11.10-32: warning: unset value: $]$[
 input.y:11.10-32: warning: unused value: $]1[
 input.y:11.10-32: warning: unused value: $]3[
 input.y:11.10-32: warning: unused value: $]5[
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
-input.y:13.14-19: warning: unset value: $$
+]]m4_ifval($2, [[[input.y:13.14-19: warning: unset value: $$
 input.y:13.25-39: warning: unset value: $$
-input.y:13.10-59: warning: unset value: $]$[
+]]])[[input.y:13.10-59: warning: unset value: $]$[
 input.y:13.10-59: warning: unused value: $]3[
 input.y:13.10-59: warning: unused value: $]5[
-input.y:14.14-16: warning: unset value: $$
-input.y:14.10-47: warning: unset value: $]$[
+]]m4_ifval($2, [[[input.y:14.14-16: warning: unset value: $$
+]]])[[input.y:14.10-47: warning: unset value: $]$[
 input.y:14.10-47: warning: unused value: $]3[
 input.y:14.10-47: warning: unused value: $]5[
 input.y:15.10-36: warning: unset value: $]$[
@@ -136,21 +138,21 @@ input.y:15.10-36: warning: unused value: $]3[
 input.y:15.10-36: warning: unused value: $]5[
 input.y:17.10-58: warning: unset value: $]$[
 input.y:17.10-58: warning: unused value: $]1[
-input.y:17.10-58: warning: unused value: $]2[
-input.y:17.10-58: warning: unused value: $]3[
-input.y:17.10-58: warning: unused value: $]4[
-input.y:17.10-58: warning: unused value: $]5[
+]]m4_ifval($2, [[[input.y:17.10-58: warning: unused value: $]2[
+]]])[[input.y:17.10-58: warning: unused value: $]3[
+]]m4_ifval($2, [[[input.y:17.10-58: warning: unused value: $]4[
+]]])[[input.y:17.10-58: warning: unused value: $]5[
 input.y:18.10-72: warning: unset value: $]$[
 input.y:18.10-72: warning: unused value: $]1[
 input.y:18.10-72: warning: unused value: $]3[
-input.y:18.10-72: warning: unused value: $]4[
-input.y:18.10-72: warning: unused value: $]5[
-input.y:20.10-55: warning: unused value: $]3[
-input.y:21.10-68: warning: unset value: $]$[
+]]m4_ifval($2, [[[input.y:18.10-72: warning: unused value: $]4[
+]]])[[input.y:18.10-72: warning: unused value: $]5[
+]]m4_ifval($2, [[[input.y:20.10-55: warning: unused value: $]3[
+]]])[[input.y:21.10-68: warning: unset value: $]$[
 input.y:21.10-68: warning: unused value: $]1[
 input.y:21.10-68: warning: unused value: $]2[
-input.y:21.10-68: warning: unused value: $]4[
-]])])
+]]m4_ifval($2, [[[input.y:21.10-68: warning: unused value: $]4[
+]]]))])
 
 
 ## --------------- ##
@@ -159,6 +161,7 @@ input.y:21.10-68: warning: unused value: $]4[
 
 AT_SETUP([Unused values])
 AT_CHECK_UNUSED_VALUES
+AT_CHECK_UNUSED_VALUES(, [1])
 AT_CLEANUP
 
 
@@ -168,6 +171,7 @@ AT_CLEANUP
 
 AT_SETUP([Unused values before symbol declarations])
 AT_CHECK_UNUSED_VALUES([1])
+AT_CHECK_UNUSED_VALUES([1], [1])
 AT_CLEANUP
 
 
@@ -184,11 +188,11 @@ AT_DATA([[input.y]],
 %destructor { destroy ($$); } <*>
 %printer { destroy ($$); } <*>
 
-%destructor { destroy ($$); } <!> <!>
-%printer { destroy ($$); } <!> <!>
+%destructor { destroy ($$); } <> <>
+%printer { destroy ($$); } <> <>
 
-%destructor { destroy ($$); } <!>
-%printer { destroy ($$); } <!>
+%destructor { destroy ($$); } <>
+%printer { destroy ($$); } <>
 
 %%
 
@@ -197,8 +201,8 @@ start: ;
 %destructor { destroy ($$); } <*>;
 %printer { destroy ($$); } <*>;
 
-%destructor { destroy ($$); } <!>;
-%printer { destroy ($$); } <!>;
+%destructor { destroy ($$); } <>;
+%printer { destroy ($$); } <>;
 ]])
 
 AT_CHECK([bison input.y], [1], [],
@@ -281,7 +285,7 @@ AT_CLEANUP
 AT_SETUP([Unused values with default %destructor])
 
 AT_DATA([[input.y]],
-[[%destructor { destroy ($$); } <!>
+[[%destructor { destroy ($$); } <>
 %type <tag> tagged
 
 %%
@@ -525,7 +529,9 @@ AT_DATA([main.c],
 [[typedef int value;
 #include "input.h"
 
+#ifndef YYPUSH_DECLS
 int yyparse (void);
+#endif
 
 int
 main (void)
@@ -676,3 +682,24 @@ start: false_start ;
 AT_CHECK([bison -o input.c input.y])
 
 AT_CLEANUP
+
+
+## --------------------- ##
+## %prec takes a token.  ##
+## --------------------- ##
+
+AT_SETUP([%prec takes a token])
+
+# Bison once allowed %prec sym where sym was a nonterminal.
+
+AT_DATA([input.y],
+[[%%
+start: PREC %prec PREC ;
+PREC: ;
+]])
+
+AT_CHECK([bison input.y], [1], [],
+[[input.y:3.1-4: rule given for PREC, which is a token
+]])
+
+AT_CLEANUP