Use %printer
directive for Bison 3.8
This commit is contained in:
parent
6031f4268b
commit
fa05697e48
Notes:
git
2021-09-14 18:52:05 +09:00
74
parse.y
74
parse.y
@ -88,7 +88,6 @@ struct lex_context {
|
|||||||
#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
|
#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
|
||||||
#define YYFREE(ptr) rb_parser_free(p, (ptr))
|
#define YYFREE(ptr) rb_parser_free(p, (ptr))
|
||||||
#define YYFPRINTF rb_parser_printf
|
#define YYFPRINTF rb_parser_printf
|
||||||
#define YYPRINT(out, tok, val) parser_token_value_print(p, (tok), &(val))
|
|
||||||
#define YY_LOCATION_PRINT(File, loc) \
|
#define YY_LOCATION_PRINT(File, loc) \
|
||||||
rb_parser_printf(p, "%d.%d-%d.%d", \
|
rb_parser_printf(p, "%d.%d-%d.%d", \
|
||||||
(loc).beg_pos.lineno, (loc).beg_pos.column,\
|
(loc).beg_pos.lineno, (loc).beg_pos.column,\
|
||||||
@ -653,7 +652,6 @@ RUBY_SYMBOL_EXPORT_END
|
|||||||
|
|
||||||
static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
|
static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
|
||||||
static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
|
static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
|
||||||
static void parser_token_value_print(struct parser_params *p, enum yytokentype type, const YYSTYPE *valp);
|
|
||||||
#ifndef RIPPER
|
#ifndef RIPPER
|
||||||
static ID formal_argument(struct parser_params*, ID);
|
static ID formal_argument(struct parser_params*, ID);
|
||||||
#else
|
#else
|
||||||
@ -1083,6 +1081,35 @@ static int looking_at_eol_p(struct parser_params *p);
|
|||||||
%expect 0
|
%expect 0
|
||||||
%define api.pure
|
%define api.pure
|
||||||
%define parse.error verbose
|
%define parse.error verbose
|
||||||
|
%printer {
|
||||||
|
#ifndef RIPPER
|
||||||
|
rb_parser_printf(p, "%"PRIsVALUE, rb_id2str($$));
|
||||||
|
#else
|
||||||
|
rb_parser_printf(p, "%"PRIsVALUE, RNODE($$)->nd_rval);
|
||||||
|
#endif
|
||||||
|
} tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL tOP_ASGN
|
||||||
|
%printer {
|
||||||
|
#ifndef RIPPER
|
||||||
|
rb_parser_printf(p, "%+"PRIsVALUE, $$->nd_lit);
|
||||||
|
#else
|
||||||
|
rb_parser_printf(p, "%+"PRIsVALUE, get_value($$));
|
||||||
|
#endif
|
||||||
|
} tINTEGER tFLOAT tRATIONAL tIMAGINARY tSTRING_CONTENT tCHAR
|
||||||
|
%printer {
|
||||||
|
#ifndef RIPPER
|
||||||
|
rb_parser_printf(p, "$%ld", $$->nd_nth);
|
||||||
|
#else
|
||||||
|
rb_parser_printf(p, "%"PRIsVALUE, $$);
|
||||||
|
#endif
|
||||||
|
} tNTH_REF
|
||||||
|
%printer {
|
||||||
|
#ifndef RIPPER
|
||||||
|
rb_parser_printf(p, "$%c", (int)$$->nd_nth);
|
||||||
|
#else
|
||||||
|
rb_parser_printf(p, "%"PRIsVALUE, $$);
|
||||||
|
#endif
|
||||||
|
} tBACK_REF
|
||||||
|
|
||||||
%lex-param {struct parser_params *p}
|
%lex-param {struct parser_params *p}
|
||||||
%parse-param {struct parser_params *p}
|
%parse-param {struct parser_params *p}
|
||||||
%initial-action
|
%initial-action
|
||||||
@ -10779,49 +10806,6 @@ rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
|
|||||||
}
|
}
|
||||||
#endif /* !RIPPER */
|
#endif /* !RIPPER */
|
||||||
|
|
||||||
static void
|
|
||||||
parser_token_value_print(struct parser_params *p, enum yytokentype type, const YYSTYPE *valp)
|
|
||||||
{
|
|
||||||
VALUE v;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case tIDENTIFIER: case tFID: case tGVAR: case tIVAR:
|
|
||||||
case tCONSTANT: case tCVAR: case tLABEL: case tOP_ASGN:
|
|
||||||
#ifndef RIPPER
|
|
||||||
v = rb_id2str(valp->id);
|
|
||||||
#else
|
|
||||||
v = valp->node->nd_rval;
|
|
||||||
#endif
|
|
||||||
rb_parser_printf(p, "%"PRIsVALUE, v);
|
|
||||||
break;
|
|
||||||
case tINTEGER: case tFLOAT: case tRATIONAL: case tIMAGINARY:
|
|
||||||
case tSTRING_CONTENT: case tCHAR:
|
|
||||||
#ifndef RIPPER
|
|
||||||
v = valp->node->nd_lit;
|
|
||||||
#else
|
|
||||||
v = get_value(valp->val);
|
|
||||||
#endif
|
|
||||||
rb_parser_printf(p, "%+"PRIsVALUE, v);
|
|
||||||
break;
|
|
||||||
case tNTH_REF:
|
|
||||||
#ifndef RIPPER
|
|
||||||
rb_parser_printf(p, "$%ld", valp->node->nd_nth);
|
|
||||||
#else
|
|
||||||
rb_parser_printf(p, "%"PRIsVALUE, valp->val);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case tBACK_REF:
|
|
||||||
#ifndef RIPPER
|
|
||||||
rb_parser_printf(p, "$%c", (int)valp->node->nd_nth);
|
|
||||||
#else
|
|
||||||
rb_parser_printf(p, "%"PRIsVALUE, valp->val);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
assignable0(struct parser_params *p, ID id, const char **err)
|
assignable0(struct parser_params *p, ID id, const char **err)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user