mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-10 21:03:04 +00:00
Merge remote-tracking branch 'origin/maint'
* origin/maint: tests: use the generalized default yylex. tests: AT_YYERROR_DEFINE: prepare for list of ints. skeletons: no longer define YYLSP_NEEDED. c++: do not export YYTOKEN_TABLE and YYERROR_VERBOSE. Conflicts: data/c.m4 data/glr.cc data/lalr1.cc doc/bison.texi tests/regression.at
This commit is contained in:
@@ -51,7 +51,7 @@ exp: { putchar ('0'); }
|
||||
;
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE(123456789)[
|
||||
]AT_YYLEX_DEFINE(["123456789"])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ sum_of_the_five_previous_values:
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([])[
|
||||
]AT_YYLEX_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -151,7 +151,7 @@ sum: { printf ("%d\n", $0.val + $-1.val + $-2.val); } ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE()[
|
||||
]AT_YYLEX_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -636,7 +636,7 @@ start: 'a' 'b' 'c' 'd' 'e' { $$ = 'S'; USE(($1, $2, $3, $4, $5)); } ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([abcd], [[yylval = res]])[
|
||||
]AT_YYLEX_DEFINE(["abcd"], [[yylval = res]])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -748,7 +748,7 @@ start:
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([abcdef])[
|
||||
]AT_YYLEX_DEFINE(["abcdef"])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -966,7 +966,7 @@ start:
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([abd], [yylval = res])[
|
||||
]AT_YYLEX_DEFINE(["abd"], [yylval = res])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1066,7 +1066,7 @@ start: { USE($$); } ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([])[
|
||||
]AT_YYLEX_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1121,7 +1121,7 @@ start:
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([])[
|
||||
]AT_YYLEX_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1381,7 +1381,7 @@ accept: /*empty*/ {
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([a])[
|
||||
]AT_YYLEX_DEFINE(["a"])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1417,7 +1417,7 @@ AT_DATA_GRAMMAR([input.y],
|
||||
# include <assert.h>
|
||||
|
||||
]AT_YYERROR_DECLARE[
|
||||
static int yylex (YYSTYPE *yylval);
|
||||
]AT_YYLEX_DECLARE[
|
||||
}
|
||||
%%
|
||||
input:
|
||||
@@ -1432,15 +1432,7 @@ exp:
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
static int
|
||||
yylex (YYSTYPE *yylval)
|
||||
{
|
||||
static char const input[] = "bcd";
|
||||
static size_t toknum;
|
||||
assert (toknum < sizeof input);
|
||||
*yylval = (toknum + 1) * 10;
|
||||
return input[toknum++];
|
||||
}
|
||||
]AT_YYLEX_DEFINE(["bcd"], [*lvalp = (toknum + 1) * 10])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
|
||||
@@ -485,7 +485,7 @@ reduce-nonassoc: %prec 'a';
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([aaa])[
|
||||
]AT_YYLEX_DEFINE(["aaa"])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
|
||||
@@ -383,7 +383,7 @@ B: 'a' { $$ = make_value ("B", "'a'"); } ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([a])[
|
||||
]AT_YYLEX_DEFINE(["a"])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -466,7 +466,7 @@ start:
|
||||
;
|
||||
|
||||
%%
|
||||
]AT_YYLEX_DEFINE(a)[
|
||||
]AT_YYLEX_DEFINE(["a"])[
|
||||
]AT_YYERROR_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
@@ -519,7 +519,7 @@ start: 'a' | 'a' ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE(a)[
|
||||
]AT_YYLEX_DEFINE(["a"])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -834,7 +834,7 @@ start:
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE()[
|
||||
]AT_YYLEX_DEFINE[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -889,7 +889,7 @@ start:
|
||||
%%
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([a])[
|
||||
]AT_YYLEX_DEFINE(["a"])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -998,16 +998,9 @@ merge (YYSTYPE s1, YYSTYPE s2)
|
||||
}
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
static int
|
||||
yylex (void)
|
||||
{
|
||||
static int const input[] = { PARENT_RHS_AFTER, 0 };
|
||||
static size_t toknum;
|
||||
assert (toknum < sizeof input / sizeof *input);
|
||||
if (input[toknum] == PARENT_RHS_AFTER)
|
||||
parent_rhs_after_value = 1;
|
||||
return input[toknum++];
|
||||
}
|
||||
]AT_YYLEX_DEFINE([{ PARENT_RHS_AFTER, 0 }],
|
||||
[if (res == PARENT_RHS_AFTER)
|
||||
parent_rhs_after_value = 1;])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -1117,17 +1110,8 @@ change_lookahead:
|
||||
%%
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
static int
|
||||
yylex (void)
|
||||
{
|
||||
static char const input[] = "ab";
|
||||
static size_t toknum;
|
||||
assert (toknum < sizeof input);
|
||||
yylloc.first_line = yylloc.last_line = 1;
|
||||
yylloc.first_column = yylloc.last_column = toknum + 1;
|
||||
yylval.value = input[toknum] + 'A' - 'a';
|
||||
return input[toknum++];
|
||||
}
|
||||
]AT_YYLEX_DEFINE(["ab"],
|
||||
[yylval.value = res + 'A' - 'a'])[
|
||||
|
||||
static void
|
||||
print_lookahead (char const *reduction)
|
||||
@@ -1449,7 +1433,7 @@ ambiguity2: ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE()[
|
||||
]AT_YYLEX_DEFINE[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -1507,16 +1491,9 @@ alt2: ;
|
||||
%%
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
static int
|
||||
yylex (void)
|
||||
{
|
||||
static char const input[] = "ab";
|
||||
static size_t toknum;
|
||||
assert (toknum < sizeof input);
|
||||
if (input[toknum] == 'b')
|
||||
lookahead_value = 1;
|
||||
return input[toknum++];
|
||||
}
|
||||
]AT_YYLEX_DEFINE(["ab"],
|
||||
[if (res == 'b')
|
||||
lookahead_value = 1])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -1663,7 +1640,7 @@ sym3: %merge<merge> { $$ = 0; } ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE()[
|
||||
]AT_YYLEX_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1709,7 +1686,7 @@ start:
|
||||
b: 'b';
|
||||
d: /* nada. */;
|
||||
%%
|
||||
]AT_YYLEX_DEFINE([abc])[
|
||||
]AT_YYLEX_DEFINE(["abc"])[
|
||||
]AT_YYERROR_DEFINE[
|
||||
int
|
||||
main (void)
|
||||
|
||||
@@ -296,8 +296,11 @@ $2])
|
||||
# AT_YYLEX_PROTOTYPE
|
||||
# AT_YYLEX_DECLARE_EXTERN
|
||||
# AT_YYLEX_DECLARE
|
||||
# AT_YYLEX_DEFINE(INPUT-STRING, [ACTION])
|
||||
# ---------------------------------------
|
||||
# AT_YYLEX_DEFINE([INPUT], [ACTION])
|
||||
# ----------------------------------
|
||||
# INPUT can be empty, or in double quotes, or a list (in braces).
|
||||
# ACTION may compute yylval for instance, using "res" as token type,
|
||||
# and "toknum" as the number of calls to yylex (starting at 0).
|
||||
m4_define([AT_YYLEX_PROTOTYPE],
|
||||
[int AT_NAME_PREFIX[]lex (]AT_YYLEX_FORMALS[)[]dnl
|
||||
])
|
||||
@@ -315,7 +318,9 @@ m4_define([AT_YYLEX_DEFINE],
|
||||
static
|
||||
]AT_YYLEX_PROTOTYPE[
|
||||
{
|
||||
static char const input[] = "$1";
|
||||
]m4_bmatch([$1], [^\(".*"\)?$],
|
||||
[[static char const input[] = ]m4_default([$1], [""])],
|
||||
[[static int const input[] = ]$1])[;
|
||||
static size_t toknum = 0;
|
||||
int res;
|
||||
]AT_USE_LEX_ARGS[;
|
||||
|
||||
@@ -101,7 +101,7 @@ start: ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]m4_if([$1], [[both]], [AT_YYLEX_DEFINE([])])[
|
||||
]m4_if([$1], [[both]], [AT_YYLEX_DEFINE])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
|
||||
@@ -463,15 +463,7 @@ AT_DATA_GRAMMAR([input.y],
|
||||
exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!";
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
|
||||
int
|
||||
yylex (void)
|
||||
{
|
||||
static int called;
|
||||
if (called++)
|
||||
abort ();
|
||||
return SPECIAL;
|
||||
}
|
||||
]AT_YYLEX_DEFINE([{ SPECIAL }])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -837,13 +829,11 @@ AT_CLEANUP
|
||||
# so that possible bound checking compilers could check all the skeletons.
|
||||
m4_define([_AT_DATA_DANCER_Y],
|
||||
[AT_DATA_GRAMMAR([dancer.y],
|
||||
[%{
|
||||
static int yylex (AT_LALR1_CC_IF([int *], [void]));
|
||||
AT_LALR1_CC_IF([#include <cstdlib>],
|
||||
[#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
]AT_YYERROR_DECLARE[])
|
||||
%}
|
||||
[[%code provides
|
||||
{
|
||||
]AT_YYERROR_DECLARE[
|
||||
]AT_YYLEX_DECLARE[
|
||||
}
|
||||
$1
|
||||
%token ARROW INVALID NUMBER STRING DATA
|
||||
%defines
|
||||
@@ -888,7 +878,8 @@ member: STRING
|
||||
| INVALID
|
||||
;
|
||||
%%
|
||||
AT_YYERROR_DEFINE[
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([":"])[
|
||||
]AT_LALR1_CC_IF(
|
||||
[int
|
||||
yyparse ()
|
||||
@@ -899,28 +890,14 @@ yyparse ()
|
||||
#endif
|
||||
return parser.parse ();
|
||||
}
|
||||
])
|
||||
|
||||
#include <assert.h>
|
||||
static int
|
||||
yylex (AT_LALR1_CC_IF([int *lval], [void]))
|
||||
[{
|
||||
static int const tokens[] =
|
||||
{
|
||||
':', -1
|
||||
};
|
||||
static size_t toknum;
|
||||
]AT_LALR1_CC_IF([*lval = 0; /* Pacify GCC. */])[
|
||||
assert (toknum < sizeof tokens / sizeof *tokens);
|
||||
return tokens[toknum++];
|
||||
}]
|
||||
])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
return yyparse ();
|
||||
}
|
||||
])
|
||||
]])
|
||||
])# _AT_DATA_DANCER_Y
|
||||
|
||||
|
||||
@@ -1062,13 +1039,8 @@ start:
|
||||
%printer { fprintf (yyoutput, "PRINTER"); } 'a';
|
||||
|
||||
%%
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
static int
|
||||
yylex (void)
|
||||
{
|
||||
return 'a';
|
||||
}
|
||||
]AT_YYLEX_DEFINE(["a"])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -1201,13 +1173,7 @@ sr_conflict:
|
||||
%%
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
int
|
||||
yylex (void)
|
||||
{
|
||||
static int const input[] = { 1, 2, 3, 0 };
|
||||
static int const *inputp = input;
|
||||
return *inputp++;
|
||||
}
|
||||
]AT_YYLEX_DEFINE([{ 1, 2, 3, 0 }])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -1304,7 +1270,7 @@ syntax_error:
|
||||
/* Induce two syntax error messages (which requires full error
|
||||
recovery by shifting 3 tokens) in order to detect any loss of the
|
||||
reallocated buffer. */
|
||||
]AT_YYLEX_DEFINE([abc])[
|
||||
]AT_YYLEX_DEFINE(["abc"])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1412,7 +1378,7 @@ syntax_error2:
|
||||
]AT_YYERROR_DEFINE[
|
||||
/* Induce two syntax error messages (which requires full error
|
||||
recovery by shifting 3 tokens). */
|
||||
]AT_YYLEX_DEFINE([abc])[
|
||||
]AT_YYLEX_DEFINE(["abc"])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1562,7 +1528,7 @@ A: /*empty*/ | 'a' ;
|
||||
|
||||
%%
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([$1])[
|
||||
]AT_YYLEX_DEFINE(["$1"])[
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user