antlr4-runtime 0.2.3 → 0.2.4

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +4 -0
  4. data/ext/rumourhash/rumourhash.c +56 -12
  5. data/lib/antlr4/runtime.rb +0 -1
  6. data/lib/antlr4/runtime/array_2d_hash_set.rb +1 -1
  7. data/lib/antlr4/runtime/atn_config.rb +2 -2
  8. data/lib/antlr4/runtime/bit_set.rb +13 -6
  9. data/lib/antlr4/runtime/buffered_token_stream.rb +6 -3
  10. data/lib/antlr4/runtime/char_streams.rb +1 -1
  11. data/lib/antlr4/runtime/common_token.rb +4 -4
  12. data/lib/antlr4/runtime/default_error_strategy.rb +1 -1
  13. data/lib/antlr4/runtime/dfa_state.rb +2 -1
  14. data/lib/antlr4/runtime/flexible_hash_map.rb +3 -3
  15. data/lib/antlr4/runtime/interval_set.rb +5 -9
  16. data/lib/antlr4/runtime/lexer.rb +9 -1
  17. data/lib/antlr4/runtime/lexer_action_executor.rb +1 -1
  18. data/lib/antlr4/runtime/lexer_atn_simulator.rb +9 -8
  19. data/lib/antlr4/runtime/lexer_channel_action.rb +2 -2
  20. data/lib/antlr4/runtime/lexer_custom_action.rb +2 -1
  21. data/lib/antlr4/runtime/lexer_indexed_custom_action.rb +2 -2
  22. data/lib/antlr4/runtime/lexer_mode_action.rb +2 -2
  23. data/lib/antlr4/runtime/lexer_more_action.rb +2 -2
  24. data/lib/antlr4/runtime/lexer_pop_mode_action.rb +2 -2
  25. data/lib/antlr4/runtime/lexer_push_mode_action.rb +2 -2
  26. data/lib/antlr4/runtime/lexer_skip_action.rb +1 -1
  27. data/lib/antlr4/runtime/lexer_type_action.rb +2 -2
  28. data/lib/antlr4/runtime/ll1_analyzer.rb +4 -2
  29. data/lib/antlr4/runtime/parser.rb +2 -2
  30. data/lib/antlr4/runtime/parser_rule_context.rb +1 -1
  31. data/lib/antlr4/runtime/prediction_context.rb +1 -1
  32. data/lib/antlr4/runtime/prediction_context_utils.rb +3 -3
  33. data/lib/antlr4/runtime/prediction_mode.rb +1 -1
  34. data/lib/antlr4/runtime/semantic_context.rb +4 -4
  35. data/lib/antlr4/runtime/triple.rb +2 -2
  36. data/lib/antlr4/runtime/version.rb +1 -1
  37. metadata +2 -4
  38. data/ext/rumourhash/Makefile +0 -264
  39. data/lib/antlr4/runtime/murmur_hash.rb +0 -99
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f5f838157511ca399f3345a7ef863d975bfa314b384a9857988d1ba12b25dec7
4
- data.tar.gz: 8a3cb7143cc24821b294a8b4b7057173cb7217c7b1fb5a522240152df3bdc7c5
3
+ metadata.gz: 0ec888a28668505439b0e3e2f068cd6318373095dee14c9ce0d7efc977abb159
4
+ data.tar.gz: 828c1614048ee0b76c8ad1814ea8e373757071bf36bed66d66286272330d88dd
5
5
  SHA512:
6
- metadata.gz: bbb44e41cc7bea850e64cd865875f27b638893288b95aa42d632b992a15252b7b361697626fa8198491e7d3b38f32a808b2f4940e7a3aa3f9167151da52e6c46
7
- data.tar.gz: e466a2d9d751c2d394d27f8b23d501d90c9f2608a46d8d017f25e4e6643566bc10741082c7ed0799322e6a3f4c80f653d0cb9c5644e67419423304950ba26db3
6
+ metadata.gz: c7c4ea5af9d828124b7fa34e43db1593c44653ca4900660c8743d9cd7871cbff9d12cf10a982006c95db41a77cf4622326d74cccf839e6a99c717a5461be6747
7
+ data.tar.gz: b56c6dbf61b1ef856ffd72d80ebc38e1c7cde728519a9bc471861c533ba0e74d0c36a39a8d68c6978304c24c563e02f0445601afd26d753a9b97a299331ebe92
data/.gitignore CHANGED
@@ -12,6 +12,7 @@
12
12
  **/*.o
13
13
  Gemfile.lock
14
14
  .ruby-version
15
+ ext/rumourhash/Makefile
15
16
 
16
17
  # rspec failure tracking
17
18
  .rspec_status
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ 0.2.4
2
+ ===
3
+ - Performance improvements and bug fixes from Cameron Dutro.
4
+
1
5
  0.2.3
2
6
  ===
3
7
  - Fixed a problem displaying error messages when parsing fails.
@@ -6,11 +6,9 @@
6
6
  #define r2 13
7
7
  #define m 5
8
8
  #define n 0xE6546B64
9
+ #define defaultSeed 7
9
10
 
10
- static VALUE rumour_hash_update_int(VALUE self, VALUE hashv, VALUE valuev) {
11
- long hash = NUM2LONG(hashv);
12
- long value = NUM2LONG(valuev);
13
-
11
+ static long rumour_hash_update_int_impl(VALUE self, long hash, long value) {
14
12
  long k = value;
15
13
  k *= c1;
16
14
  k = (k << r1) | (k >> (32 - r1));
@@ -20,13 +18,17 @@ static VALUE rumour_hash_update_int(VALUE self, VALUE hashv, VALUE valuev) {
20
18
  hash = (hash << r2) | (hash >> (32 - r2));
21
19
  hash *= m + n;
22
20
 
23
- return LONG2NUM(hash);
21
+ return hash;
24
22
  }
25
23
 
26
- static VALUE rumour_hash_finish(VALUE self, VALUE hashv, VALUE n_wordsv) {
24
+ static VALUE rumour_hash_update_int(VALUE self, VALUE hashv, VALUE valuev) {
27
25
  long hash = NUM2LONG(hashv);
28
- long n_words = NUM2LONG(n_wordsv);
26
+ long value = NUM2LONG(valuev);
27
+ hash = rumour_hash_update_int_impl(self, hash, value);
28
+ return LONG2NUM(hash);
29
+ }
29
30
 
31
+ static long rumour_hash_finish_impl(VALUE self, long hash, long n_words) {
30
32
  hash = hash ^ (n_words * 4);
31
33
  hash = hash ^ (hash >> 16);
32
34
  hash *= 0x85EBCA6B;
@@ -34,10 +36,52 @@ static VALUE rumour_hash_finish(VALUE self, VALUE hashv, VALUE n_wordsv) {
34
36
  hash *= 0xC2B2AE35;
35
37
  hash ^= (hash >> 16);
36
38
 
39
+ return hash;
40
+ }
41
+
42
+ static VALUE rumour_hash_finish(VALUE self, VALUE hashv, VALUE n_wordsv) {
43
+ long hash = NUM2LONG(hashv);
44
+ long n_words = NUM2LONG(n_wordsv);
45
+ hash = rumour_hash_finish_impl(self, hash, n_words);
46
+ return LONG2NUM(hash);
47
+ }
48
+
49
+ static VALUE rumour_hash_calculate(int argc, VALUE* argv, VALUE self) {
50
+ VALUE itemsv;
51
+ VALUE seed;
52
+
53
+ rb_scan_args(argc, argv, "11", &itemsv, &seed);
54
+
55
+ long hash;
56
+
57
+ if (seed == Qnil) {
58
+ hash = defaultSeed;
59
+ } else {
60
+ hash = NUM2LONG(seed);
61
+ }
62
+
63
+ for (int i = 0; i < RARRAY_LEN(itemsv); i ++) {
64
+ VALUE current = RARRAY_AREF(itemsv, i);
65
+ long val;
66
+
67
+ if (current == Qnil || current == Qfalse) {
68
+ val = 0;
69
+ } else if (current == Qtrue) {
70
+ val = 1;
71
+ } else if (CLASS_OF(current) == rb_cInteger) {
72
+ val = NUM2LONG(current);
73
+ } else {
74
+ val = NUM2LONG(rb_hash(current));
75
+ }
76
+
77
+ hash = rumour_hash_update_int_impl(self, hash, val);
78
+ }
79
+
80
+ hash = rumour_hash_finish_impl(self, hash, RARRAY_LEN(itemsv));
37
81
  return LONG2NUM(hash);
38
82
  }
39
83
 
40
- static VALUE bit_count(VALUE self, VALUE v) {
84
+ static VALUE rumour_hash_bit_count(VALUE self, VALUE v) {
41
85
  long num = NUM2LONG(v);
42
86
  int count = 0;
43
87
 
@@ -52,8 +96,8 @@ static VALUE bit_count(VALUE self, VALUE v) {
52
96
 
53
97
  void Init_rumourhash() {
54
98
  VALUE mod = rb_define_module("RumourHash");
55
- rb_define_method(mod, "rumour_hash_update_int", rumour_hash_update_int, 2);
56
- rb_define_method(mod, "rumour_hash_finish", rumour_hash_finish, 2);
57
- rb_define_method(mod, "bit_count", bit_count, 1);
99
+ rb_define_singleton_method(mod, "calculate", rumour_hash_calculate, -1);
100
+ rb_define_singleton_method(mod, "update_int", rumour_hash_update_int, 2);
101
+ rb_define_singleton_method(mod, "finish", rumour_hash_finish, 2);
102
+ rb_define_singleton_method(mod, "bit_count", rumour_hash_bit_count, 1);
58
103
  }
59
-
@@ -85,7 +85,6 @@ module Antlr4
85
85
  autoload :LL1Analyzer, 'antlr4/runtime/ll1_analyzer'
86
86
  autoload :LookaheadEventInfo, 'antlr4/runtime/lookahead_event_info'
87
87
  autoload :LoopEndState, 'antlr4/runtime/loop_end_state'
88
- autoload :MurmurHash, 'antlr4/runtime/murmur_hash'
89
88
  autoload :NoViableAltException, 'antlr4/runtime/no_viable_alt_exception'
90
89
  autoload :NotSetTransition, 'antlr4/runtime/not_set_transition'
91
90
  autoload :ObjectEqualityComparator, 'antlr4/runtime/object_equality_comparator'
@@ -108,7 +108,7 @@ module Antlr4::Runtime
108
108
  i += 1
109
109
  end
110
110
 
111
- @_hash = MurmurHash.hash_objs(objs)
111
+ @_hash = RumourHash.calculate(objs)
112
112
  end
113
113
 
114
114
  def ==(o)
@@ -24,7 +24,7 @@ module Antlr4::Runtime
24
24
  puts 'Different hash_code for ATNConfig.bucket_hash'
25
25
  end
26
26
  end
27
- @_bucket_hash = MurmurHash.hash_int_int(@state.state_number, @alt)
27
+ @_bucket_hash = RumourHash.calculate([@state.state_number, @alt])
28
28
  end
29
29
 
30
30
  def atn_config_copy(old)
@@ -137,7 +137,7 @@ module Antlr4::Runtime
137
137
  def hash
138
138
  return @_hash unless @_hash.nil?
139
139
 
140
- hash_code = MurmurHash.hash_int_int_obj_obj(@state.state_number,@alt,@context,@semantic_context)
140
+ hash_code = RumourHash.calculate([@state.state_number, @alt, @context, @semantic_context])
141
141
 
142
142
  if !@_hash.nil?
143
143
  if hash_code == @_hash
@@ -1,7 +1,3 @@
1
- require 'rumourhash/rumourhash'
2
-
3
- include RumourHash
4
-
5
1
  module Antlr4::Runtime
6
2
 
7
3
  class BitSet
@@ -17,12 +13,23 @@ module Antlr4::Runtime
17
13
  @bits |= (1 << x)
18
14
  end
19
15
 
16
+ def clear(idx = nil)
17
+ # check for zero to avoid trying to take the log2 of it, which
18
+ # returns -Infinity
19
+ if !idx || bits == 0
20
+ @bits = 0
21
+ return
22
+ end
23
+
24
+ @bits &= 2**Math.log2(bits).ceil - 2**idx - 1
25
+ end
26
+
20
27
  def get(x)
21
28
  (@bits & (1 << x)) > 0 ? true : false
22
29
  end
23
30
 
24
31
  def cardinality
25
- bit_count(@bits)
32
+ RumourHash.bit_count(@bits)
26
33
  end
27
34
 
28
35
  def or(bit_set)
@@ -51,4 +58,4 @@ module Antlr4::Runtime
51
58
  buf
52
59
  end
53
60
  end
54
- end
61
+ end
@@ -1,3 +1,6 @@
1
+ require 'antlr4/runtime/writable_token'
2
+ require 'antlr4/runtime/token_stream'
3
+
1
4
  module Antlr4::Runtime
2
5
 
3
6
  class BufferedTokenStream < TokenStream
@@ -75,7 +78,7 @@ module Antlr4::Runtime
75
78
  i = 0
76
79
  while i < n
77
80
  t = @token_source.next_token
78
- t.index = @tokens.length if t.is_a? WritableToken
81
+ t.token_index = @tokens.length if t.is_a? WritableToken
79
82
  @tokens << t
80
83
  if t.type == Token::EOF
81
84
  @fetched_eof = true
@@ -303,7 +306,7 @@ module Antlr4::Runtime
303
306
  break if t.type == Token::EOF
304
307
 
305
308
  buf << t.text
306
- i += 1
309
+ buf << i += 1
307
310
  end
308
311
  buf
309
312
  end
@@ -329,4 +332,4 @@ module Antlr4::Runtime
329
332
  end
330
333
  end
331
334
  end
332
- end
335
+ end
@@ -4,7 +4,7 @@ module Antlr4::Runtime
4
4
  DEFAULT_BUFFER_SIZE = 4096
5
5
 
6
6
  def self.from_string(s, source_name)
7
- CodePointCharStream.new(0, s.length, source_name, s.bytes)
7
+ CodePointCharStream.new(0, s.length, source_name, s.codepoints)
8
8
  end
9
9
  end
10
10
  end
@@ -11,7 +11,7 @@ module Antlr4::Runtime
11
11
  attr_accessor :char_position_in_line
12
12
  attr_accessor :channel
13
13
  attr_accessor :source
14
- attr_accessor :index
14
+ attr_accessor :token_index
15
15
  attr_accessor :start
16
16
  attr_accessor :stop
17
17
  attr_accessor :_text
@@ -19,7 +19,7 @@ module Antlr4::Runtime
19
19
  def initialize(type = nil)
20
20
  @char_position_in_line = -1
21
21
  @channel = Token::DEFAULT_CHANNEL
22
- @index = -1
22
+ @token_index = -1
23
23
  @type = type
24
24
  @source = @@EMPTY_SOURCE
25
25
  @_text = nil
@@ -48,7 +48,7 @@ module Antlr4::Runtime
48
48
  result = CommonToken.new(old_token.type)
49
49
 
50
50
  result.line = old_token.line
51
- result.index = old_token.token_index
51
+ result.token_index = old_token.token_index
52
52
  result.char_position_in_line = old_token.char_position_in_line
53
53
  result.channel = old_token.channel
54
54
  result.start = old_token.start_index
@@ -122,4 +122,4 @@ module Antlr4::Runtime
122
122
  '[@' << token_index.to_s << ',' << @start.to_s << ':' << @stop.to_s << "='" << txt << "',<" << type_string << '>' << channel_str << ',' << @line.to_s << ':' << char_position_in_line.to_s << ']'
123
123
  end
124
124
  end
125
- end
125
+ end
@@ -53,7 +53,7 @@ module Antlr4::Runtime
53
53
  end
54
54
 
55
55
  def recover(recognizer, _e)
56
- if @last_error_index == recognizer._input.index && !@last_error_states.nil? && @last_error_states.include?(recognizer._state_number)
56
+ if @last_error_index == recognizer._input.index && !@last_error_states.nil? && @last_error_states.contains(recognizer._state_number)
57
57
  # uh oh, another error at same token index and previously-visited
58
58
  # state in ATN must be a case where lt(1) is in the recovery
59
59
  # token set so nothing got consumed. Consume a single token
@@ -70,7 +70,7 @@ module Antlr4::Runtime
70
70
  def hash
71
71
  return @_hash unless @_hash.nil?
72
72
 
73
- hash_code = MurmurHash.hash_int(configs.hash)
73
+ hash_code = RumourHash.calculate([configs.hash])
74
74
 
75
75
  if !@_hash.nil?
76
76
  if hash_code == @_hash
@@ -79,6 +79,7 @@ module Antlr4::Runtime
79
79
  puts 'Different hash_code for DFAState'
80
80
  end
81
81
  end
82
+
82
83
  @_hash = hash_code
83
84
  end
84
85
 
@@ -19,7 +19,7 @@ module Antlr4::Runtime
19
19
  end
20
20
 
21
21
  def initialize(comparator = nil, initial_capacity = nil, initial_bucket_capacity = nil)
22
- comparator = ObjectEqualityComparator.INSTANCE if comparator.nil?
22
+ comparator = ObjectEqualityComparator.instance if comparator.nil?
23
23
 
24
24
  initial_capacity = INITIAL_CAPACITY if initial_capacity.nil?
25
25
  initial_bucket_capacity = INITIAL_BUCKET_CAPACITY if initial_bucket_capacity.nil?
@@ -132,7 +132,7 @@ module Antlr4::Runtime
132
132
  i += 1
133
133
  end
134
134
 
135
- hash_code = MurmurHash.hash_objs(objs)
135
+ hash_code = RumourHash.calculate(objs)
136
136
 
137
137
  if !@_hash.nil?
138
138
  if hash_code == @_hash
@@ -229,4 +229,4 @@ module Antlr4::Runtime
229
229
  buf.to_s
230
230
  end
231
231
  end
232
- end
232
+ end
@@ -290,16 +290,12 @@ module Antlr4::Runtime
290
290
  end
291
291
 
292
292
  def hash
293
- ints = []
294
- i = 0
295
- while i < @intervals.length
296
- interval = @intervals[i]
297
- ints << interval.a
298
- ints << interval.b
299
- i += 1
293
+ ints = @intervals.each_with_object([]) do |interval, ret|
294
+ ret << interval.a
295
+ ret << interval.b
300
296
  end
301
297
 
302
- hash_code = MurmurHash.hash_ints(ints)
298
+ hash_code = RumourHash.calculate(ints)
303
299
 
304
300
  if !@_hash.nil?
305
301
  if hash_code == @_hash
@@ -499,4 +495,4 @@ module Antlr4::Runtime
499
495
  @@empty_set = IntervalSet.new
500
496
  @@empty_set.readonly(true)
501
497
  end
502
- end
498
+ end
@@ -55,9 +55,17 @@ module Antlr4::Runtime
55
55
  @_factory = CommonTokenFactory.instance
56
56
  end
57
57
 
58
+ def token_factory
59
+ @_factory
60
+ end
61
+
62
+ def token_factory=(factory)
63
+ @_factory = factory
64
+ end
65
+
58
66
  def next_token
59
67
  if @_input.nil?
60
- raise IllegalStateException, 'nextToken requires a non-nil input stream.'
68
+ raise IllegalStateException, 'next_token requires a non-nil input stream.'
61
69
  end
62
70
 
63
71
  # Mark start location in char stream so unbuffered streams are
@@ -6,7 +6,7 @@ module Antlr4::Runtime
6
6
 
7
7
  def initialize(lexer_actions)
8
8
  @lexer_actions = lexer_actions
9
- @hash_code = MurmurHash.hash_objs(lexer_actions)
9
+ @hash_code = RumourHash.calculate(lexer_actions)
10
10
  end
11
11
 
12
12
  def self.append(lexer_action_executor, lexer_action)
@@ -348,26 +348,27 @@ module Antlr4::Runtime
348
348
 
349
349
  def epsilon_target(input, config, t, configs, speculative, treat_eof_as_epsilon)
350
350
  c = nil
351
- case t.serialization_type
352
- when Transition::RULE
351
+ serialization_type = t.serialization_type
352
+
353
+ if serialization_type == Transition::RULE
353
354
  rule_transition = t
354
355
  new_context = SingletonPredictionContext.new(config.context, rule_transition.follow_state.state_number)
355
356
  c = LexerATNConfig.new
356
357
  c.lexer_atn_config5(config, t.target, new_context)
357
358
 
358
- when Transition::PRECEDENCE
359
+ elsif serialization_type == Transition::PRECEDENCE
359
360
 
360
361
  raise UnsupportedOperationException, 'Precedence predicates are not supported in lexers.'
361
362
 
362
- when Transition::PREDICATE
363
+ elsif serialization_type == Transition::PREDICATE
363
364
  pt = t
364
- puts('EVAL rule ' + pt.rule_index + ':' + pt.pred_index) if @@debug
365
+ # puts('EVAL rule ' + pt.rule_index + ':' + pt.pred_index) if @@debug
365
366
  configs.has_semantic_context = true
366
367
  if evaluate_predicate(input, pt.rule_index, pt.pred_index, speculative)
367
368
  c = LexerATNConfig.create_from_config(config, t.target)
368
369
  end
369
370
 
370
- when Transition::ACTION
371
+ elsif serialization_type == Transition::ACTION
371
372
 
372
373
  if config.context.nil? || config.context.empty_path?
373
374
  # execute actions anywhere in the start rule for a token.
@@ -390,10 +391,10 @@ module Antlr4::Runtime
390
391
  c.lexer_atn_config3(config, t.target)
391
392
  end
392
393
 
393
- when Transition::EPSILON
394
+ elsif serialization_type == Transition::EPSILON
394
395
  c = LexerATNConfig.new
395
396
  c.lexer_atn_config3(config, t.target)
396
- when Transition::ATOM, Transition::RANGE, Transition::SET
397
+ elsif serialization_type == Transition::ATOM || serialization_type == Transition::RANGE || serialization_type == Transition::SET
397
398
  if treat_eof_as_epsilon
398
399
  if t.matches(CharStream.EOF, Lexer.MIN_CHAR_VALUE, Lexer.MAX_CHAR_VALUE)
399
400
  c = LexerATNConfig.create_from_config(config, t.target)
@@ -22,7 +22,7 @@ module Antlr4::Runtime
22
22
  def hash
23
23
  return @_hash unless @_hash.nil?
24
24
 
25
- hash_code = MurmurHash.hash_int_int(action_type.ordinal, channel)
25
+ hash_code = RumourHash.calculate([action_type.ordinal, channel])
26
26
 
27
27
  if !@_hash.nil?
28
28
  if hash_code == @_hash
@@ -48,4 +48,4 @@ module Antlr4::Runtime
48
48
  'channel(' << @channel.to_s << ')'
49
49
  end
50
50
  end
51
- end
51
+ end
@@ -24,7 +24,7 @@ module Antlr4::Runtime
24
24
  def hash
25
25
  return @_hash unless @_hash.nil?
26
26
 
27
- hash_code = MurmurHash.hash_ints([action_type, rule_index, action_index])
27
+ hash_code = RumourHash.calculate([action_type, rule_index, action_index])
28
28
 
29
29
  if !@_hash.nil?
30
30
  if hash_code == @_hash
@@ -33,6 +33,7 @@ module Antlr4::Runtime
33
33
  puts 'Different hash_code for LexerCustomAction'
34
34
  end
35
35
  end
36
+
36
37
  @_hash = hash_code
37
38
  end
38
39
 
@@ -24,7 +24,7 @@ module Antlr4::Runtime
24
24
  def hash
25
25
  return @_hash unless @_hash.nil?
26
26
 
27
- hash_code = MurmurHash.hash_int_obj(offset, action)
27
+ hash_code = RumourHash.calculate([offset, action])
28
28
 
29
29
  if !@_hash.nil?
30
30
  if hash_code == @_hash
@@ -46,4 +46,4 @@ module Antlr4::Runtime
46
46
  @offset == other.offset && @action == other.action
47
47
  end
48
48
  end
49
- end
49
+ end
@@ -22,7 +22,7 @@ module Antlr4::Runtime
22
22
  def hash
23
23
  return @_hash unless @_hash.nil?
24
24
 
25
- hash_code = MurmurHash.hash_int_int(action_type, mode)
25
+ hash_code = RumourHash.calculate([action_type, mode])
26
26
 
27
27
  if !@_hash.nil?
28
28
  if hash_code == @_hash
@@ -48,4 +48,4 @@ module Antlr4::Runtime
48
48
  'mode(' << @mode << ')'
49
49
  end
50
50
  end
51
- end
51
+ end
@@ -18,7 +18,7 @@ module Antlr4::Runtime
18
18
  def hash
19
19
  return @_hash unless @_hash.nil?
20
20
 
21
- hash_code = MurmurHash.hash_int(action_type)
21
+ hash_code = RumourHash.calculate([action_type])
22
22
 
23
23
  if !@_hash.nil?
24
24
  if hash_code == @_hash
@@ -38,4 +38,4 @@ module Antlr4::Runtime
38
38
  'more'
39
39
  end
40
40
  end
41
- end
41
+ end
@@ -18,7 +18,7 @@ module Antlr4::Runtime
18
18
  def hash
19
19
  return @_hash unless @_hash.nil?
20
20
 
21
- hash_code = MurmurHash.hash_int(action_type)
21
+ hash_code = RumourHash.calculate([action_type])
22
22
 
23
23
  if !@_hash.nil?
24
24
  if hash_code == @_hash
@@ -38,4 +38,4 @@ module Antlr4::Runtime
38
38
  'popMode'
39
39
  end
40
40
  end
41
- end
41
+ end
@@ -22,7 +22,7 @@ module Antlr4::Runtime
22
22
  def hash
23
23
  return @_hash unless @_hash.nil?
24
24
 
25
- hash_code = MurmurHash.hash_int_int(action_type, mode)
25
+ hash_code = RumourHash.calculate([action_type, mode])
26
26
 
27
27
  if !@_hash.nil?
28
28
  if hash_code == @_hash
@@ -48,4 +48,4 @@ module Antlr4::Runtime
48
48
  'pushMode(' << @mode << ')'
49
49
  end
50
50
  end
51
- end
51
+ end
@@ -18,7 +18,7 @@ module Antlr4::Runtime
18
18
  def hash
19
19
  return @_hash unless @_hash.nil?
20
20
 
21
- hash_code = MurmurHash.hash_int(action_type)
21
+ hash_code = RumourHash.calculate([action_type])
22
22
 
23
23
  if !@_hash.nil?
24
24
  if hash_code == @_hash
@@ -22,7 +22,7 @@ module Antlr4::Runtime
22
22
  def hash
23
23
  return @_hash unless @_hash.nil?
24
24
 
25
- hash_code = MurmurHash.hash_int_int(action_type, @type)
25
+ hash_code = RumourHash.calculate([action_type, @type])
26
26
 
27
27
  if !@_hash.nil?
28
28
  if hash_code == @_hash
@@ -48,4 +48,4 @@ module Antlr4::Runtime
48
48
  'type(' << @type << ')'
49
49
  end
50
50
  end
51
- end
51
+ end
@@ -3,6 +3,8 @@ module Antlr4::Runtime
3
3
  class LL1Analyzer
4
4
  @@hit_pred = Token::INVALID_TYPE
5
5
 
6
+ attr_reader :atn
7
+
6
8
  def initialize(atn)
7
9
  @atn = atn
8
10
  end
@@ -29,7 +31,7 @@ module Antlr4::Runtime
29
31
  r = IntervalSet.new
30
32
  see_thru_preds = true # ignore preds get all lookahead
31
33
  look_context = !ctx.nil? ? PredictionContextUtils.from_rule_context(s.atn, ctx) : nil
32
- _look(s, stop_state, look_context, r, Set.new, Set.new, see_thru_preds, true)
34
+ _look(s, stop_state, look_context, r, Set.new, BitSet.new, see_thru_preds, true)
33
35
  r
34
36
  end
35
37
 
@@ -70,7 +72,7 @@ module Antlr4::Runtime
70
72
  calledRuleStack.clear(s.rule_index)
71
73
  i = 0
72
74
  while i < ctx.size
73
- return_state = atn.states.get(ctx.get_return_state(i))
75
+ return_state = atn.states[ctx.get_return_state(i)]
74
76
 
75
77
  _look(return_state, stopState, ctx.get_parent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF)
76
78
  i += 1
@@ -171,8 +171,8 @@ module Antlr4::Runtime
171
171
  @_input.token_source.token_factory
172
172
  end
173
173
 
174
- def set_token_factory(factory)
175
- @_input.token_source.set_token_factory(factory)
174
+ def token_factory=(factory)
175
+ @_input.token_source.token_factory = factory
176
176
  end
177
177
 
178
178
  def get_atn_with_bypass_alts
@@ -55,7 +55,7 @@ module Antlr4::Runtime
55
55
  end
56
56
 
57
57
  def add_error_node(error_node)
58
- error_node.setParent(self)
58
+ error_node.parent = self
59
59
  add_any_child(error_node)
60
60
  end
61
61
 
@@ -8,7 +8,7 @@ module Antlr4::Runtime
8
8
  @@global_node_count = 0
9
9
  end
10
10
 
11
- attr_accessor :cachedHashCode
11
+ attr_accessor :cached_hash_code
12
12
 
13
13
  def initialize(cached_hash_code)
14
14
  @id = @@global_node_count
@@ -390,15 +390,15 @@ module Antlr4::Runtime
390
390
  def self.calculate_empty_hash_code
391
391
  return @_hash unless @_hash.nil?
392
392
 
393
- @_hash = MurmurHash.hash_int(INITIAL_HASH)
393
+ @_hash = RumourHash.calculate([INITIAL_HASH])
394
394
  end
395
395
 
396
396
  def self.calculate_hash_code1(parent, return_state)
397
- MurmurHash.hash_int_obj(return_state, parent)
397
+ RumourHash.calculate([return_state, parent])
398
398
  end
399
399
 
400
400
  def self.calculate_hash_code2(parents, return_states)
401
- MurmurHash.hash_ints_objs(return_states, parents)
401
+ RumourHash.calculate(return_states + parents)
402
402
  end
403
403
  end
404
404
  end
@@ -15,7 +15,7 @@ module Antlr4::Runtime
15
15
  include Singleton
16
16
 
17
17
  def hash(o)
18
- MurmurHash.hash_int_obj(o.state.state_number, o.context)
18
+ RumourHash.calculate([o.state.state_number, o.context])
19
19
  end
20
20
 
21
21
  def equals(a, b)
@@ -26,7 +26,7 @@ module Antlr4::Runtime
26
26
  def hash
27
27
  return @_hash unless @_hash.nil?
28
28
 
29
- hash_code = MurmurHash.hash_ints([@rule_index, @pred_index, @is_ctx_dependent ? 1 : 0])
29
+ hash_code = RumourHash.calculate([@rule_index, @pred_index, @is_ctx_dependent ? 1 : 0])
30
30
 
31
31
  if !@_hash.nil?
32
32
  if hash_code == @_hash
@@ -124,7 +124,7 @@ module Antlr4::Runtime
124
124
  end
125
125
 
126
126
  def hash
127
- hash_code = MurmurHash.hash(@opnds, AND.hash)
127
+ hash_code = RumourHash.calculate(@opnds, AND.hash)
128
128
  if !@_hash2.nil?
129
129
  if hash_code == @_hash2
130
130
  puts 'Same hash_code for SemanticContext_2'
@@ -219,7 +219,7 @@ module Antlr4::Runtime
219
219
  end
220
220
 
221
221
  def hash
222
- hash_code = MurmurHash.hash(@opnds, OR.hash)
222
+ hash_code = MurmurHash.calculate(@opnds, OR.hash)
223
223
  if !@_hash3.nil?
224
224
  if hash_code == @_hash3
225
225
  puts 'Same hash_code for SemanticContext_2'
@@ -308,4 +308,4 @@ module Antlr4::Runtime
308
308
 
309
309
  NONE = Predicate.new
310
310
  end
311
- end
311
+ end
@@ -21,7 +21,7 @@ module Antlr4::Runtime
21
21
  end
22
22
 
23
23
  def hash
24
- hash_code = MurmurHash.hash_objs([@a, @b, @c])
24
+ hash_code = RumourHash.hash([@a, @b, @c])
25
25
 
26
26
  if !@_hash.nil?
27
27
  if hash_code == @_hash
@@ -37,4 +37,4 @@ module Antlr4::Runtime
37
37
  '(' << @a.to_s << ',' << @b.to_s << ', ' << @c.to_s << ')'
38
38
  end
39
39
  end
40
- end
40
+ end
@@ -1,5 +1,5 @@
1
1
  module Antlr4
2
2
  module Runtime
3
- VERSION = "0.2.3"
3
+ VERSION = "0.2.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: antlr4-runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Walmsley
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-12 00:00:00.000000000 Z
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -73,7 +73,6 @@ files:
73
73
  - antlr4-runtime.gemspec
74
74
  - bin/console
75
75
  - bin/setup
76
- - ext/rumourhash/Makefile
77
76
  - ext/rumourhash/extconf.rb
78
77
  - ext/rumourhash/rumourhash.c
79
78
  - lib/antlr4/runtime.rb
@@ -155,7 +154,6 @@ files:
155
154
  - lib/antlr4/runtime/ll1_analyzer.rb
156
155
  - lib/antlr4/runtime/lookahead_event_info.rb
157
156
  - lib/antlr4/runtime/loop_end_state.rb
158
- - lib/antlr4/runtime/murmur_hash.rb
159
157
  - lib/antlr4/runtime/no_viable_alt_exception.rb
160
158
  - lib/antlr4/runtime/not_set_transition.rb
161
159
  - lib/antlr4/runtime/object_equality_comparator.rb
@@ -1,264 +0,0 @@
1
-
2
- SHELL = /bin/sh
3
-
4
- # V=0 quiet, V=1 verbose. other values don't work.
5
- V = 0
6
- Q1 = $(V:1=)
7
- Q = $(Q1:0=@)
8
- ECHO1 = $(V:1=@ :)
9
- ECHO = $(ECHO1:0=@ echo)
10
- NULLCMD = :
11
-
12
- #### Start of system configuration section. ####
13
-
14
- srcdir = .
15
- topdir = /Users/tonywalmsley/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0
16
- hdrdir = $(topdir)
17
- arch_hdrdir = /Users/tonywalmsley/.rvm/rubies/ruby-2.5.3/include/ruby-2.5.0/x86_64-darwin18
18
- PATH_SEPARATOR = :
19
- VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
20
- prefix = $(DESTDIR)/Users/tonywalmsley/.rvm/rubies/ruby-2.5.3
21
- rubysitearchprefix = $(rubylibprefix)/$(sitearch)
22
- rubyarchprefix = $(rubylibprefix)/$(arch)
23
- rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
24
- exec_prefix = $(prefix)
25
- vendorarchhdrdir = $(vendorhdrdir)/$(sitearch)
26
- sitearchhdrdir = $(sitehdrdir)/$(sitearch)
27
- rubyarchhdrdir = $(rubyhdrdir)/$(arch)
28
- vendorhdrdir = $(rubyhdrdir)/vendor_ruby
29
- sitehdrdir = $(rubyhdrdir)/site_ruby
30
- rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME)
31
- vendorarchdir = $(vendorlibdir)/$(sitearch)
32
- vendorlibdir = $(vendordir)/$(ruby_version)
33
- vendordir = $(rubylibprefix)/vendor_ruby
34
- sitearchdir = $(sitelibdir)/$(sitearch)
35
- sitelibdir = $(sitedir)/$(ruby_version)
36
- sitedir = $(rubylibprefix)/site_ruby
37
- rubyarchdir = $(rubylibdir)/$(arch)
38
- rubylibdir = $(rubylibprefix)/$(ruby_version)
39
- sitearchincludedir = $(includedir)/$(sitearch)
40
- archincludedir = $(includedir)/$(arch)
41
- sitearchlibdir = $(libdir)/$(sitearch)
42
- archlibdir = $(libdir)/$(arch)
43
- ridir = $(datarootdir)/$(RI_BASE_NAME)
44
- mandir = $(datarootdir)/man
45
- localedir = $(datarootdir)/locale
46
- libdir = $(exec_prefix)/lib
47
- psdir = $(docdir)
48
- pdfdir = $(docdir)
49
- dvidir = $(docdir)
50
- htmldir = $(docdir)
51
- infodir = $(datarootdir)/info
52
- docdir = $(datarootdir)/doc/$(PACKAGE)
53
- oldincludedir = $(SDKROOT)/usr/include
54
- includedir = $(prefix)/include
55
- localstatedir = $(prefix)/var
56
- sharedstatedir = $(prefix)/com
57
- sysconfdir = $(prefix)/etc
58
- datadir = $(datarootdir)
59
- datarootdir = $(prefix)/share
60
- libexecdir = $(exec_prefix)/libexec
61
- sbindir = $(exec_prefix)/sbin
62
- bindir = $(exec_prefix)/bin
63
- archdir = $(rubyarchdir)
64
-
65
-
66
- CC = gcc
67
- CXX = g++
68
- LIBRUBY = $(LIBRUBY_SO)
69
- LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
70
- LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
71
- LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static -framework Foundation
72
- empty =
73
- OUTFLAG = -o $(empty)
74
- COUTFLAG = -o $(empty)
75
- CSRCFLAG = $(empty)
76
-
77
- RUBY_EXTCONF_H =
78
- cflags = $(optflags) $(debugflags) $(warnflags)
79
- cxxflags = $(optflags) $(debugflags) $(warnflags)
80
- optflags = -O3
81
- debugflags = -ggdb3
82
- warnflags = -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens
83
- CCDLFLAGS = -fno-common
84
- CFLAGS = $(CCDLFLAGS) $(cflags) -fno-common -pipe $(ARCH_FLAG)
85
- INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
86
- DEFS =
87
- CPPFLAGS = -I/usr/local/opt/libyaml/include -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl@1.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
88
- CXXFLAGS = $(CCDLFLAGS) $(cxxflags) $(ARCH_FLAG)
89
- ldflags = -L. -fstack-protector -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib
90
- dldflags = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib
91
- ARCH_FLAG =
92
- DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
93
- LDSHARED = $(CC) -dynamic -bundle
94
- LDSHAREDXX = $(CXX) -dynamic -bundle
95
- AR = libtool -static
96
- EXEEXT =
97
-
98
- RUBY_INSTALL_NAME = $(RUBY_BASE_NAME)
99
- RUBY_SO_NAME = ruby.2.5.3
100
- RUBYW_INSTALL_NAME =
101
- RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
102
- RUBYW_BASE_NAME = rubyw
103
- RUBY_BASE_NAME = ruby
104
-
105
- arch = x86_64-darwin18
106
- sitearch = $(arch)
107
- ruby_version = 2.5.0
108
- ruby = $(bindir)/$(RUBY_BASE_NAME)
109
- RUBY = $(ruby)
110
- ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/backward.h $(hdrdir)/ruby/ruby.h $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/missing.h $(hdrdir)/ruby/intern.h $(hdrdir)/ruby/st.h $(hdrdir)/ruby/subst.h $(arch_hdrdir)/ruby/config.h
111
-
112
- RM = rm -f
113
- RM_RF = $(RUBY) -run -e rm -- -rf
114
- RMDIRS = rmdir -p
115
- MAKEDIRS = /usr/local/opt/coreutils/bin/gmkdir -p
116
- INSTALL = /usr/local/opt/coreutils/bin/ginstall -c
117
- INSTALL_PROG = $(INSTALL) -m 0755
118
- INSTALL_DATA = $(INSTALL) -m 644
119
- COPY = cp
120
- TOUCH = exit >
121
-
122
- #### End of system configuration section. ####
123
-
124
- preload =
125
- libpath = . $(libdir) /usr/local/opt/libyaml/lib /usr/local/opt/readline/lib /usr/local/opt/libksba/lib /usr/local/opt/openssl@1.1/lib
126
- LIBPATH = -L. -L$(libdir) -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib
127
- DEFFILE =
128
-
129
- CLEANFILES = mkmf.log
130
- DISTCLEANFILES =
131
- DISTCLEANDIRS =
132
-
133
- extout =
134
- extout_prefix =
135
- target_prefix =
136
- LOCAL_LIBS =
137
- LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lobjc
138
- ORIG_SRCS = rumourhash.c
139
- SRCS = $(ORIG_SRCS)
140
- OBJS = rumourhash.o
141
- HDRS =
142
- LOCAL_HDRS =
143
- TARGET = rumourhash
144
- TARGET_NAME = rumourhash
145
- TARGET_ENTRY = Init_$(TARGET_NAME)
146
- DLLIB = $(TARGET).bundle
147
- EXTSTATIC =
148
- STATIC_LIB =
149
-
150
- TIMESTAMP_DIR = .
151
- BINDIR = $(bindir)
152
- RUBYCOMMONDIR = $(sitedir)$(target_prefix)
153
- RUBYLIBDIR = $(sitelibdir)$(target_prefix)
154
- RUBYARCHDIR = $(sitearchdir)$(target_prefix)
155
- HDRDIR = $(rubyhdrdir)/ruby$(target_prefix)
156
- ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix)
157
- TARGET_SO_DIR =
158
- TARGET_SO = $(TARGET_SO_DIR)$(DLLIB)
159
- CLEANLIBS = $(TARGET_SO)
160
- CLEANOBJS = *.o *.bak
161
-
162
- all: $(DLLIB)
163
- static: $(STATIC_LIB)
164
- .PHONY: all install static install-so install-rb
165
- .PHONY: clean clean-so clean-static clean-rb
166
-
167
- clean-static::
168
- clean-rb-default::
169
- clean-rb::
170
- clean-so::
171
- clean: clean-so clean-static clean-rb-default clean-rb
172
- -$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time
173
-
174
- distclean-rb-default::
175
- distclean-rb::
176
- distclean-so::
177
- distclean-static::
178
- distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb
179
- -$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
180
- -$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
181
- -$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true
182
-
183
- realclean: distclean
184
- install: install-so install-rb
185
-
186
- install-so: $(DLLIB) $(TIMESTAMP_DIR)/.sitearchdir.time
187
- $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
188
- clean-static::
189
- -$(Q)$(RM) $(STATIC_LIB)
190
- install-rb: pre-install-rb do-install-rb install-rb-default
191
- install-rb-default: pre-install-rb-default do-install-rb-default
192
- pre-install-rb: Makefile
193
- pre-install-rb-default: Makefile
194
- do-install-rb:
195
- do-install-rb-default:
196
- pre-install-rb-default:
197
- @$(NULLCMD)
198
- $(TIMESTAMP_DIR)/.sitearchdir.time:
199
- $(Q) $(MAKEDIRS) $(@D) $(RUBYARCHDIR)
200
- $(Q) $(TOUCH) $@
201
-
202
- site-install: site-install-so site-install-rb
203
- site-install-so: install-so
204
- site-install-rb: install-rb
205
-
206
- .SUFFIXES: .c .m .cc .mm .cxx .cpp .o .S
207
-
208
- .cc.o:
209
- $(ECHO) compiling $(<)
210
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
211
-
212
- .cc.S:
213
- $(ECHO) translating $(<)
214
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
215
-
216
- .mm.o:
217
- $(ECHO) compiling $(<)
218
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
219
-
220
- .mm.S:
221
- $(ECHO) translating $(<)
222
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
223
-
224
- .cxx.o:
225
- $(ECHO) compiling $(<)
226
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
227
-
228
- .cxx.S:
229
- $(ECHO) translating $(<)
230
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
231
-
232
- .cpp.o:
233
- $(ECHO) compiling $(<)
234
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
235
-
236
- .cpp.S:
237
- $(ECHO) translating $(<)
238
- $(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
239
-
240
- .c.o:
241
- $(ECHO) compiling $(<)
242
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
243
-
244
- .c.S:
245
- $(ECHO) translating $(<)
246
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
247
-
248
- .m.o:
249
- $(ECHO) compiling $(<)
250
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<
251
-
252
- .m.S:
253
- $(ECHO) translating $(<)
254
- $(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -S $(CSRCFLAG)$<
255
-
256
- $(TARGET_SO): $(OBJS) Makefile
257
- $(ECHO) linking shared-object $(DLLIB)
258
- -$(Q)$(RM) $(@)
259
- $(Q) $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
260
- $(Q) $(POSTLINK)
261
-
262
-
263
-
264
- $(OBJS): $(HDRS) $(ruby_headers)
@@ -1,99 +0,0 @@
1
- require 'rumourhash/rumourhash'
2
-
3
- include RumourHash
4
-
5
- module Antlr4::Runtime
6
- class MurmurHash
7
- DEFAULT_SEED = 0
8
- MASK_32 = 0xFFFFFFFF
9
-
10
- def self.hash_int(num)
11
- hash_code = 7
12
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num)
13
- RumourHash.rumour_hash_finish(hash_code, 0)
14
- end
15
-
16
- def self.hash_int_obj(num, obj)
17
- hash_code = 7
18
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num)
19
- hash_code = RumourHash.rumour_hash_update_int(hash_code, !obj.nil? ? obj.hash : 0)
20
- RumourHash.rumour_hash_finish(hash_code, 2)
21
- end
22
-
23
- def self.hash_int_int_obj_obj(num1, num2, obj1, obj2)
24
- hash_code = 7
25
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num1)
26
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num2)
27
- hash_code = RumourHash.rumour_hash_update_int(hash_code, !obj1.nil? ? obj1.hash : 0)
28
- hash_code = RumourHash.rumour_hash_update_int(hash_code, !obj2.nil? ? obj2.hash : 0)
29
- RumourHash.rumour_hash_finish(hash_code, 4)
30
- end
31
-
32
- def self.hash_int_int(num1, num2)
33
- hash_code = 7
34
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num1)
35
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num2)
36
- RumourHash.rumour_hash_finish(hash_code, 2)
37
- end
38
-
39
- def self.hash_objs(objs)
40
- hash_code = 7
41
-
42
- i = 0
43
- while i < objs.length
44
- obj = objs[i]
45
- hash_code = RumourHash.rumour_hash_update_int(hash_code, !obj.nil? ? obj.hash : 0)
46
- i += 1
47
- end
48
-
49
- RumourHash.rumour_hash_finish(hash_code, objs.length)
50
- end
51
-
52
- def self.hash_ints_objs(nums, objs)
53
- hash_code = 7
54
-
55
- i = 0
56
- while i < objs.length
57
- obj = objs[i]
58
- hash_code = RumourHash.rumour_hash_update_int(hash_code, !obj.nil? ? obj.hash : 0)
59
- i += 1
60
- end
61
-
62
- i = 0
63
- while i < nums.length
64
- num = nums[i]
65
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num)
66
- i += 1
67
- end
68
-
69
- RumourHash.rumour_hash_finish(hash_code, 2 * objs.length)
70
- end
71
-
72
- def self.hash_ints(nums)
73
- hash_code = 7
74
-
75
- i = 0
76
- while i < nums.length
77
- num = nums[i]
78
- hash_code = RumourHash.rumour_hash_update_int(hash_code, num)
79
- i += 1
80
- end
81
-
82
- RumourHash.rumour_hash_finish(hash_code, 2 * nums.length)
83
- end
84
-
85
- private
86
-
87
- def self.hash(data, seed)
88
- hash = seed
89
- i = 0
90
- while i < data.length
91
- value = data[i]
92
- hash = RumourHash.rumour_hash_update_int(hash, !value.nil? ? value.hash : 0)
93
- i += 1
94
- end
95
-
96
- RumourHash.rumour_hash_finish(hash, data.length)
97
- end
98
- end
99
- end