nscript 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,22 @@
1
+ module NScript
2
+ class ParseError < Racc::ParseError
3
+ TOKEN_MAP = {
4
+ 'INDENT' => 'indent',
5
+ 'OUTDENT' => 'outdent',
6
+ "\n" => 'newline'
7
+ }
8
+
9
+ def initialize(token_id, value, stack=nil, message=nil)
10
+ @token_id, @value, @stack, @message = token_id, value, stack, message
11
+ end
12
+
13
+ def message
14
+ line = @value.respond_to?(:line) ? @value.line : "END"
15
+ line_part = "line #{line}:"
16
+ id_part = @token_id != @value.to_s ? " unexpected #{@token_id.to_s.downcase}" : ""
17
+ val_part = @message || "for #{TOKEN_MAP[@value.to_s] || "'#{@value}'"}"
18
+ "#{line_part} syntax error, #{val_part}#{id_part}"
19
+ end
20
+ alias_method :inspect, :message
21
+ end
22
+ end