# 02111-1307 USA
-## ----------- ##
-## Copyright. ##
-## ----------- ##
+## ---------------- ##
+## Identification. ##
+## ---------------- ##
# b4_copyright(TITLE, YEARS)
# --------------------------
m4_define([b4_copyright],
-[/* A Bison parser, made from b4_filename, by GNU bison b4_version. */
+[/* A Bison parser, made by GNU Bison b4_version. */
/* $1,
Copyright (C) $2 Free Software Foundation, Inc.
Boston, MA 02111-1307, USA. */])
+# b4_identification
+# -----------------
+m4_define([b4_identification],
+[/* Identify Bison output. */
+[#]define YYBISON 1
+
+/* Skeleton name. */
+[#]define YYSKELETON_NAME b4_skeleton
+
+/* Pure parsers. */
+[#]define YYPURE b4_pure
+
+/* Using locations. */
+[#]define YYLSP_NEEDED b4_locations_flag
+])
+
+
+
+## ---------------- ##
+## Default values. ##
+## ---------------- ##
+
+m4_define_default([b4_epilogue], [])
+
+
+
+## ------------------------ ##
+## Pure/impure interfaces. ##
+## ------------------------ ##
+
+
+# b4_user_args
+# ------------
+m4_define([b4_user_args],
+[m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])])
+
+
+# b4_parse_param
+# --------------
+# If defined, b4_parse_param arrives double quoted, but below we prefer
+# it to be single quoted.
+m4_define_default([b4_parse_param])
+m4_define([b4_parse_param],
+b4_parse_param))
+
+
+
## ------------ ##
## Data Types. ##
## ------------ ##
m4_define([b4_c_arg],
[$2])
+
+
+## ----------- ##
+## Synclines. ##
+## ----------- ##
+
+
+# b4_syncline(LINE, FILE)
+# -----------------------
+m4_define([b4_syncline],
+[m4_if(b4_synclines_flag, 1,
+ [[#]line $1 $2])])
+
+
+# b4_symbol_actions(FILENAME, LINENO,
+# SYMBOL-TAG, SYMBOL-NUM,
+# SYMBOL-ACTION, SYMBOL-TYPENAME)
+# -------------------------------------------------
+m4_define([b4_symbol_actions],
+[m4_pushdef([b4_dollar_dollar], [yyvaluep->$6])dnl
+m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl
+ case $4: /* $3 */
+b4_syncline([$2], [$1])
+ $5;
+b4_syncline([@oline@], [@ofile@])
+ break;
+m4_popdef([b4_at_dollar])dnl
+m4_popdef([b4_dollar_dollar])dnl
+])
+
+
+# b4_yydestruct_generate(FUNCTION-DECLARATOR)
+# -------------------------------------------
+# Generate the "yydestruct" function, which declaration is issued using
+# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
+# or "b4_c_function_def" for K&R.
+m4_define([b4_yydestruct_generate],
+[[/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+]$1([yydestruct],
+ [static void],
+ [[int yytype], [yytype]],
+ [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
+ [[YYLTYPE *yylocationp], [yylocationp]]]))[
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+]b4_location_if([ (void) yylocationp;
+])[
+ switch (yytype)
+ {
+]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
+ default:
+ break;
+ }
+}]dnl
+])
+
+
+# b4_yysymprint_generate(FUNCTION-DECLARATOR)
+# -------------------------------------------
+# Generate the "yysymprint" function, which declaration is issued using
+# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
+# or "b4_c_function_def" for K&R.
+m4_define([b4_yysymprint_generate],
+[[/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+]$1([yysymprint],
+ [static void],
+ [[FILE *yyoutput], [yyoutput]],
+ [[int yytype], [yytype]],
+ [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
+ [[YYLTYPE *yylocationp], [yylocationp]]]))
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+b4_location_if([ (void) yylocationp;
+])dnl
+
+ if (yytype < YYNTOKENS)
+ {
+ YYFPRINTF (yyoutput, "token %s (", yytname[[yytype]]);
+# ifdef YYPRINT
+ YYPRINT (yyoutput, yytoknum[[yytype]], *yyvaluep);
+# endif
+ }
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[[yytype]]);
+
+ switch (yytype)
+ {
+m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
+ default:
+ break;
+ }
+ YYFPRINTF (yyoutput, ")");
+}
+])