@@ -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
38753916arg : 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
57635767p_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
57995774p_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-
58115783p_variable : tIDENTIFIER
58125784 {
58135785 error_duplicate_pattern_variable(p, $1, &@1);
0 commit comments