Dylan Baker 6 anni fa
parent
commit
79c398f4b9
2 ha cambiato i file con 11 aggiunte e 3 eliminazioni
  1. 6
    2
      lib/chervil/lexer.rb
  2. 5
    1
      spec/lexer_spec.rb

+ 6
- 2
lib/chervil/lexer.rb Vedi File

@@ -21,13 +21,17 @@ module Chervil
21 21
       when ')'
22 22
         advance
23 23
         Token.new(:rparen, ")")
24
+      when nil
25
+        Token.new(:eof, "eof")
24 26
       end
25 27
     end
26 28
 
27 29
     def tokenize
28 30
       tokens = Array.new
29
-      until @position == @source.size
30
-        tokens << get_next_token
31
+      loop do
32
+        token = get_next_token
33
+        tokens << token
34
+        break if token.type == :eof
31 35
       end
32 36
       tokens
33 37
     end

+ 5
- 1
spec/lexer_spec.rb Vedi File

@@ -2,7 +2,11 @@ module Chervil
2 2
   RSpec.describe Lexer do
3 3
     it 'lexes parens' do
4 4
       expect(Lexer.new('()').tokenize).to eq(
5
-        [Token.new(:lparen, '('), Token.new(:rparen, ')')]
5
+        [
6
+          Token.new(:lparen, '('),
7
+          Token.new(:rparen, ')'),
8
+          Token.new(:eof, 'eof')
9
+        ]
6 10
       )
7 11
     end
8 12
   end

Loading…
Annulla
Salva