@@ -129,6 +129,11 @@ def new_strterm2(type, start, finish)
129129 term . merge ( { :balance => true , :nesting => 0 } )
130130 end
131131
132+ def new_op_asgn ( value )
133+ self . yylval = value
134+ :tOP_ASGN
135+ end
136+
132137 def process_numeric
133138 @lex_state = :expr_end
134139 scanner = @scanner
@@ -568,15 +573,13 @@ def yylex
568573 elsif check ( /\* / )
569574 if scan ( /\* \* \= / )
570575 @lex_state = :expr_beg
571- self . yylval = '**'
572- return :tOP_ASGN
576+ return new_op_asgn ( '**' )
573577 elsif scan ( /\* \* / )
574578 self . set_arg_state
575579 return :tPOW
576580 elsif scan ( /\* \= / )
577581 @lex_state = :expr_beg
578- self . yylval = '*'
579- return :tOP_ASGN
582+ return new_op_asgn ( '*' )
580583 else
581584 scan ( /\* / )
582585
@@ -676,16 +679,14 @@ def yylex
676679 @lex_state = :expr_beg
677680
678681 if scan ( /\= / )
679- self . yylval = '&&'
680- return :tOP_ASGN
682+ return new_op_asgn ( '&&' )
681683 end
682684
683685 return :tANDOP
684686
685687 elsif scan ( /\= / )
686688 @lex_state = :expr_beg
687- self . yylval = '&'
688- return :tOP_ASGN
689+ return new_op_asgn ( '&' )
689690 end
690691
691692 if spcarg?
@@ -705,15 +706,13 @@ def yylex
705706 if scan ( /\| / )
706707 @lex_state = :expr_beg
707708 if scan ( /\= / )
708- self . yylval = '||'
709- return :tOP_ASGN
709+ return new_op_asgn ( '||' )
710710 end
711711
712712 return :tOROP
713713
714714 elsif scan ( /\= / )
715- self . yylval = '|'
716- return :tOP_ASGN
715+ return new_op_asgn ( '|' )
717716 end
718717
719718 self . set_arg_state
@@ -759,8 +758,7 @@ def yylex
759758 return :tREGEXP_BEG
760759 elsif scan ( /\= / )
761760 @lex_state = :expr_beg
762- self . yylval = '/'
763- return :tOP_ASGN
761+ return new_op_asgn ( '/' )
764762 elsif after_operator?
765763 @lex_state = :expr_arg
766764 elsif arg?
@@ -777,8 +775,7 @@ def yylex
777775 elsif scan ( /\% / )
778776 if scan ( /\= / )
779777 @lex_state = :expr_beg
780- self . yylval = '%'
781- return :tOP_ASGN
778+ return new_op_asgn ( '%' )
782779 elsif check ( /[^\s ]/ )
783780 if @lex_state == :expr_beg or ( @lex_state == :expr_arg && @space_seen )
784781 start_word = scan ( /./ )
@@ -905,8 +902,7 @@ def yylex
905902
906903 elsif scan ( /\^ \= / )
907904 @lex_state = :expr_beg
908- self . yylval = '^'
909- return :tOP_ASGN
905+ return new_op_asgn ( '^' )
910906
911907 elsif scan ( /\^ / )
912908 self . set_arg_state
@@ -915,8 +911,7 @@ def yylex
915911 elsif check ( /\< / )
916912 if scan ( /\< \< \= / )
917913 @lex_state = :expr_beg
918- self . yylval = '<<'
919- return :tOP_ASGN
914+ return new_op_asgn ( '<<' )
920915
921916 elsif scan ( /\< \< / )
922917 if after_operator?
@@ -955,8 +950,7 @@ def yylex
955950
956951 elsif check ( /\> / )
957952 if scan ( /\> \> \= / )
958- self . yylval = '>>'
959- return :tOP_ASGN
953+ return new_op_asgn ( '>>' )
960954
961955 elsif scan ( /\> \> / )
962956 self . set_arg_state
@@ -1002,8 +996,7 @@ def yylex
1002996
1003997 if scan ( /\= / )
1004998 @lex_state = :expr_beg
1005- self . yylval = matched
1006- return :tOP_ASGN
999+ return new_op_asgn ( matched )
10071000 end
10081001
10091002 if spcarg?
0 commit comments