antlr4 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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