@@ -129,6 +129,11 @@ def new_strterm2(type, start, finish)
129
129
term . merge ( { :balance => true , :nesting => 0 } )
130
130
end
131
131
132
+ def new_op_asgn ( value )
133
+ self . yylval = value
134
+ :tOP_ASGN
135
+ end
136
+
132
137
def process_numeric
133
138
@lex_state = :expr_end
134
139
scanner = @scanner
@@ -568,15 +573,13 @@ def yylex
568
573
elsif check ( /\* / )
569
574
if scan ( /\* \* \= / )
570
575
@lex_state = :expr_beg
571
- self . yylval = '**'
572
- return :tOP_ASGN
576
+ return new_op_asgn ( '**' )
573
577
elsif scan ( /\* \* / )
574
578
self . set_arg_state
575
579
return :tPOW
576
580
elsif scan ( /\* \= / )
577
581
@lex_state = :expr_beg
578
- self . yylval = '*'
579
- return :tOP_ASGN
582
+ return new_op_asgn ( '*' )
580
583
else
581
584
scan ( /\* / )
582
585
@@ -676,16 +679,14 @@ def yylex
676
679
@lex_state = :expr_beg
677
680
678
681
if scan ( /\= / )
679
- self . yylval = '&&'
680
- return :tOP_ASGN
682
+ return new_op_asgn ( '&&' )
681
683
end
682
684
683
685
return :tANDOP
684
686
685
687
elsif scan ( /\= / )
686
688
@lex_state = :expr_beg
687
- self . yylval = '&'
688
- return :tOP_ASGN
689
+ return new_op_asgn ( '&' )
689
690
end
690
691
691
692
if spcarg?
@@ -705,15 +706,13 @@ def yylex
705
706
if scan ( /\| / )
706
707
@lex_state = :expr_beg
707
708
if scan ( /\= / )
708
- self . yylval = '||'
709
- return :tOP_ASGN
709
+ return new_op_asgn ( '||' )
710
710
end
711
711
712
712
return :tOROP
713
713
714
714
elsif scan ( /\= / )
715
- self . yylval = '|'
716
- return :tOP_ASGN
715
+ return new_op_asgn ( '|' )
717
716
end
718
717
719
718
self . set_arg_state
@@ -759,8 +758,7 @@ def yylex
759
758
return :tREGEXP_BEG
760
759
elsif scan ( /\= / )
761
760
@lex_state = :expr_beg
762
- self . yylval = '/'
763
- return :tOP_ASGN
761
+ return new_op_asgn ( '/' )
764
762
elsif after_operator?
765
763
@lex_state = :expr_arg
766
764
elsif arg?
@@ -777,8 +775,7 @@ def yylex
777
775
elsif scan ( /\% / )
778
776
if scan ( /\= / )
779
777
@lex_state = :expr_beg
780
- self . yylval = '%'
781
- return :tOP_ASGN
778
+ return new_op_asgn ( '%' )
782
779
elsif check ( /[^\s ]/ )
783
780
if @lex_state == :expr_beg or ( @lex_state == :expr_arg && @space_seen )
784
781
start_word = scan ( /./ )
@@ -905,8 +902,7 @@ def yylex
905
902
906
903
elsif scan ( /\^ \= / )
907
904
@lex_state = :expr_beg
908
- self . yylval = '^'
909
- return :tOP_ASGN
905
+ return new_op_asgn ( '^' )
910
906
911
907
elsif scan ( /\^ / )
912
908
self . set_arg_state
@@ -915,8 +911,7 @@ def yylex
915
911
elsif check ( /\< / )
916
912
if scan ( /\< \< \= / )
917
913
@lex_state = :expr_beg
918
- self . yylval = '<<'
919
- return :tOP_ASGN
914
+ return new_op_asgn ( '<<' )
920
915
921
916
elsif scan ( /\< \< / )
922
917
if after_operator?
@@ -955,8 +950,7 @@ def yylex
955
950
956
951
elsif check ( /\> / )
957
952
if scan ( /\> \> \= / )
958
- self . yylval = '>>'
959
- return :tOP_ASGN
953
+ return new_op_asgn ( '>>' )
960
954
961
955
elsif scan ( /\> \> / )
962
956
self . set_arg_state
@@ -1002,8 +996,7 @@ def yylex
1002
996
1003
997
if scan ( /\= / )
1004
998
@lex_state = :expr_beg
1005
- self . yylval = matched
1006
- return :tOP_ASGN
999
+ return new_op_asgn ( matched )
1007
1000
end
1008
1001
1009
1002
if spcarg?
0 commit comments