antlr4 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +27 -0
  3. data/README.md +46 -0
  4. data/lib/antlr4.rb +262 -0
  5. data/lib/antlr4/BufferedTokenStream.rb +306 -0
  6. data/lib/antlr4/CommonTokenFactory.rb +53 -0
  7. data/lib/antlr4/CommonTokenStream.rb +56 -0
  8. data/lib/antlr4/FileStream.rb +14 -0
  9. data/lib/antlr4/InputStream.rb +82 -0
  10. data/lib/antlr4/IntervalSet.rb +341 -0
  11. data/lib/antlr4/LL1Analyzer.rb +177 -0
  12. data/lib/antlr4/Lexer.rb +335 -0
  13. data/lib/antlr4/ListTokenSource.rb +140 -0
  14. data/lib/antlr4/Parser.rb +562 -0
  15. data/lib/antlr4/ParserInterpreter.rb +149 -0
  16. data/lib/antlr4/ParserRuleContext.rb +162 -0
  17. data/lib/antlr4/PredictionContext.rb +690 -0
  18. data/lib/antlr4/Recognizer.rb +162 -0
  19. data/lib/antlr4/RuleContext.rb +226 -0
  20. data/lib/antlr4/Token.rb +124 -0
  21. data/lib/antlr4/TokenFactory.rb +3 -0
  22. data/lib/antlr4/TokenSource.rb +4 -0
  23. data/lib/antlr4/TokenStream.rb +3 -0
  24. data/lib/antlr4/TraceListener.rb +23 -0
  25. data/lib/antlr4/atn/ATN.rb +133 -0
  26. data/lib/antlr4/atn/ATNConfig.rb +146 -0
  27. data/lib/antlr4/atn/ATNConfigSet.rb +215 -0
  28. data/lib/antlr4/atn/ATNDeserializationOptions.rb +62 -0
  29. data/lib/antlr4/atn/ATNDeserializer.rb +604 -0
  30. data/lib/antlr4/atn/ATNSimulator.rb +43 -0
  31. data/lib/antlr4/atn/ATNState.rb +253 -0
  32. data/lib/antlr4/atn/ATNType.rb +22 -0
  33. data/lib/antlr4/atn/LexerATNSimulator.rb +612 -0
  34. data/lib/antlr4/atn/LexerAction.rb +311 -0
  35. data/lib/antlr4/atn/LexerActionExecutor.rb +134 -0
  36. data/lib/antlr4/atn/ParserATNSimulator.rb +1622 -0
  37. data/lib/antlr4/atn/PredictionMode.rb +525 -0
  38. data/lib/antlr4/atn/SemanticContext.rb +355 -0
  39. data/lib/antlr4/atn/Transition.rb +297 -0
  40. data/lib/antlr4/base.rb +60 -0
  41. data/lib/antlr4/dfa/DFA.rb +128 -0
  42. data/lib/antlr4/dfa/DFASerializer.rb +77 -0
  43. data/lib/antlr4/dfa/DFAState.rb +133 -0
  44. data/lib/antlr4/error.rb +151 -0
  45. data/lib/antlr4/error/DiagnosticErrorListener.rb +136 -0
  46. data/lib/antlr4/error/ErrorListener.rb +109 -0
  47. data/lib/antlr4/error/ErrorStrategy.rb +742 -0
  48. data/lib/antlr4/tree/Chunk.rb +31 -0
  49. data/lib/antlr4/tree/ParseTreeMatch.rb +105 -0
  50. data/lib/antlr4/tree/ParseTreePattern.rb +70 -0
  51. data/lib/antlr4/tree/ParseTreePatternMatcher.rb +334 -0
  52. data/lib/antlr4/tree/RuleTagToken.rb +39 -0
  53. data/lib/antlr4/tree/TokenTagToken.rb +38 -0
  54. data/lib/antlr4/tree/Tree.rb +204 -0
  55. data/lib/antlr4/tree/Trees.rb +111 -0
  56. data/lib/antlr4/version.rb +5 -0
  57. data/lib/antlr4/xpath/XPath.rb +354 -0
  58. data/lib/double_key_map.rb +78 -0
  59. data/lib/java_symbols.rb +24 -0
  60. data/lib/uuid.rb +87 -0
  61. data/test/test_intervalset.rb +664 -0
  62. data/test/test_tree.rb +140 -0
  63. data/test/test_uuid.rb +122 -0
  64. metadata +109 -0
@@ -0,0 +1,140 @@
1
+
2
+ require 'test/unit'
3
+
4
+ $: << 'lib'
5
+ require 'antlr4'
6
+ require 'tree/Tree'
7
+ require 'Token'
8
+
9
+ require 'ostruct'
10
+
11
+ class SampleNodeImpl
12
+ include NodeImpl
13
+ end
14
+
15
+ class TreeTest < Test::Unit::TestCase
16
+
17
+ def setup()
18
+ end
19
+ def teardown
20
+ end
21
+
22
+ def test_create
23
+ [Tree, SyntaxTree, ParseTree, RuleNode,
24
+ TerminalNode, ErrorNode,
25
+ ParseTreeListener, ParseTreeVisitor].each { |cls|
26
+ assert_not_nil cls.new
27
+ assert cls.new.kind_of? cls
28
+ }
29
+ end
30
+
31
+ def test_terminal_node
32
+ assert_not_nil TerminalNode.new
33
+ end
34
+ def test_error_node
35
+ assert_not_nil ErrorNode.new
36
+ end
37
+
38
+ def test_listener
39
+ t = ParseTreeListener.new
40
+ m = t.methods - Object.new.methods
41
+ assert m.length == 4
42
+ assert_nil t.visitTerminal(nil)
43
+ assert_nil t.visitErrorNode(nil)
44
+ assert_nil t.enterEveryRule(nil)
45
+ assert_nil t.exitEveryRule(nil)
46
+ end
47
+
48
+
49
+ def test_node_impl
50
+ n = SampleNodeImpl.new(:symbol)
51
+ n = node_impl_verify(SampleNodeImpl)
52
+ assert n.kind_of?(NodeImpl), "not kind_of NodeImpl"
53
+ end
54
+
55
+ def node_impl_verify(klass)
56
+ n = klass.new(:symbol)
57
+ assert_not_nil n ,"initialize fails"
58
+ assert_nil n.parentCtx , "init value1 fails"
59
+ assert_not_nil n.symbol , "init value2 fails"
60
+ assert :symbol == n.symbol , "Symbol is not set"
61
+
62
+
63
+ assert :symbol == n.getSymbol(), "getSymbol does not work"
64
+ assert :symbol == n.getPayload(), "getSymbol does not work"
65
+ assert n.symbol = :new_symbol, "symbol= does not exist"
66
+ assert :new_symbol == n.symbol, "symbol= does not work"
67
+
68
+ assert n.parentCtx = :new_symbol, "parentCtx= does not exist"
69
+ assert :new_symbol == n.parentCtx, "parentCtx= does not work"
70
+ assert n.parentCtx == n.getParent, "getParent does not work"
71
+
72
+ assert_nil n.getChild(nil), "getChild() does not work"
73
+ assert n.getChildCount() == 0 , "getChildCount does not work"
74
+ n
75
+ end
76
+ def test_node_impl_with_token
77
+ token = CommonToken.new([nil,TokenStream.new])
78
+ token.text = "text"
79
+ assert_not_nil token , "CommonToken failed to init"
80
+ n = SampleNodeImpl.new(token)
81
+ assert_not_nil n, "failed to create samplenodeimpl with token"
82
+ assert_not_nil n.getSourceInterval() , "getSourceInterval failed"
83
+ assert_not_nil n.getText() , "getText failed"
84
+ assert_not_nil n.to_s , "to_s failed"
85
+ assert n.to_s == "text" , "to_s value failed"
86
+ end
87
+ def test_node_impl_symbol
88
+ tok = OpenStruct.new(:type=> 100, :text => "text")
89
+ n = SampleNodeImpl.new(tok)
90
+ assert n
91
+ assert n.to_s == "text"
92
+ assert n.getText == "text"
93
+ tok = OpenStruct.new(:type=> Token::EOF, :text => "text")
94
+ n = SampleNodeImpl.new(tok)
95
+ assert n
96
+ assert n.to_s == "<EOF>"
97
+ assert n.getText == "text"
98
+ end
99
+ def test_node_impl_nil_symbol
100
+ n = SampleNodeImpl.new(nil)
101
+ assert n
102
+ assert_nil n.symbol , "symbol is not nil"
103
+ assert n.getSourceInterval() , "getSourceInterval failed"
104
+ assert n.getSourceInterval() == Antlr4::INVALID_INTERVAL , "getSourceInterval failed"
105
+ end
106
+ # def getText()
107
+ # return self.symbol.text
108
+ # end
109
+ #
110
+ # def to_s
111
+ ## if self.symbol.type == Token.EOF then
112
+ # "<EOF>"
113
+ # else
114
+ # self.symbol.text
115
+ # end
116
+ # end
117
+ # end
118
+ class SampleParseTreeVisitor < ParseTreeVisitor
119
+ def visitTerminal(a)
120
+ true
121
+ end
122
+ end
123
+ def test_node_impl_accept
124
+ n = SampleNodeImpl.new(:symbol)
125
+ assert_not_nil n , "init failed to create NodeImpl"
126
+ assert n.accept(SampleParseTreeVisitor.new) , "NodeImpl::accept() fail"
127
+ end
128
+ def test_terminal_node_impl
129
+ t = node_impl_verify(TerminalNodeImpl)
130
+ assert t.kind_of?(TerminalNode), "Not a kind_of? TerminalNode"
131
+ end
132
+ def test_error_node_impl
133
+ n = node_impl_verify(ErrorNodeImpl)
134
+ assert n.kind_of?(TerminalNode), "Not a kind_of? TerminalNode"
135
+ assert n.kind_of?(ErrorNode), "Not a kind_of? ErrorNode"
136
+ assert_nil n.accept(ParseTreeVisitor.new), "accept(ParseTreeVisitor)"
137
+ end
138
+ #
139
+
140
+ end
@@ -0,0 +1,122 @@
1
+
2
+ require 'test/unit'
3
+
4
+ $: << 'lib'
5
+ require 'uuid'
6
+
7
+ class UuidTest < Test::Unit::TestCase
8
+
9
+ def setup()
10
+ @start = "AADB8D7E-AEEF-4415-AD2B-8204D6CF042E"
11
+ end
12
+ def teardown
13
+ end
14
+
15
+ def test_create
16
+ # BASE_SERIALIZED_UUID = UUID("AADB8D7E-AEEF-4415-AD2B-8204D6CF042E")
17
+ # Three inputs
18
+ # a UUID 'string' of hexdigits and - {}
19
+ # a URN prefixed UUID string
20
+ # a IO input of bytes as a string
21
+ # an array of bytes/numbers
22
+ # a single int
23
+ # assert titles.length > 0, 'Titles exist'
24
+ # assert titles.class == Array , 'Titles Array'
25
+ assert true
26
+ #start = "AADB8D7E-AEEF-4415-AD2B-8204D6CF042E"
27
+ #u = UUID.new(start)
28
+
29
+ end
30
+ def test_basic_create
31
+ u = UUID.new( @start )
32
+ assert u
33
+ assert u.class == UUID
34
+ uuid = UUID.new( "{#{@start}}" )
35
+ assert uuid
36
+ assert uuid.class == UUID
37
+ urn_uuid = UUID.new("urn:" + @start )
38
+ assert urn_uuid
39
+ assert u.class == UUID
40
+ assert u == urn_uuid
41
+ assert urn_uuid == uuid
42
+ assert u == uuid
43
+ end
44
+ def test_string
45
+ u = UUID.new( @start )
46
+ assert u
47
+ assert @start.downcase == u.to_s.downcase
48
+ assert @start.upcase == u.to_s.upcase
49
+ end
50
+ def test_int_value
51
+ start_value = 5233100606242806050955395731361295
52
+ start_uuid = "00010203-0405-0607-0809-0a0b0c0d0e0f"
53
+ u1 = UUID.new(start_value)
54
+ assert u1
55
+ assert u1.to_i == start_value
56
+ assert u1.to_s == start_uuid
57
+ end
58
+
59
+ def test_create_from_byte_array
60
+ ba = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
61
+ #).pack("C*").chars.reduce(0) {|a,b| ((a << 8)| b.ord) }
62
+ ba_int = 5233100606242806050955395731361295
63
+ bs = "\x00\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0E\x0F"
64
+ u1 = UUID.create_from_bytes(ba)
65
+ assert u1
66
+ u2 = UUID.new(ba_int)
67
+ assert u2
68
+ assert u1 == u2 , "Equality test"
69
+ assert u1.bytes_array == u2.bytes_array, "Compare created bytes_array"
70
+ end
71
+
72
+ def test_bytes_array
73
+ ba_uuid = '00010203-0405-0607-0809-0a0b0c0d0e0f'
74
+ ba = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
75
+ ba_int = 5233100606242806050955395731361295
76
+ u = UUID.new(ba_int)
77
+ assert u
78
+ assert u.bytes_array == ba
79
+ assert u.to_s == ba_uuid
80
+ end
81
+ def test_bytes
82
+ ba_int = 5233100606242806050955395731361295
83
+ bs = "\x00\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0E\x0F"
84
+ u = UUID.create_from_bytes(ba_int)
85
+ assert u
86
+ assert u.bytes.unpack("H*") == bs.unpack("H*"), "Compare bytes to std byte string "
87
+ u2 = UUID.create_from_bytes(bs)
88
+ assert u2
89
+ assert u2.bytes == u.bytes
90
+
91
+ end
92
+ def test_eql
93
+ u1 = UUID.new(@start)
94
+ u2 = UUID.new("{#{@start}}")
95
+ assert u1.eql? u2
96
+ end
97
+ def test_io
98
+ require 'tempfile'
99
+ x = UUID.new('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
100
+ assert x
101
+ tmpfile = Tempfile.new('test-uuid')
102
+ tmpfile.write(x.bytes)
103
+ tmpfile.rewind
104
+ bytes = tmpfile.read
105
+ v = UUID.create_from_bytes(bytes)
106
+ assert v
107
+ assert x == v
108
+ tmpfile.close!
109
+ end
110
+ end
111
+
112
+ __END__
113
+ # byte_string = ().pack("C*").split('').reduce(0) {|a,b| a << 4| b.ord }
114
+ #([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).pack("C*").split('').reduce(0) {|a,b| a << 4| b.ord }
115
+
116
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2\37\u023a" \
117
+ "\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4" \
118
+ "\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4" \
119
+
120
+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2\37\u023a\b\1\4\2"
121
+ "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"
122
+ "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: antlr4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.2
5
+ platform: ruby
6
+ authors:
7
+ - Chad Slaughter
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: "Ruby implementation of the Antlr4 runtime.\nThis is needed by any parser/lexer
14
+ written in Antlr4 using the target \nlangague=Ruby. "
15
+ email:
16
+ - chad.slaughter+antlr4@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - LICENSE
22
+ - README.md
23
+ - lib/antlr4.rb
24
+ - lib/antlr4/BufferedTokenStream.rb
25
+ - lib/antlr4/CommonTokenFactory.rb
26
+ - lib/antlr4/CommonTokenStream.rb
27
+ - lib/antlr4/FileStream.rb
28
+ - lib/antlr4/InputStream.rb
29
+ - lib/antlr4/IntervalSet.rb
30
+ - lib/antlr4/LL1Analyzer.rb
31
+ - lib/antlr4/Lexer.rb
32
+ - lib/antlr4/ListTokenSource.rb
33
+ - lib/antlr4/Parser.rb
34
+ - lib/antlr4/ParserInterpreter.rb
35
+ - lib/antlr4/ParserRuleContext.rb
36
+ - lib/antlr4/PredictionContext.rb
37
+ - lib/antlr4/Recognizer.rb
38
+ - lib/antlr4/RuleContext.rb
39
+ - lib/antlr4/Token.rb
40
+ - lib/antlr4/TokenFactory.rb
41
+ - lib/antlr4/TokenSource.rb
42
+ - lib/antlr4/TokenStream.rb
43
+ - lib/antlr4/TraceListener.rb
44
+ - lib/antlr4/atn/ATN.rb
45
+ - lib/antlr4/atn/ATNConfig.rb
46
+ - lib/antlr4/atn/ATNConfigSet.rb
47
+ - lib/antlr4/atn/ATNDeserializationOptions.rb
48
+ - lib/antlr4/atn/ATNDeserializer.rb
49
+ - lib/antlr4/atn/ATNSimulator.rb
50
+ - lib/antlr4/atn/ATNState.rb
51
+ - lib/antlr4/atn/ATNType.rb
52
+ - lib/antlr4/atn/LexerATNSimulator.rb
53
+ - lib/antlr4/atn/LexerAction.rb
54
+ - lib/antlr4/atn/LexerActionExecutor.rb
55
+ - lib/antlr4/atn/ParserATNSimulator.rb
56
+ - lib/antlr4/atn/PredictionMode.rb
57
+ - lib/antlr4/atn/SemanticContext.rb
58
+ - lib/antlr4/atn/Transition.rb
59
+ - lib/antlr4/base.rb
60
+ - lib/antlr4/dfa/DFA.rb
61
+ - lib/antlr4/dfa/DFASerializer.rb
62
+ - lib/antlr4/dfa/DFAState.rb
63
+ - lib/antlr4/error.rb
64
+ - lib/antlr4/error/DiagnosticErrorListener.rb
65
+ - lib/antlr4/error/ErrorListener.rb
66
+ - lib/antlr4/error/ErrorStrategy.rb
67
+ - lib/antlr4/tree/Chunk.rb
68
+ - lib/antlr4/tree/ParseTreeMatch.rb
69
+ - lib/antlr4/tree/ParseTreePattern.rb
70
+ - lib/antlr4/tree/ParseTreePatternMatcher.rb
71
+ - lib/antlr4/tree/RuleTagToken.rb
72
+ - lib/antlr4/tree/TokenTagToken.rb
73
+ - lib/antlr4/tree/Tree.rb
74
+ - lib/antlr4/tree/Trees.rb
75
+ - lib/antlr4/version.rb
76
+ - lib/antlr4/xpath/XPath.rb
77
+ - lib/double_key_map.rb
78
+ - lib/java_symbols.rb
79
+ - lib/uuid.rb
80
+ - test/test_intervalset.rb
81
+ - test/test_tree.rb
82
+ - test/test_uuid.rb
83
+ homepage: https://github.com/slaught/antlr4-ruby
84
+ licenses: []
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.4.5
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: Ruby implementation of the Antlr4 runtime
106
+ test_files:
107
+ - test/test_intervalset.rb
108
+ - test/test_tree.rb
109
+ - test/test_uuid.rb