Просмотр исходного кода

Raise error for unterminated string literal

master
Dylan Baker 5 лет назад
Родитель
Сommit
8e9d5cfb1d
2 измененных файлов: 7 добавлений и 2 удалений
  1. 2
    2
      lib/chervil/lexer.rb
  2. 5
    0
      spec/lexer_spec.rb

+ 2
- 2
lib/chervil/lexer.rb Просмотреть файл

42
         delimiter = current_char
42
         delimiter = current_char
43
         advance
43
         advance
44
         string = String.new
44
         string = String.new
45
-        until current_char == delimiter
45
+        until current_char == delimiter || current_char.nil?
46
           string << current_char
46
           string << current_char
47
           advance
47
           advance
48
         end
48
         end
49
 
49
 
50
         if current_char.nil?
50
         if current_char.nil?
51
-          raise "Unterminated string"
51
+          return Error.new("Unterminated string")
52
         end
52
         end
53
 
53
 
54
         advance
54
         advance

+ 5
- 0
spec/lexer_spec.rb Просмотреть файл

49
       expect(lexer.get_next_token).to eq(Token.new(:boolean, true))
49
       expect(lexer.get_next_token).to eq(Token.new(:boolean, true))
50
       expect(lexer.get_next_token).to eq(Token.new(:boolean, false))
50
       expect(lexer.get_next_token).to eq(Token.new(:boolean, false))
51
     end
51
     end
52
+
53
+    it 'returns an error given an unterminated string' do
54
+      lexer = Lexer.new('"hello world')
55
+      expect(lexer.get_next_token).to eq(Error.new("Unterminated string"))
56
+    end
52
   end
57
   end
53
 end
58
 end

Загрузка…
Отмена
Сохранить