+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+m4_divert_push([KILL])# M4 code.
+# b4_symbol_destructor(SYMBOL-NUMBER, DESTRUCTOR, TYPE-NAME)
+# ----------------------------------------------------------
+m4_define([b4_symbol_destructor],
+[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
+m4_pushdef([b4_at_dollar], [yylocation])dnl
+ case $4: /* $3 */
+#line $2 "$1"
+ $5;
+#line __oline__ "__ofile__"
+ break;
+m4_popdef([b4_at_dollar])dnl
+m4_popdef([b4_dollar_dollar])])
+
+m4_divert_pop([KILL])dnl# End of M4 code.
+static void
+yydestructor (int yytype,
+ YYSTYPE yyvalue[]b4_location_if([, YYLTYPE yylocation]))
+{
+ switch (yytype)
+ {
+m4_map([b4_symbol_destructor], m4_defn([b4_symbol_destructors]))dnl
+ default:
+ break;
+ }
+}
+
+
+#if YYDEBUG
+/*---------------------------.
+| Print this symbol on OUT. |
+`---------------------------*/
+
+m4_divert_push([KILL])# M4 code.
+# b4_symbol_printer(SYMBOL-NUMBER, PRINTER, TYPE-NAME)
+# ----------------------------------------------------------
+m4_define([b4_symbol_printer],
+[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
+m4_pushdef([b4_at_dollar], [yylocation])dnl
+ case $4: /* $3 */
+#line $2 "$1"
+ $5;
+#line __oline__ "__ofile__"
+ break;
+m4_popdef([b4_at_dollar])dnl
+m4_popdef([b4_dollar_dollar])])
+
+m4_divert_pop([KILL])dnl# End of M4 code.
+static void
+yysymprint (FILE* out, int yytype,
+ YYSTYPE yyvalue[]b4_location_if([, YYLTYPE yylocation]))
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (out, "token %d (%s ", yytoknum[[yytype]], yytname[[yytype]]);
+ else
+ YYFPRINTF (out, "nterm %s (", yytname[[yytype]]);
+# ifdef YYPRINT
+ YYPRINT (out, yytype, yyvalue);
+# else
+ switch (yytype)
+ {
+m4_map([b4_symbol_printer], m4_defn([b4_symbol_printers]))dnl
+ default:
+ break;
+ }
+# endif /* !defined YYPRINT. */
+ YYFPRINTF (out, ")");
+}
+#endif /* YYDEBUG. */
+