Skip to content

Commit 9d970cb

Browse files
committedNov 21, 2013
Add set_arg_state method to lexer to set after operator state
1 parent bed157d commit 9d970cb

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed
 

‎lib/opal/parser/lexer.rb

+17-16
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ def space?
7575
@scanner.check(/\s/)
7676
end
7777

78+
def set_arg_state
79+
@lex_state = after_operator? ? :expr_arg : :expr_beg
80+
end
81+
7882
def scan(regexp)
7983
@scanner.scan regexp
8084
end
@@ -531,8 +535,7 @@ def yylex
531535
return :tOP_ASGN, '**'
532536
end
533537

534-
@lex_state = after_operator? ? :expr_arg : :expr_beg
535-
538+
self.set_arg_state
536539
return :tPOW, '**'
537540

538541
else
@@ -548,8 +551,7 @@ def yylex
548551
end
549552

550553
if scan(/\*/)
551-
@lex_state = after_operator? ? :expr_arg : :expr_beg
552-
554+
self.set_arg_state
553555
return :tPOW, '**'
554556
end
555557

@@ -620,7 +622,7 @@ def yylex
620622
end
621623
end
622624

623-
@lex_state = after_operator? ? :expr_arg : :expr_beg
625+
self.set_arg_state
624626

625627
if scan(/\=/)
626628
if scan(/\=/)
@@ -675,7 +677,7 @@ def yylex
675677
result = :tAMPER2
676678
end
677679

678-
@lex_state = after_operator? ? :expr_arg : :expr_beg
680+
self.set_arg_state
679681
return result, '&'
680682

681683
elsif scan(/\|/)
@@ -691,7 +693,7 @@ def yylex
691693
return :tOP_ASGN, '|'
692694
end
693695

694-
@lex_state = after_operator? ? :expr_arg : :expr_beg
696+
self.set_arg_state
695697
return :tPIPE, '|'
696698

697699
elsif scan(/\%[QqWwixr]/)
@@ -761,7 +763,7 @@ def yylex
761763
end
762764
end
763765

764-
@lex_state = after_operator? ? :expr_arg : :expr_beg
766+
self.set_arg_state
765767

766768
return :tPERCENT, '%'
767769

@@ -880,8 +882,7 @@ def yylex
880882
@lex_state = :expr_beg
881883
return :tOP_ASGN, '^'
882884
elsif scan(/\^/)
883-
@lex_state = after_operator? ? :expr_arg : :expr_beg
884-
885+
self.set_arg_state
885886
return :tCARET, scanner.matched
886887

887888
elsif check(/\</)
@@ -915,27 +916,27 @@ def yylex
915916

916917
return :tCMP, '<=>'
917918
elsif scan(/\<\=/)
918-
@lex_state = after_operator? ? :expr_arg : :expr_beg
919+
self.set_arg_state
919920
return :tLEQ, '<='
920921

921922
elsif scan(/\</)
922-
@lex_state = after_operator? ? :expr_arg : :expr_beg
923+
self.set_arg_state
923924
return :tLT, '<'
924925
end
925926

926927
elsif check(/\>/)
927928
if scan(/\>\>\=/)
928929
return :tOP_ASGN, '>>'
929930
elsif scan(/\>\>/)
930-
@lex_state = after_operator? ? :expr_arg : :expr_beg
931+
self.set_arg_state
931932
return :tRSHFT, '>>'
932933

933934
elsif scan(/\>\=/)
934-
@lex_state = after_operator? ? :expr_arg : :expr_beg
935+
self.set_arg_state
935936
return :tGEQ, scanner.matched
936937

937938
elsif scan(/\>/)
938-
@lex_state = after_operator? ? :expr_arg : :expr_beg
939+
self.set_arg_state
939940
return :tGT, '>'
940941
end
941942

@@ -990,7 +991,7 @@ def yylex
990991
return :tEH, scanner.matched
991992

992993
elsif scan(/\~/)
993-
@lex_state = after_operator? ? :expr_arg : :expr_beg
994+
self.set_arg_state
994995
return :tTILDE, '~'
995996

996997
elsif check(/\$/)

0 commit comments

Comments
 (0)
Please sign in to comment.