skeletons: remove K&R C support

* data/c.m4 (b4_c_modern, b4_c_knr_formal_names, b4_c_knr_formal_decls)
(b4_c_knr_formal_decl, b4_c_formal_names, b4_c_formal_decls)
(b4_c_formal_decl): Remove.
(b4_c_ansi_formal_names, b4_c_ansi_formal_decls, b4_c_ansi_formal_decl):
Rename as...
(b4_c_formal_names, b4_c_formal_decls, b4_c_formal_decl):
these.
* data/glr.c, data/glr.cc, data/yacc.c: Adjust.
This commit is contained in:
Akim Demaille
2012-08-02 08:49:21 +02:00
parent c28e8b685b
commit 71b56f4683
4 changed files with 30 additions and 97 deletions

View File

@@ -317,106 +317,43 @@ m4_define([b4_symbol_value],
## --------------------------------------------- ## ## ---------------------- ##
## Defining C functions in both K&R and ANSI-C. ## ## Defining C functions. ##
## --------------------------------------------- ## ## ---------------------- ##
# b4_modern_c
# -----------
# A predicate useful in #if to determine whether C is ancient or modern.
#
# If __STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run
# as 'cc' doesn't define __STDC__ (or __STDC_VERSION__) for pedantic
# reasons, but it defines __C99__FUNC__ so check that as well.
# Microsoft C normally doesn't define these macros, but it defines _MSC_VER.
# Consider a C++ compiler to be modern if it defines __cplusplus.
#
m4_define([b4_c_modern],
[[(defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)]])
# b4_c_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...) # b4_c_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
# ---------------------------------------------------------- # ----------------------------------------------------------
# Declare the function NAME. # Declare the function NAME in C.
m4_define([b4_c_function_def], m4_define([b4_c_function_def],
[#if b4_c_modern
b4_c_ansi_function_def($@)
#else
$2
$1 (b4_c_knr_formal_names(m4_shift2($@)))
b4_c_knr_formal_decls(m4_shift2($@))
#endif[]dnl
])
# b4_c_ansi_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
# ---------------------------------------------------------------
# Declare the function NAME in ANSI.
m4_define([b4_c_ansi_function_def],
[$2 [$2
$1 (b4_c_ansi_formals(m4_shift2($@)))[]dnl $1 (b4_c_formals(m4_shift2($@)))[]dnl
]) ])
# b4_c_ansi_formals([DECL1, NAME1], ...) # b4_c_formals([DECL1, NAME1], ...)
# -------------------------------------- # ---------------------------------
# Output the arguments ANSI-C definition. # The formal arguments of a C function definition.
m4_define([b4_c_ansi_formals], m4_define([b4_c_formals],
[m4_if([$#], [0], [void], [m4_if([$#], [0], [void],
[$#$1], [1], [void], [$#$1], [1], [void],
[m4_map_sep([b4_c_ansi_formal], [, ], [$@])])]) [m4_map_sep([b4_c_formal], [, ], [$@])])])
m4_define([b4_c_ansi_formal], m4_define([b4_c_formal],
[$1]) [$1])
# b4_c_knr_formal_names([DECL1, NAME1], ...)
# ------------------------------------------
# Output the argument names.
m4_define([b4_c_knr_formal_names],
[m4_map_sep([b4_c_knr_formal_name], [, ], [$@])])
m4_define([b4_c_knr_formal_name], ## ----------------------- ##
[$2]) ## Declaring C functions. ##
## ----------------------- ##
# b4_c_knr_formal_decls([DECL1, NAME1], ...)
# ------------------------------------------
# Output the K&R argument declarations.
m4_define([b4_c_knr_formal_decls],
[m4_map_sep([b4_c_knr_formal_decl],
[
],
[$@])])
m4_define([b4_c_knr_formal_decl],
[ $1;])
## ------------------------------------------------------------ ##
## Declaring (prototyping) C functions in both K&R and ANSI-C. ##
## ------------------------------------------------------------ ##
# b4_c_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...) # b4_c_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
# ----------------------------------------------------------- # -----------------------------------------------------------
# Declare the function NAME. # Declare the function NAME.
m4_define([b4_c_function_decl], m4_define([b4_c_function_decl],
[#if b4_c_modern [$2 $1 (b4_c_formals(m4_shift2($@)));[]dnl
b4_c_ansi_function_decl($@)
#else
$2 $1 ();
#endif[]dnl
])
# b4_c_ansi_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
# ----------------------------------------------------------------
# Declare the function NAME.
m4_define([b4_c_ansi_function_decl],
[$2 $1 (b4_c_ansi_formals(m4_shift2($@)));[]dnl
]) ])
@@ -479,8 +416,7 @@ b4_syncline([@oline@], [@ofile@])
# b4_yydestruct_generate(FUNCTION-DECLARATOR) # b4_yydestruct_generate(FUNCTION-DECLARATOR)
# ------------------------------------------- # -------------------------------------------
# Generate the "yydestruct" function, which declaration is issued using # Generate the "yydestruct" function, which declaration is issued using
# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C # FUNCTION-DECLARATOR, which may be "b4_c_function_def".
# or "b4_c_function_def" for K&R.
m4_define_default([b4_yydestruct_generate], m4_define_default([b4_yydestruct_generate],
[[/*-----------------------------------------------. [[/*-----------------------------------------------.
| Release the memory associated to this symbol. | | Release the memory associated to this symbol. |
@@ -513,8 +449,7 @@ m4_ifset([b4_parse_param], [, b4_parse_param]))[
# b4_yy_symbol_print_generate(FUNCTION-DECLARATOR) # b4_yy_symbol_print_generate(FUNCTION-DECLARATOR)
# ------------------------------------------------ # ------------------------------------------------
# Generate the "yy_symbol_print" function, which declaration is issued using # Generate the "yy_symbol_print" function, which declaration is issued using
# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C # FUNCTION-DECLARATOR, which may be "b4_c_function_def".
# or "b4_c_function_def" for K&R.
m4_define_default([b4_yy_symbol_print_generate], m4_define_default([b4_yy_symbol_print_generate],
[[ [[
/*--------------------------------. /*--------------------------------.

View File

@@ -52,7 +52,7 @@ m4_ifndef([b4_pure_flag],
# This is not shared with yacc.c in c.m4 because GLR relies on ISO C # This is not shared with yacc.c in c.m4 because GLR relies on ISO C
# formal argument declarations. # formal argument declarations.
m4_define([b4_user_formals], m4_define([b4_user_formals],
[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])]) [m4_ifset([b4_parse_param], [, b4_c_formals(b4_parse_param)])])
# b4_lex_param # b4_lex_param
@@ -178,7 +178,7 @@ m4_define([b4_shared_declarations],
]b4_percent_code_get([[requires]])[ ]b4_percent_code_get([[requires]])[
]b4_token_enums[ ]b4_token_enums[
]b4_declare_yylstype[ ]b4_declare_yylstype[
]b4_c_ansi_function_decl(b4_prefix[parse], [int], b4_parse_param)[ ]b4_c_function_decl(b4_prefix[parse], [int], b4_parse_param)[
]b4_percent_code_get([[provides]])[]dnl ]b4_percent_code_get([[provides]])[]dnl
]) ])
@@ -491,7 +491,7 @@ typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG;
YYFPRINTF Args; \ YYFPRINTF Args; \
} while (YYID (0)) } while (YYID (0))
]b4_yy_symbol_print_generate([b4_c_ansi_function_def])[ ]b4_yy_symbol_print_generate([b4_c_function_def])[
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \ do { \
@@ -872,7 +872,7 @@ yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
/* Bison grammar-table manipulation. */ /* Bison grammar-table manipulation. */
]b4_yydestruct_generate([b4_c_ansi_function_def])[ ]b4_yydestruct_generate([b4_c_function_def])[
/** Number of symbols composing the right hand side of rule #RULE. */ /** Number of symbols composing the right hand side of rule #RULE. */
static inline int static inline int
@@ -2276,7 +2276,7 @@ yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
| yyparse. | | yyparse. |
`----------*/ `----------*/
]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ ]b4_c_function_def([yyparse], [int], b4_parse_param)[
{ {
int yyresult; int yyresult;
yyGLRStack yystack; yyGLRStack yystack;

View File

@@ -71,7 +71,7 @@ m4_define([b4_yy_symbol_print_generate],
| Print this symbol. | | Print this symbol. |
`--------------------*/ `--------------------*/
]b4_c_ansi_function_def([yy_symbol_print], ]b4_c_function_def([yy_symbol_print],
[static void], [static void],
[[FILE *], []], [[FILE *], []],
[[int yytype], [yytype]], [[int yytype], [yytype]],
@@ -94,7 +94,7 @@ m4_append([b4_post_prologue],
[b4_syncline([@oline@], [@ofile@])[ [b4_syncline([@oline@], [@ofile@])[
]b4_yylloc_default_define[ ]b4_yylloc_default_define[
#define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
]b4_c_ansi_function_decl([yyerror], ]b4_c_function_decl([yyerror],
[static void],b4_locations_if([ [static void],b4_locations_if([
[[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp],
[yylocationp]],]) [yylocationp]],])
@@ -110,7 +110,7 @@ m4_append([b4_epilogue],
| Report an error. | | Report an error. |
`------------------*/ `------------------*/
]b4_c_ansi_function_def([yyerror], ]b4_c_function_def([yyerror],
[static void],b4_locations_if([ [static void],b4_locations_if([
[[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp],
[yylocationp]],]) [yylocationp]],])

View File

@@ -366,10 +366,8 @@ typedef unsigned char yytype_uint8;
#ifdef YYTYPE_INT8 #ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8; typedef YYTYPE_INT8 yytype_int8;
#elif ]b4_c_modern[
typedef signed char yytype_int8;
#else #else
typedef short int yytype_int8; typedef signed char yytype_int8;
#endif #endif
#ifdef YYTYPE_UINT16 #ifdef YYTYPE_UINT16
@@ -389,7 +387,7 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__
# elif defined size_t # elif defined size_t
# define YYSIZE_T size_t # define YYSIZE_T size_t
# elif ! defined YYSIZE_T && ]b4_c_modern[ # elif ! defined YYSIZE_T
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t # define YYSIZE_T size_t
# else # else
@@ -446,7 +444,7 @@ b4_push_if([], [b4_lac_if([], [[
# define alloca _alloca # define alloca _alloca
# else # else
# define YYSTACK_ALLOC alloca # define YYSTACK_ALLOC alloca
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && ]b4_c_modern[ # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
/* Use EXIT_SUCCESS as a witness for stdlib.h. */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS # ifndef EXIT_SUCCESS
@@ -483,13 +481,13 @@ b4_push_if([], [b4_lac_if([], [[
# endif # endif
# ifndef YYMALLOC # ifndef YYMALLOC
# define YYMALLOC malloc # define YYMALLOC malloc
# if ! defined malloc && ! defined EXIT_SUCCESS && ]b4_c_modern[ # if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif # endif
# endif # endif
# ifndef YYFREE # ifndef YYFREE
# define YYFREE free # define YYFREE free
# if ! defined free && ! defined EXIT_SUCCESS && ]b4_c_modern[ # if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */ void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif # endif
# endif # endif