1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
module Lox
class Error < StandardError
attr_reader :token, :message
def initialize(token, message)
@token, @message = token, message
end
end
class ParseError < Error
def initialize(token, message)
where = token.type == :EOF ? "end" : "'#{token.lexeme}'"
error = "Error"
error << " at #{where}" unless where.empty?
super(token, "[line #{token.line}] #{error}: #{message}")
end
end
RuntimeError = Class.new(Error)
ResolverError = Class.new(Error)
end