Feature #8430 ยป ratio_lit.patch
| parse.y | ||
|---|---|---|
|
keyword__ENCODING__
|
||
|
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL
|
||
|
%token <node> tINTEGER tFLOAT tSTRING_CONTENT tCHAR
|
||
|
%token <node> tINTEGER tFLOAT tRATIONAL tSTRING_CONTENT tCHAR
|
||
|
%token <node> tNTH_REF tBACK_REF
|
||
|
%token <num> tREGEXP_END
|
||
| ... | ... | |
|
$$ = dispatch2(unary, ripper_intern("-@"), $$);
|
||
|
%*/
|
||
|
}
|
||
|
| tUMINUS_NUM tRATIONAL tPOW arg
|
||
|
{
|
||
|
/*%%%*/
|
||
|
$$ = NEW_CALL(call_bin_op($2, tPOW, $4), tUMINUS, 0);
|
||
|
/*%
|
||
|
$$ = dispatch3(binary, $2, ripper_intern("**"), $4);
|
||
|
$$ = dispatch2(unary, ripper_intern("-@"), $$);
|
||
|
%*/
|
||
|
}
|
||
|
| tUPLUS arg
|
||
|
{
|
||
|
/*%%%*/
|
||
| ... | ... | |
|
numeric : tINTEGER
|
||
|
| tFLOAT
|
||
|
| tRATIONAL
|
||
|
| tUMINUS_NUM tINTEGER %prec tLOWEST
|
||
|
{
|
||
|
/*%%%*/
|
||
| ... | ... | |
|
$$ = dispatch2(unary, ripper_intern("-@"), $2);
|
||
|
%*/
|
||
|
}
|
||
|
| tUMINUS_NUM tRATIONAL %prec tLOWEST
|
||
|
{
|
||
|
/*%%%*/
|
||
|
$$ = NEW_CALL($2, tUMINUS, 0);
|
||
|
/*%
|
||
|
$$ = dispatch2(unary, ripper_intern("-@"), $2);
|
||
|
%*/
|
||
|
}
|
||
|
;
|
||
|
user_variable : tIDENTIFIER
|
||
| ... | ... | |
|
}
|
||
|
decode_num:
|
||
|
pushback(c);
|
||
|
if (nondigit) {
|
||
|
char tmp[30];
|
||
|
trailing_uc:
|
||
| ... | ... | |
|
errno = 0;
|
||
|
}
|
||
|
set_yylval_literal(DBL2NUM(d));
|
||
|
pushback(c);
|
||
|
return tFLOAT;
|
||
|
}
|
||
|
if (c == 'r') {
|
||
|
NODE *args = NEW_ARRAY(NEW_STR(rb_str_new_cstr(tok())));
|
||
|
NODE *fcall = NEW_FCALL(rb_intern("Rational"), args);
|
||
|
set_yylval_node(fcall);
|
||
|
return tRATIONAL;
|
||
|
}
|
||
|
set_yylval_literal(rb_cstr_to_inum(tok(), 10, FALSE));
|
||
|
pushback(c);
|
||
|
return tINTEGER;
|
||
|
}
|
||