Skip to content

Commit 1e0955f

Browse files
committedJul 31, 2013
Refactor ===, ==, =~ and = parsing in lexer.rb
1 parent 6b7866c commit 1e0955f

File tree

1 file changed

+23
-32
lines changed

1 file changed

+23
-32
lines changed
 

Diff for: ‎lib/opal/lexer.rb

+23-32
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,29 @@ def next_token
397397
scanner.pos = scanner.pos - 1
398398
return '!', '!'
399399

400+
elsif scanner.scan(/\=/)
401+
@lex_state = if after_operator?
402+
:expr_arg
403+
else
404+
:expr_beg
405+
end
406+
407+
if scanner.scan(/\=/)
408+
if scanner.scan(/\=/)
409+
return '===', '==='
410+
end
411+
412+
return '==', '=='
413+
end
414+
415+
if scanner.scan(/\~/)
416+
return '=~', '=~'
417+
elsif scanner.scan(/\>/)
418+
return '=>', '=>'
419+
end
420+
421+
return '=', '='
422+
400423
elsif scanner.scan(/\"/)
401424
@string_parse = { :beg => '"', :end => '"', :interpolate => true }
402425
return :STRING_BEG, scanner.matched
@@ -766,38 +789,6 @@ def next_token
766789
@lex_state = :expr_beg
767790
return '?', scanner.matched
768791

769-
elsif scanner.scan(/\=\=\=/)
770-
if @lex_state == :expr_fname
771-
@lex_state = :expr_end
772-
return '===', '==='
773-
end
774-
@lex_state = :expr_beg
775-
return '===', '==='
776-
777-
elsif scanner.scan(/\=\=/)
778-
if @lex_state == :expr_fname
779-
@lex_state = :expr_end
780-
return '==', '=='
781-
end
782-
@lex_state = :expr_beg
783-
return '==', '=='
784-
785-
elsif scanner.scan(/\=\~/)
786-
if @lex_state == :expr_fname
787-
@lex_state = :expr_end
788-
return '=~', '=~'
789-
end
790-
@lex_state = :expr_beg
791-
return '=~', '=~'
792-
793-
elsif scanner.scan(/\=\>/)
794-
@lex_state = :expr_beg
795-
return '=>', '=>'
796-
797-
elsif scanner.scan(/\=/)
798-
@lex_state = :expr_beg
799-
return '=', '='
800-
801792
elsif scanner.scan(/\~/)
802793
if @lex_state == :expr_fname
803794
@lex_state = :expr_end

0 commit comments

Comments
 (0)
Please sign in to comment.