#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
/// For a symbol, its name in clear.
static const char* const yytname_[];
-#endif
+#endif]b4_error_verbose_if([
-#if YYERROR_VERBOSE
/// Convert the symbol name \a n to a form suitable for a diagnostic.
- virtual std::string yytnamerr_ (const char *n);
-#endif
+ static std::string yytnamerr_ (const char *n);])[
#if YYDEBUG
/// For each rule, its source line number.
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-]b4_namespace_open[
-#if YYERROR_VERBOSE
+]b4_namespace_open[]b4_error_verbose_if([[
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
return yystr;
}
-
-#endif
+]])[
/// Build a parser object.
]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
// Generate an error message.
std::string
- ]b4_parser_class_name[::yysyntax_error_ (int yystate, int]dnl
-b4_error_verbose_if([ yytoken])[)
+ ]b4_parser_class_name[::yysyntax_error_ (]dnl
+b4_error_verbose_if([int yystate, int yytoken],
+ [int, int])[)
{
- std::string yyres;
- YYUSE (yystate);
-#if YYERROR_VERBOSE
+ std::string yyres;]b4_error_verbose_if([[
int yyn = yypact_[yystate];
if (yypact_ninf_ < yyn && yyn <= yylast_)
{
yyres += *yyp;
}
else
-#endif
- yyres = YY_("syntax error");
+ ]])dnl
+[ yyres = YY_("syntax error");
return yyres;
}