diff --git a/parse.y b/parse.y index fd0810987f..60ca58f61e 100644 --- a/parse.y +++ b/parse.y @@ -649,8 +649,8 @@ rb_strterm_mark(VALUE obj) } #endif -#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(yyres, yystr) -size_t rb_yytnamerr(char *yyres, const char *yystr); +#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr) +size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr); #define TOKEN2ID(tok) ( \ tTOKEN_LOCAL_BEGIN<(tok)&&(tok) "`class' keyword" */ RUBY_FUNC_EXPORTED size_t -rb_yytnamerr(char *yyres, const char *yystr) +rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr) { + YYUSE(p); if (*yystr == '"') { size_t yyn = 0, bquote = 0; const char *yyp = yystr; diff --git a/tool/ytab.sed b/tool/ytab.sed index f7438077dc..ac7e97107d 100755 --- a/tool/ytab.sed +++ b/tool/ytab.sed @@ -67,6 +67,8 @@ a\ /^yy_reduce_print/,/^}/{ s/fprintf *(stderr,/YYFPRINTF (p,/g } +s/^yysyntax_error (/&struct parser_params *p, / +s/YYSYNTAX_ERROR yysyntax_error (/&p, / s/\( YYFPRINTF *(\)yyoutput,/\1p,/ s/\( YYFPRINTF *(\)yyo,/\1p,/ s/\( YYFPRINTF *(\)stderr,/\1p,/