Skip to content

Commit

Permalink
Showing 1 changed file with 17 additions and 24 deletions.
41 changes: 17 additions & 24 deletions lib/opal/parser/lexer.rb
Original file line number Diff line number Diff line change
@@ -129,6 +129,11 @@ def new_strterm2(type, start, finish)
term.merge({ :balance => true, :nesting => 0 })
end

def new_op_asgn(value)
self.yylval = value
:tOP_ASGN
end

def process_numeric
@lex_state = :expr_end
scanner = @scanner
@@ -568,15 +573,13 @@ def yylex
elsif check(/\*/)
if scan(/\*\*\=/)
@lex_state = :expr_beg
self.yylval = '**'
return :tOP_ASGN
return new_op_asgn('**')
elsif scan(/\*\*/)
self.set_arg_state
return :tPOW
elsif scan(/\*\=/)
@lex_state = :expr_beg
self.yylval = '*'
return :tOP_ASGN
return new_op_asgn('*')
else
scan(/\*/)

@@ -676,16 +679,14 @@ def yylex
@lex_state = :expr_beg

if scan(/\=/)
self.yylval = '&&'
return :tOP_ASGN
return new_op_asgn('&&')
end

return :tANDOP

elsif scan(/\=/)
@lex_state = :expr_beg
self.yylval = '&'
return :tOP_ASGN
return new_op_asgn('&')
end

if spcarg?
@@ -705,15 +706,13 @@ def yylex
if scan(/\|/)
@lex_state = :expr_beg
if scan(/\=/)
self.yylval = '||'
return :tOP_ASGN
return new_op_asgn('||')
end

return :tOROP

elsif scan(/\=/)
self.yylval = '|'
return :tOP_ASGN
return new_op_asgn('|')
end

self.set_arg_state
@@ -759,8 +758,7 @@ def yylex
return :tREGEXP_BEG
elsif scan(/\=/)
@lex_state = :expr_beg
self.yylval = '/'
return :tOP_ASGN
return new_op_asgn('/')
elsif after_operator?
@lex_state = :expr_arg
elsif arg?
@@ -777,8 +775,7 @@ def yylex
elsif scan(/\%/)
if scan(/\=/)
@lex_state = :expr_beg
self.yylval = '%'
return :tOP_ASGN
return new_op_asgn('%')
elsif check(/[^\s]/)
if @lex_state == :expr_beg or (@lex_state == :expr_arg && @space_seen)
start_word = scan(/./)
@@ -905,8 +902,7 @@ def yylex

elsif scan(/\^\=/)
@lex_state = :expr_beg
self.yylval = '^'
return :tOP_ASGN
return new_op_asgn('^')

elsif scan(/\^/)
self.set_arg_state
@@ -915,8 +911,7 @@ def yylex
elsif check(/\</)
if scan(/\<\<\=/)
@lex_state = :expr_beg
self.yylval = '<<'
return :tOP_ASGN
return new_op_asgn('<<')

elsif scan(/\<\</)
if after_operator?
@@ -955,8 +950,7 @@ def yylex

elsif check(/\>/)
if scan(/\>\>\=/)
self.yylval = '>>'
return :tOP_ASGN
return new_op_asgn('>>')

elsif scan(/\>\>/)
self.set_arg_state
@@ -1002,8 +996,7 @@ def yylex

if scan(/\=/)
@lex_state = :expr_beg
self.yylval = matched
return :tOP_ASGN
return new_op_asgn(matched)
end

if spcarg?

0 comments on commit c32f134

Please sign in to comment.