nscript 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +35 -0
- data/LICENSE.txt +21 -0
- data/README.md +43 -0
- data/Rakefile +6 -0
- data/bin/nscript +5 -0
- data/examples/code.ns +173 -0
- data/examples/helloworld.ns +6 -0
- data/lib/nscript/command_line.rb +235 -0
- data/lib/nscript/lexer/lexer.rb +230 -0
- data/lib/nscript/lexer/rewriter.rb +238 -0
- data/lib/nscript/parser/grammar.y +483 -0
- data/lib/nscript/parser/nodes.rb +932 -0
- data/lib/nscript/parser/parse_error.rb +22 -0
- data/lib/nscript/parser/parser.rb +2662 -0
- data/lib/nscript/scope.rb +74 -0
- data/lib/nscript/value.rb +62 -0
- data/lib/nscript/version.rb +3 -0
- data/lib/nscript.rb +15 -0
- data/nscript.gemspec +30 -0
- metadata +115 -0
@@ -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
|