Skip to content

Commit

Permalink
Add set_arg_state method to lexer to set after operator state
Browse files Browse the repository at this point in the history
  • Loading branch information
adambeynon committed Nov 21, 2013
1 parent bed157d commit 9d970cb
Showing 1 changed file with 17 additions and 16 deletions.
33 changes: 17 additions & 16 deletions lib/opal/parser/lexer.rb
Expand Up @@ -75,6 +75,10 @@ def space?
@scanner.check(/\s/)
end

def set_arg_state
@lex_state = after_operator? ? :expr_arg : :expr_beg
end

def scan(regexp)
@scanner.scan regexp
end
Expand Down Expand Up @@ -531,8 +535,7 @@ def yylex
return :tOP_ASGN, '**'
end

@lex_state = after_operator? ? :expr_arg : :expr_beg

self.set_arg_state
return :tPOW, '**'

else
Expand All @@ -548,8 +551,7 @@ def yylex
end

if scan(/\*/)
@lex_state = after_operator? ? :expr_arg : :expr_beg

self.set_arg_state
return :tPOW, '**'
end

Expand Down Expand Up @@ -620,7 +622,7 @@ def yylex
end
end

@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state

if scan(/\=/)
if scan(/\=/)
Expand Down Expand Up @@ -675,7 +677,7 @@ def yylex
result = :tAMPER2
end

@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return result, '&'

elsif scan(/\|/)
Expand All @@ -691,7 +693,7 @@ def yylex
return :tOP_ASGN, '|'
end

@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tPIPE, '|'

elsif scan(/\%[QqWwixr]/)
Expand Down Expand Up @@ -761,7 +763,7 @@ def yylex
end
end

@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state

return :tPERCENT, '%'

Expand Down Expand Up @@ -880,8 +882,7 @@ def yylex
@lex_state = :expr_beg
return :tOP_ASGN, '^'
elsif scan(/\^/)
@lex_state = after_operator? ? :expr_arg : :expr_beg

self.set_arg_state
return :tCARET, scanner.matched

elsif check(/\</)
Expand Down Expand Up @@ -915,27 +916,27 @@ def yylex

return :tCMP, '<=>'
elsif scan(/\<\=/)
@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tLEQ, '<='

elsif scan(/\</)
@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tLT, '<'
end

elsif check(/\>/)
if scan(/\>\>\=/)
return :tOP_ASGN, '>>'
elsif scan(/\>\>/)
@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tRSHFT, '>>'

elsif scan(/\>\=/)
@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tGEQ, scanner.matched

elsif scan(/\>/)
@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tGT, '>'
end

Expand Down Expand Up @@ -990,7 +991,7 @@ def yylex
return :tEH, scanner.matched

elsif scan(/\~/)
@lex_state = after_operator? ? :expr_arg : :expr_beg
self.set_arg_state
return :tTILDE, '~'

elsif check(/\$/)
Expand Down

0 comments on commit 9d970cb

Please sign in to comment.