tests: extract AT_LOCATION_PRINT_DECLARE and AT_LOCATION_PRINT_DEFINE

* tests/local.at (AT_LOCATION_PRINT_DECLARE)
(AT_LOCATION_PRINT_DEFINE): New.
This commit is contained in:
Akim Demaille
2021-08-05 08:59:59 +02:00
parent 6fc9f13aef
commit 9de593aba7

View File

@@ -614,31 +614,22 @@ m4_define([AT_DATA_GRAMMAR(c)],
$2]) $2])
]) ])
m4_define([AT_YYERROR_FORMALS(c)], # AT_LOCATION_PRINT_DECLARE
[AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE const * const llocp, ])AT_PARAM_IF([AT_PARSE_PARAMS, ])[const char *msg]]) # -------------------------
m4_define([AT_LOCATION_PRINT_DECLARE],
m4_define([AT_YYERROR_PROTOTYPE(c)], [AT_LOCATION_IF([[
[[void ]AT_NAME_PREFIX[error (]AT_YYERROR_FORMALS[)]])
m4_define([AT_YYERROR_DECLARE_EXTERN(c)],
[AT_YYERROR_PROTOTYPE;])
m4_define([AT_YYERROR_DECLARE(c)],
[[#include <stdio.h>
]AT_LOCATION_IF([[
#if defined ]AT_YYLTYPE[_IS_TRIVIAL && ]AT_YYLTYPE[_IS_TRIVIAL #if defined ]AT_YYLTYPE[_IS_TRIVIAL && ]AT_YYLTYPE[_IS_TRIVIAL
static int location_print (FILE *yyo, ]AT_YYLTYPE[ const * const yylocp); static int location_print (FILE *yyo, ]AT_YYLTYPE[ const * const yylocp);
# ifndef LOCATION_PRINT # ifndef LOCATION_PRINT
# define LOCATION_PRINT(File, Loc) location_print (File, &(Loc)) # define LOCATION_PRINT(File, Loc) location_print (File, &(Loc))
# endif # endif
#endif #endif
]])[ ]])dnl
static ]AT_YYERROR_DECLARE_EXTERN]) ])
# AT_LOCATION_PRINT_DEFINE
# "%define parse.error custom" uses a different format, easy to check. # ------------------------
# The "verbose" one can be computed from it (see _AT_CHECK_CALC_ERROR). m4_define([AT_LOCATION_PRINT_DEFINE],
m4_define([AT_YYERROR_DEFINE(c)],
[AT_LOCATION_IF([[ [AT_LOCATION_IF([[
# if defined ]AT_YYLTYPE[_IS_TRIVIAL && ]AT_YYLTYPE[_IS_TRIVIAL # if defined ]AT_YYLTYPE[_IS_TRIVIAL && ]AT_YYLTYPE[_IS_TRIVIAL
/* Print *YYLOCP on YYO. */ /* Print *YYLOCP on YYO. */
@@ -668,7 +659,28 @@ location_print (FILE *yyo, ]AT_YYLTYPE[ const * const yylocp)
return res; return res;
} }
#endif #endif
]])[ ]])])
m4_define([AT_YYERROR_FORMALS(c)],
[AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE const * const llocp, ])AT_PARAM_IF([AT_PARSE_PARAMS, ])[const char *msg]])
m4_define([AT_YYERROR_PROTOTYPE(c)],
[[void ]AT_NAME_PREFIX[error (]AT_YYERROR_FORMALS[)]])
m4_define([AT_YYERROR_DECLARE_EXTERN(c)],
[AT_YYERROR_PROTOTYPE;])
m4_define([AT_YYERROR_DECLARE(c)],
[[#include <stdio.h>
]AT_LOCATION_PRINT_DECLARE[
static ]AT_YYERROR_DECLARE_EXTERN])
# "%define parse.error custom" uses a different format, easy to check.
# The "verbose" one can be computed from it (see _AT_CHECK_CALC_ERROR).
m4_define([AT_YYERROR_DEFINE(c)],
[AT_LOCATION_PRINT_DEFINE[
]AT_ERROR_CUSTOM_IF([[ ]AT_ERROR_CUSTOM_IF([[
int int