mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
tests: factor the declaration/definition of yyerror and yylex.
* tests/local.at (AT_YYERROR_DECLARE, AT_YYERROR_DECLARE_EXTERN) (AT_YYERROR_DEFINE, AT_YYLEX_DECLARE, AT_YYLEX_DECLARE_EXTERN) (AT_YYLEX_DEFINE): New. Must be used inside AT_BISON_OPTION_PUSHDEFS/POPDEFS pair. * tests/actions.at, tests/conflicts.at, tests/glr-regression.at, * tests/headers.at, tests/input.at, tests/named-refs.at, * tests/regression.at, tests/skeletons.at, tests/synclines.at, * tests/torture.at: Use them.
This commit is contained in:
@@ -50,6 +50,7 @@ AT_CLEANUP
|
||||
|
||||
AT_SETUP([%nonassoc and eof])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS
|
||||
AT_DATA_GRAMMAR([input.y],
|
||||
[[
|
||||
%{
|
||||
@@ -58,12 +59,7 @@ AT_DATA_GRAMMAR([input.y],
|
||||
#include <string.h>
|
||||
|
||||
#define YYERROR_VERBOSE 1
|
||||
static void
|
||||
yyerror (const char *msg)
|
||||
{
|
||||
fprintf (stderr, "%s\n", msg);
|
||||
}
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
/* The current argument. */
|
||||
static const char *input;
|
||||
|
||||
@@ -93,6 +89,7 @@ main (int argc, const char *argv[])
|
||||
return yyparse ();
|
||||
}
|
||||
]])
|
||||
AT_BISON_OPTION_POPDEFS
|
||||
|
||||
m4_pushdef([AT_NONASSOC_AND_EOF_CHECK],
|
||||
[AT_BISON_CHECK([$1[ -o input.c input.y]])
|
||||
@@ -171,7 +168,7 @@ AT_SKEL_JAVA_IF([AT_DATA], [AT_DATA_GRAMMAR])([input.y],
|
||||
#include <string>]], [[
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
void yyerror (char const *msg);]])[
|
||||
]AT_YYERROR_DECLARE])[
|
||||
]AT_YYLEX_PROTOTYPE[;
|
||||
#define USE(Var)
|
||||
}
|
||||
@@ -212,31 +209,11 @@ public Object getLVal ()
|
||||
*lvalp = 1;
|
||||
return *input++;
|
||||
}]])[
|
||||
|
||||
/*----------.
|
||||
| yyerror. |
|
||||
`----------*/]AT_SKEL_JAVA_IF([[
|
||||
|
||||
public void yyerror (String msg)
|
||||
{
|
||||
System.err.println (msg);
|
||||
}
|
||||
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_SKEL_JAVA_IF([[
|
||||
};
|
||||
|
||||
%%]], [AT_SKEL_CC_IF([[
|
||||
|
||||
void
|
||||
yy::parser::error (const yy::location &, std::string const &msg)
|
||||
{
|
||||
std::cerr << msg << std::endl;
|
||||
}]], [[
|
||||
|
||||
void
|
||||
yyerror (char const *msg)
|
||||
{
|
||||
fprintf (stderr, "%s\n", msg);
|
||||
}]])])[
|
||||
%%]])[
|
||||
|
||||
/*-------.
|
||||
| main. |
|
||||
@@ -471,12 +448,12 @@ AT_CLEANUP
|
||||
# with minimal LR parser tables.
|
||||
|
||||
AT_SETUP([[LAC: %nonassoc requires splitting canonical LR states]])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS
|
||||
AT_DATA_GRAMMAR([[input.y]],
|
||||
[[%code {
|
||||
#include <stdio.h>
|
||||
void yyerror (char const *);
|
||||
int yylex (void);
|
||||
]AT_YYERROR_DECLARE[
|
||||
]AT_YYLEX_DECLARE[
|
||||
}
|
||||
|
||||
%error-verbose
|
||||
@@ -513,19 +490,8 @@ look:
|
||||
reduce-nonassoc: %prec 'a';
|
||||
|
||||
%%
|
||||
|
||||
void
|
||||
yyerror (char const *msg)
|
||||
{
|
||||
fprintf (stderr, "%s\n", msg);
|
||||
}
|
||||
|
||||
int
|
||||
yylex (void)
|
||||
{
|
||||
char const *input = "aaa";
|
||||
return *input++;
|
||||
}
|
||||
]AT_YYERROR_DEFINE[
|
||||
]AT_YYLEX_DEFINE([aaa])[
|
||||
|
||||
int
|
||||
main (void)
|
||||
@@ -533,6 +499,7 @@ main (void)
|
||||
return yyparse ();
|
||||
}
|
||||
]])
|
||||
AT_BISON_OPTION_POPDEFS
|
||||
|
||||
# Show canonical LR's failure.
|
||||
AT_BISON_CHECK([[-Dlr.type=canonical-lr -o input.c input.y]],
|
||||
|
||||
Reference in New Issue
Block a user