mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 09:43:03 +00:00
tests: use %empty
* tests/actions.at, tests/input.at, tests/reduce.at, * tests/regression.at: here.
This commit is contained in:
@@ -261,7 +261,7 @@ AT_DATA_GRAMMAR([[input.y]],
|
|||||||
]AT_YYLEX_DECLARE[
|
]AT_YYLEX_DECLARE[
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
exp: /* empty */;
|
exp: %empty;
|
||||||
%%
|
%%
|
||||||
]AT_YYERROR_DEFINE[
|
]AT_YYERROR_DEFINE[
|
||||||
]AT_YYLEX_DEFINE[
|
]AT_YYLEX_DEFINE[
|
||||||
@@ -1706,7 +1706,7 @@ AT_DATA_GRAMMAR([input.y],
|
|||||||
// that has set yychar might not always return normally. Instead,
|
// that has set yychar might not always return normally. Instead,
|
||||||
// skeletons must translate before every use of yytoken.
|
// skeletons must translate before every use of yytoken.
|
||||||
start: 'a' accept { USE($1); } ;
|
start: 'a' accept { USE($1); } ;
|
||||||
accept: /*empty*/ {
|
accept: %empty {
|
||||||
assert (yychar == YYEMPTY);
|
assert (yychar == YYEMPTY);
|
||||||
yychar = 'b';
|
yychar = 'b';
|
||||||
YYACCEPT;
|
YYACCEPT;
|
||||||
|
|||||||
@@ -108,17 +108,17 @@ AT_SETUP([Invalid $n and @n])
|
|||||||
|
|
||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
exp: { $$ = $1 ; };
|
exp: %empty { $$ = $1 ; };
|
||||||
exp: { @$ = @1 ; };
|
exp: %empty { @$ = @1 ; };
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([-fcaret input.y], [1], [],
|
AT_BISON_CHECK([-fcaret input.y], [1], [],
|
||||||
[[input.y:2.13-14: error: integer out of range: '$1'
|
[[input.y:2.20-21: error: integer out of range: '$1'
|
||||||
exp: { $$ = $1 ; };
|
exp: %empty { $$ = $1 ; };
|
||||||
^^
|
^^
|
||||||
input.y:3.13-14: error: integer out of range: '@1'
|
input.y:3.20-21: error: integer out of range: '@1'
|
||||||
exp: { @$ = @1 ; };
|
exp: %empty { @$ = @1 ; };
|
||||||
^^
|
^^
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@@ -137,7 +137,7 @@ AT_DATA([input.y],
|
|||||||
%%
|
%%
|
||||||
exp: foo { $$; } foo { $2; } foo
|
exp: foo { $$; } foo { $2; } foo
|
||||||
| foo
|
| foo
|
||||||
| /* empty. */
|
| %empty
|
||||||
;
|
;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
@@ -154,9 +154,9 @@ input.y:5.6-32: warning: type clash on default action: <bar> != <> [-Wother]
|
|||||||
input.y:6.6-8: warning: type clash on default action: <bar> != <> [-Wother]
|
input.y:6.6-8: warning: type clash on default action: <bar> != <> [-Wother]
|
||||||
| foo
|
| foo
|
||||||
^^^
|
^^^
|
||||||
input.y:7.5: warning: empty rule for typed nonterminal, and no action [-Wother]
|
input.y:7.6-11: warning: empty rule for typed nonterminal, and no action [-Wother]
|
||||||
| /* empty. */
|
| %empty
|
||||||
^
|
^^^^^^
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@@ -192,7 +192,7 @@ start:
|
|||||||
;
|
;
|
||||||
|
|
||||||
a: INT | INT { } INT { } INT { };
|
a: INT | INT { } INT { } INT { };
|
||||||
b: INT | /* empty */;
|
b: INT | %empty;
|
||||||
c: INT | INT { $]1[; } INT { $<integer>2; } INT { $<integer>4; };
|
c: INT | INT { $]1[; } INT { $<integer>2; } INT { $<integer>4; };
|
||||||
d: INT | INT { } INT { $]1[; } INT { $<integer>2; };
|
d: INT | INT { } INT { $]1[; } INT { $<integer>2; };
|
||||||
e: INT | INT { } INT { } INT { $]1[; };
|
e: INT | INT { } INT { } INT { $]1[; };
|
||||||
@@ -220,9 +220,9 @@ input.y:11.18-20: warning: unused value: $][3 [-Wother]
|
|||||||
input.y:11.26-28: warning: unused value: $][5 [-Wother]
|
input.y:11.26-28: warning: unused value: $][5 [-Wother]
|
||||||
a: INT | INT { } INT { } INT { };
|
a: INT | INT { } INT { } INT { };
|
||||||
^^^
|
^^^
|
||||||
input.y:12.9: warning: empty rule for typed nonterminal, and no action [-Wother]
|
input.y:12.10-15: warning: empty rule for typed nonterminal, and no action [-Wother]
|
||||||
b: INT | /* empty */;
|
b: INT | %empty;
|
||||||
^
|
^^^^^^
|
||||||
]]m4_ifval($2, [[[input.y:13.14-20: warning: unset value: $][$ [-Wmidrule-values]
|
]]m4_ifval($2, [[[input.y:13.14-20: warning: unset value: $][$ [-Wmidrule-values]
|
||||||
c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
|
c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
|
||||||
^^^^^^^
|
^^^^^^^
|
||||||
@@ -351,7 +351,7 @@ AT_DATA([[input.y]],
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
start: ;
|
start: %empty;
|
||||||
|
|
||||||
%destructor { destroy ($$); } <*>;
|
%destructor { destroy ($$); } <*>;
|
||||||
%printer { print ($$); } <*>;
|
%printer { print ($$); } <*>;
|
||||||
@@ -453,7 +453,7 @@ AT_DATA([[input.y]],
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
start: ;
|
start: %empty;
|
||||||
|
|
||||||
%destructor { destroy ($$); } <field2> <field1>;
|
%destructor { destroy ($$); } <field2> <field1>;
|
||||||
%printer { print ($$); } <field2> <field1>;
|
%printer { print ($$); } <field2> <field1>;
|
||||||
@@ -849,7 +849,7 @@ exp: '@<:@' '\1' two '$' '@' '{' oline output.or.oline.opt
|
|||||||
|
|
||||||
two: '\x000000000000000000000000000000000000000000000000000000000000000000002';
|
two: '\x000000000000000000000000000000000000000000000000000000000000000000002';
|
||||||
oline: '@' 'o' 'l' 'i' 'n' 'e' '@' '_' '_' 'o' 'l' 'i' 'n' 'e' '_' '_';
|
oline: '@' 'o' 'l' 'i' 'n' 'e' '@' '_' '_' 'o' 'l' 'i' 'n' 'e' '_' '_';
|
||||||
output.or.oline.opt: ;|oline;;|output;;;
|
output.or.oline.opt: %empty;|oline;;|output;;;
|
||||||
output: '#' 'o' 'u' 't' 'p' 'u' 't' ' ';
|
output: '#' 'o' 'u' 't' 'p' 'u' 't' ' ';
|
||||||
%%
|
%%
|
||||||
/* Exercise M4 quoting: '@:>@@:>@', @<:@, 2. */
|
/* Exercise M4 quoting: '@:>@@:>@', @<:@, 2. */
|
||||||
@@ -931,7 +931,7 @@ m4_define([AT_CHECK_REQUIRE],
|
|||||||
AT_DATA_GRAMMAR([input.y],
|
AT_DATA_GRAMMAR([input.y],
|
||||||
[[%require "$1";
|
[[%require "$1";
|
||||||
%%
|
%%
|
||||||
empty_file: /* empty */;
|
empty_file: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([-o input.c input.y], $2, [], ignore)
|
AT_BISON_CHECK([-o input.c input.y], $2, [], ignore)
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@@ -1089,7 +1089,7 @@ AT_DATA([input.y],
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
start: ;
|
start: %empty;
|
||||||
|
|
||||||
// Used to report a syntax error because it didn't see any kind of symbol
|
// Used to report a syntax error because it didn't see any kind of symbol
|
||||||
// identifier.
|
// identifier.
|
||||||
@@ -1134,7 +1134,7 @@ AT_SETUP([%start after first rule])
|
|||||||
|
|
||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
false_start: ;
|
false_start: %empty;
|
||||||
start: false_start ;
|
start: false_start ;
|
||||||
%start start;
|
%start start;
|
||||||
]])
|
]])
|
||||||
@@ -1155,7 +1155,7 @@ AT_SETUP([%prec takes a token])
|
|||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
start: PREC %prec PREC ;
|
start: PREC %prec PREC ;
|
||||||
PREC: ;
|
PREC: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([input.y], [1], [],
|
AT_BISON_CHECK([input.y], [1], [],
|
||||||
@@ -1197,7 +1197,7 @@ AT_DATA([input-c.y],
|
|||||||
%code bad {}
|
%code bad {}
|
||||||
%code format {}
|
%code format {}
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[input-c.y]], [[1]], [],
|
AT_BISON_CHECK([[input-c.y]], [[1]], [],
|
||||||
[[input-c.y:1.7: error: %code qualifier 'q' is not used
|
[[input-c.y:1.7: error: %code qualifier 'q' is not used
|
||||||
@@ -1211,7 +1211,7 @@ AT_DATA([input-c-glr.y],
|
|||||||
%code bad {}
|
%code bad {}
|
||||||
%code bad {}
|
%code bad {}
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[input-c-glr.y]], [[1]], [],
|
AT_BISON_CHECK([[input-c-glr.y]], [[1]], [],
|
||||||
[[input-c-glr.y:1.7: error: %code qualifier 'q' is not used
|
[[input-c-glr.y:1.7: error: %code qualifier 'q' is not used
|
||||||
@@ -1224,7 +1224,7 @@ AT_DATA([input-c++.y],
|
|||||||
%code bad {}
|
%code bad {}
|
||||||
%code q {}
|
%code q {}
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[input-c++.y]], [[1]], [],
|
AT_BISON_CHECK([[input-c++.y]], [[1]], [],
|
||||||
[[input-c++.y:1.7: error: %code qualifier 'q' is not used
|
[[input-c++.y:1.7: error: %code qualifier 'q' is not used
|
||||||
@@ -1237,7 +1237,7 @@ AT_DATA([input-c++-glr.y],
|
|||||||
%code q {}
|
%code q {}
|
||||||
%code q {}
|
%code q {}
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[input-c++-glr.y]], [[1]], [],
|
AT_BISON_CHECK([[input-c++-glr.y]], [[1]], [],
|
||||||
[[input-c++-glr.y:1.7-9: error: %code qualifier 'bad' is not used
|
[[input-c++-glr.y:1.7-9: error: %code qualifier 'bad' is not used
|
||||||
@@ -1250,7 +1250,7 @@ AT_DATA([special-char-@@.y],
|
|||||||
%code q {}
|
%code q {}
|
||||||
%code q {}
|
%code q {}
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[special-char-@@.y]], [[1]], [],
|
AT_BISON_CHECK([[special-char-@@.y]], [[1]], [],
|
||||||
[[special-char-@@.y:1.7-9: error: %code qualifier 'bad' is not used
|
[[special-char-@@.y:1.7-9: error: %code qualifier 'bad' is not used
|
||||||
@@ -1263,7 +1263,7 @@ AT_DATA([special-char-@:>@.y],
|
|||||||
%code q {}
|
%code q {}
|
||||||
%code q {}
|
%code q {}
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[special-char-@:>@.y]], [[1]], [],
|
AT_BISON_CHECK([[special-char-@:>@.y]], [[1]], [],
|
||||||
[[special-char-@:>@.y:1.7-9: error: %code qualifier 'bad' is not used
|
[[special-char-@:>@.y:1.7-9: error: %code qualifier 'bad' is not used
|
||||||
@@ -1287,7 +1287,7 @@ AT_DATA([input-redefined.y],
|
|||||||
%define special1 "@:>@"
|
%define special1 "@:>@"
|
||||||
%define special2 "@<:@"
|
%define special2 "@<:@"
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[input-redefined.y]], [[1]], [],
|
AT_BISON_CHECK([[input-redefined.y]], [[1]], [],
|
||||||
@@ -1300,7 +1300,7 @@ input-redefined.y:2.9-11: previous definition
|
|||||||
AT_DATA([input-unused.y],
|
AT_DATA([input-unused.y],
|
||||||
[[%define var "value"
|
[[%define var "value"
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[input-unused.y]], [[1]], [],
|
AT_BISON_CHECK([[input-unused.y]], [[1]], [],
|
||||||
@@ -1328,7 +1328,7 @@ m4@&t@_divert_pop(0)
|
|||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%define var-dfg "gram"
|
[[%define var-dfg "gram"
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \
|
AT_BISON_CHECK([[-Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \
|
||||||
-Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \
|
-Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \
|
||||||
@@ -1345,7 +1345,7 @@ var-fd: cmd-d
|
|||||||
AT_DATA([[input-dg.y]],
|
AT_DATA([[input-dg.y]],
|
||||||
[[%define var "gram"
|
[[%define var "gram"
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [],
|
AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [],
|
||||||
[[input-dg.y:1.9-11: error: %define variable 'var' redefined
|
[[input-dg.y:1.9-11: error: %define variable 'var' redefined
|
||||||
@@ -1355,7 +1355,7 @@ AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [],
|
|||||||
AT_DATA([[input-dg.y]],
|
AT_DATA([[input-dg.y]],
|
||||||
[[%define var "gram"
|
[[%define var "gram"
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-fcaret -Dvar=cmd-d input-dg.y]], [[1]], [],
|
AT_BISON_CHECK([[-fcaret -Dvar=cmd-d input-dg.y]], [[1]], [],
|
||||||
[[input-dg.y:1.9-11: error: %define variable 'var' redefined
|
[[input-dg.y:1.9-11: error: %define variable 'var' redefined
|
||||||
@@ -1366,7 +1366,7 @@ AT_BISON_CHECK([[-fcaret -Dvar=cmd-d input-dg.y]], [[1]], [],
|
|||||||
|
|
||||||
AT_DATA([[input-unused.y]],
|
AT_DATA([[input-unused.y]],
|
||||||
[[%%
|
[[%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-Dunused-d -Funused-f input-unused.y]], [[1]], [],
|
AT_BISON_CHECK([[-Dunused-d -Funused-f input-unused.y]], [[1]], [],
|
||||||
[[<command line>:2: error: %define variable 'unused-d' is not used
|
[[<command line>:2: error: %define variable 'unused-d' is not used
|
||||||
@@ -1386,7 +1386,7 @@ AT_DATA([Input.y],
|
|||||||
%define public "maybe"
|
%define public "maybe"
|
||||||
%define parser_class_name "Input"
|
%define parser_class_name "Input"
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[Input.y]], [1], [],
|
AT_BISON_CHECK([[Input.y]], [1], [],
|
||||||
@@ -1409,7 +1409,7 @@ AT_SETUP([["%define" enum variables]])
|
|||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%define lr.default-reduction bogus
|
[[%define lr.default-reduction bogus
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]],
|
AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]],
|
||||||
[[input.y:1.9-28: error: invalid value for %define variable 'lr.default-reduction': 'bogus'
|
[[input.y:1.9-28: error: invalid value for %define variable 'lr.default-reduction': 'bogus'
|
||||||
@@ -1424,7 +1424,7 @@ input.y:1.9-28: accepted value: 'accepting'
|
|||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%define api.push-pull neither
|
[[%define api.push-pull neither
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]],
|
AT_BISON_CHECK([[-fcaret input.y]], [[1]], [[]],
|
||||||
[[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
|
[[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
|
||||||
@@ -1451,7 +1451,7 @@ AT_DATA([[input.y]],
|
|||||||
%define api.namespace "foo"
|
%define api.namespace "foo"
|
||||||
%define variant
|
%define variant
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[-fcaret input.y]], [1], [],
|
AT_BISON_CHECK([[-fcaret input.y]], [1], [],
|
||||||
[[input.y:1.9-21: warning: deprecated directive, use '%define api.push-pull both' [-Wdeprecated]
|
[[input.y:1.9-21: warning: deprecated directive, use '%define api.push-pull both' [-Wdeprecated]
|
||||||
@@ -1492,7 +1492,7 @@ AT_DATA([[input.y]],
|
|||||||
[[%define api.pure ]$2[
|
[[%define api.pure ]$2[
|
||||||
]$1[
|
]$1[
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[input.y]], [[1]], [],
|
AT_BISON_CHECK([[input.y]], [[1]], [],
|
||||||
@@ -1525,7 +1525,7 @@ AT_DATA([[input.y]],
|
|||||||
%defines
|
%defines
|
||||||
%define api.namespace "]$1["
|
%define api.namespace "]$1["
|
||||||
%%
|
%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[input.y]], [1], [],
|
AT_BISON_CHECK([[input.y]], [1], [],
|
||||||
@@ -1685,7 +1685,7 @@ AT_SETUP([[LAC: Errors for %define]])
|
|||||||
|
|
||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%%
|
[[%%
|
||||||
start: ;
|
start: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
# parse.lac.* options are useless if LAC isn't actually activated.
|
# parse.lac.* options are useless if LAC isn't actually activated.
|
||||||
@@ -1708,7 +1708,7 @@ AT_SETUP([[-Werror is not affected by -Wnone and -Wall]])
|
|||||||
|
|
||||||
AT_DATA([[input.y]],
|
AT_DATA([[input.y]],
|
||||||
[[%%
|
[[%%
|
||||||
foo-bar: ;
|
foo-bar: %empty;
|
||||||
]])
|
]])
|
||||||
|
|
||||||
# -Werror is not enabled by -Wall or equivalent.
|
# -Werror is not enabled by -Wall or equivalent.
|
||||||
@@ -1745,7 +1745,7 @@ m4_pushdef([AT_TEST],
|
|||||||
[AT_DATA([[input.y]],
|
[AT_DATA([[input.y]],
|
||||||
[[$1
|
[[$1
|
||||||
%%
|
%%
|
||||||
exp: /* empty */;
|
exp: %empty;
|
||||||
]])
|
]])
|
||||||
AT_BISON_CHECK([[$2 input.y]], [[1]], [[]],
|
AT_BISON_CHECK([[$2 input.y]], [[1]], [[]],
|
||||||
[[$3: error: '%name-prefix' and '%define api.prefix' cannot be used together
|
[[$3: error: '%name-prefix' and '%define api.prefix' cannot be used together
|
||||||
|
|||||||
@@ -933,7 +933,7 @@ S: 'a' A 'a'
|
|||||||
A: 'a' 'a' B
|
A: 'a' 'a' B
|
||||||
;
|
;
|
||||||
B: 'a'
|
B: 'a'
|
||||||
| %prec 'a'
|
| %empty %prec 'a'
|
||||||
;
|
;
|
||||||
c: 'a' 'a' 'b'
|
c: 'a' 'a' 'b'
|
||||||
| A
|
| A
|
||||||
@@ -1533,8 +1533,8 @@ a: 'a' ;
|
|||||||
and multiple reductions. The first reduction has more lookaheads than the
|
and multiple reductions. The first reduction has more lookaheads than the
|
||||||
second, so the first should always be preferred as the default reduction if
|
second, so the first should always be preferred as the default reduction if
|
||||||
enabled. The second reduction has one lookahead. */
|
enabled. The second reduction has one lookahead. */
|
||||||
b: ;
|
b: %empty;
|
||||||
c: ;
|
c: %empty;
|
||||||
]],
|
]],
|
||||||
dnl Visit each state mentioned above.
|
dnl Visit each state mentioned above.
|
||||||
[['a', 'a']],
|
[['a', 'a']],
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ AT_DATA([input.y],
|
|||||||
%token <operator> LE 134 "<="
|
%token <operator> LE 134 "<="
|
||||||
%left OR "<="
|
%left OR "<="
|
||||||
%%
|
%%
|
||||||
exp: ;
|
exp: %empty;
|
||||||
%%
|
%%
|
||||||
]])
|
]])
|
||||||
|
|
||||||
@@ -721,7 +721,7 @@ AT_KEYWORDS([report])
|
|||||||
AT_DATA([input.y],
|
AT_DATA([input.y],
|
||||||
[[%%
|
[[%%
|
||||||
statement: struct_stat;
|
statement: struct_stat;
|
||||||
struct_stat: /* empty. */ | if else;
|
struct_stat: %empty | if else;
|
||||||
if: "if" "const" "then" statement;
|
if: "if" "const" "then" statement;
|
||||||
else: "else" statement;
|
else: "else" statement;
|
||||||
%%
|
%%
|
||||||
@@ -869,7 +869,7 @@ type: DATA
|
|||||||
| INVALID
|
| INVALID
|
||||||
;
|
;
|
||||||
|
|
||||||
body: /* empty */
|
body: %empty
|
||||||
| body member
|
| body member
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -929,7 +929,7 @@ $1
|
|||||||
%token B
|
%token B
|
||||||
|
|
||||||
%%
|
%%
|
||||||
program: /* empty */
|
program: %empty
|
||||||
| program e ';'
|
| program e ';'
|
||||||
| program error ';';
|
| program error ';';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user