Skip to content

Commit e255964

Browse files
committed
Use user defined parameterizing rules range_expr
1 parent 088fd96 commit e255964

File tree

1 file changed

+44
-72
lines changed

1 file changed

+44
-72
lines changed

parse.y

Lines changed: 44 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -2793,7 +2793,7 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
27932793
%type <node> p_case_body p_cases p_top_expr p_top_expr_body
27942794
%type <node> p_expr p_as p_alt p_expr_basic p_find
27952795
%type <node> p_args p_args_head p_args_tail p_args_post p_arg p_rest
2796-
%type <node> p_value p_primitive p_primitive_value p_variable p_var_ref p_expr_ref p_const
2796+
%type <node> p_value p_primitive p_variable p_var_ref p_expr_ref p_const
27972797
%type <node> p_kwargs p_kwarg p_kw
27982798
%type <id> keyword_variable user_variable sym operation2 operation3
27992799
%type <id> cname fname op f_rest_arg f_block_arg opt_f_block_arg f_norm_arg f_bad_arg
@@ -3097,6 +3097,47 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
30973097
}
30983098
;
30993099

3100+
%rule range_expr(range) <node>
3101+
: range tDOT2 range
3102+
{
3103+
value_expr($1);
3104+
value_expr($3);
3105+
$$ = NEW_DOT2($1, $3, &@$, &@2);
3106+
/*% ripper: dot2!($:1, $:3) %*/
3107+
}
3108+
| range tDOT3 range
3109+
{
3110+
value_expr($1);
3111+
value_expr($3);
3112+
$$ = NEW_DOT3($1, $3, &@$, &@2);
3113+
/*% ripper: dot3!($:1, $:3) %*/
3114+
}
3115+
| range tDOT2
3116+
{
3117+
value_expr($1);
3118+
$$ = NEW_DOT2($1, new_nil_at(p, &@2.end_pos), &@$, &@2);
3119+
/*% ripper: dot2!($:1, Qnil) %*/
3120+
}
3121+
| range tDOT3
3122+
{
3123+
value_expr($1);
3124+
$$ = NEW_DOT3($1, new_nil_at(p, &@2.end_pos), &@$, &@2);
3125+
/*% ripper: dot3!($:1, Qnil) %*/
3126+
}
3127+
| tBDOT2 range
3128+
{
3129+
value_expr($2);
3130+
$$ = NEW_DOT2(new_nil_at(p, &@1.beg_pos), $2, &@$, &@1);
3131+
/*% ripper: dot2!(Qnil, $:2) %*/
3132+
}
3133+
| tBDOT3 range
3134+
{
3135+
value_expr($2);
3136+
$$ = NEW_DOT3(new_nil_at(p, &@1.beg_pos), $2, &@$, &@1);
3137+
/*% ripper: dot3!(Qnil, $:2) %*/
3138+
}
3139+
;
3140+
31003141
%rule value_expr(value) <node>
31013142
: value
31023143
{
@@ -3874,44 +3915,7 @@ reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
38743915

38753916
arg : asgn(arg_rhs)
38763917
| op_asgn(arg_rhs)
3877-
| arg tDOT2 arg
3878-
{
3879-
value_expr($1);
3880-
value_expr($3);
3881-
$$ = NEW_DOT2($1, $3, &@$, &@2);
3882-
/*% ripper: dot2!($:1, $:3) %*/
3883-
}
3884-
| arg tDOT3 arg
3885-
{
3886-
value_expr($1);
3887-
value_expr($3);
3888-
$$ = NEW_DOT3($1, $3, &@$, &@2);
3889-
/*% ripper: dot3!($:1, $:3) %*/
3890-
}
3891-
| arg tDOT2
3892-
{
3893-
value_expr($1);
3894-
$$ = NEW_DOT2($1, new_nil_at(p, &@2.end_pos), &@$, &@2);
3895-
/*% ripper: dot2!($:1, Qnil) %*/
3896-
}
3897-
| arg tDOT3
3898-
{
3899-
value_expr($1);
3900-
$$ = NEW_DOT3($1, new_nil_at(p, &@2.end_pos), &@$, &@2);
3901-
/*% ripper: dot3!($:1, Qnil) %*/
3902-
}
3903-
| tBDOT2 arg
3904-
{
3905-
value_expr($2);
3906-
$$ = NEW_DOT2(new_nil_at(p, &@1.beg_pos), $2, &@$, &@1);
3907-
/*% ripper: dot2!(Qnil, $:2) %*/
3908-
}
3909-
| tBDOT3 arg
3910-
{
3911-
value_expr($2);
3912-
$$ = NEW_DOT3(new_nil_at(p, &@1.beg_pos), $2, &@$, &@1);
3913-
/*% ripper: dot3!(Qnil, $:2) %*/
3914-
}
3918+
| range_expr(arg)
39153919
| arg '+' arg
39163920
{
39173921
$$ = call_bin_op(p, $1, '+', $3, &@2, &@$);
@@ -5761,39 +5765,10 @@ p_any_kwrest : p_kwrest
57615765
;
57625766

57635767
p_value : p_primitive
5764-
| p_primitive_value tDOT2 p_primitive_value
5765-
{
5766-
$$ = NEW_DOT2($1, $3, &@$, &@2);
5767-
/*% ripper: dot2!($:1, $:3) %*/
5768-
}
5769-
| p_primitive_value tDOT3 p_primitive_value
5770-
{
5771-
$$ = NEW_DOT3($1, $3, &@$, &@2);
5772-
/*% ripper: dot3!($:1, $:3) %*/
5773-
}
5774-
| p_primitive_value tDOT2
5775-
{
5776-
$$ = NEW_DOT2($1, new_nil_at(p, &@2.end_pos), &@$, &@2);
5777-
/*% ripper: dot2!($:1, Qnil) %*/
5778-
}
5779-
| p_primitive_value tDOT3
5780-
{
5781-
$$ = NEW_DOT3($1, new_nil_at(p, &@2.end_pos), &@$, &@2);
5782-
/*% ripper: dot3!($:1, Qnil) %*/
5783-
}
5768+
| range_expr(p_primitive)
57845769
| p_var_ref
57855770
| p_expr_ref
57865771
| p_const
5787-
| tBDOT2 p_primitive_value
5788-
{
5789-
$$ = NEW_DOT2(new_nil_at(p, &@1.beg_pos), $2, &@$, &@1);
5790-
/*% ripper: dot2!(Qnil, $:2) %*/
5791-
}
5792-
| tBDOT3 p_primitive_value
5793-
{
5794-
$$ = NEW_DOT3(new_nil_at(p, &@1.beg_pos), $2, &@$, &@1);
5795-
/*% ripper: dot3!(Qnil, $:2) %*/
5796-
}
57975772
;
57985773

57995774
p_primitive : inline_primary
@@ -5805,9 +5780,6 @@ p_primitive : inline_primary
58055780
| lambda
58065781
;
58075782

5808-
p_primitive_value : value_expr(p_primitive)
5809-
;
5810-
58115783
p_variable : tIDENTIFIER
58125784
{
58135785
error_duplicate_pattern_variable(p, $1, &@1);

0 commit comments

Comments
 (0)