antlr3 1.8.0 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/History.txt +35 -0
  2. data/Manifest.txt +73 -0
  3. data/README.txt +6 -13
  4. data/java/RubyTarget.java +43 -19
  5. data/java/antlr-full-3.2.1.jar +0 -0
  6. data/lib/antlr3/debug.rb +2 -0
  7. data/lib/antlr3/debug/event-hub.rb +55 -55
  8. data/lib/antlr3/debug/record-event-listener.rb +2 -2
  9. data/lib/antlr3/debug/rule-tracer.rb +14 -14
  10. data/lib/antlr3/debug/socket.rb +47 -47
  11. data/lib/antlr3/debug/trace-event-listener.rb +8 -8
  12. data/lib/antlr3/main.rb +29 -9
  13. data/lib/antlr3/modes/ast-builder.rb +7 -7
  14. data/lib/antlr3/modes/filter.rb +19 -17
  15. data/lib/antlr3/profile.rb +34 -6
  16. data/lib/antlr3/recognizers.rb +50 -1
  17. data/lib/antlr3/streams.rb +19 -15
  18. data/lib/antlr3/streams/rewrite.rb +241 -229
  19. data/lib/antlr3/template/group-file-lexer.rb +6 -8
  20. data/lib/antlr3/template/group-file-parser.rb +16 -16
  21. data/lib/antlr3/template/group-file.rb +1 -1
  22. data/lib/antlr3/test/call-stack.rb +13 -13
  23. data/lib/antlr3/test/core-extensions.rb +69 -69
  24. data/lib/antlr3/test/functional.rb +0 -4
  25. data/lib/antlr3/test/grammar.rb +70 -70
  26. data/lib/antlr3/token.rb +41 -17
  27. data/lib/antlr3/tree.rb +11 -14
  28. data/lib/antlr3/tree/debug.rb +53 -53
  29. data/lib/antlr3/tree/visitor.rb +11 -11
  30. data/lib/antlr3/tree/wizard.rb +35 -35
  31. data/lib/antlr3/util.rb +18 -0
  32. data/lib/antlr3/version.rb +1 -1
  33. data/rakefile +1 -0
  34. data/samples/ANTLRv3Grammar.g +3 -3
  35. data/samples/JavaScript.g +702 -0
  36. data/samples/standard/C/C.g +543 -0
  37. data/samples/standard/C/C.tokens +175 -0
  38. data/samples/standard/C/C__testrig.st +0 -0
  39. data/samples/standard/C/c.rb +12 -0
  40. data/samples/standard/C/input +3479 -0
  41. data/samples/standard/C/output +171 -0
  42. data/samples/standard/LL-star/LLStar.g +101 -0
  43. data/samples/standard/LL-star/input +12 -0
  44. data/samples/standard/LL-star/ll-star.rb +12 -0
  45. data/samples/standard/LL-star/output +2 -0
  46. data/samples/standard/calc/Calculator.g +47 -0
  47. data/samples/standard/calc/Calculator.py +16 -0
  48. data/samples/standard/calc/Calculator.rb +28 -0
  49. data/samples/standard/cminus/CMinus.g +141 -0
  50. data/samples/standard/cminus/bytecode.group +80 -0
  51. data/samples/standard/cminus/cminus.rb +16 -0
  52. data/samples/standard/cminus/input +9 -0
  53. data/samples/standard/cminus/java.group +91 -0
  54. data/samples/standard/cminus/output +11 -0
  55. data/samples/standard/cminus/python.group +48 -0
  56. data/samples/standard/dynamic-scope/DynamicScopes.g +50 -0
  57. data/samples/standard/dynamic-scope/dynamic-scopes.rb +12 -0
  58. data/samples/standard/dynamic-scope/input +7 -0
  59. data/samples/standard/dynamic-scope/output +4 -0
  60. data/samples/standard/fuzzy/FuzzyJava.g +89 -0
  61. data/samples/standard/fuzzy/fuzzy.py +11 -0
  62. data/samples/standard/fuzzy/fuzzy.rb +9 -0
  63. data/samples/standard/fuzzy/input +13 -0
  64. data/samples/standard/fuzzy/output +12 -0
  65. data/samples/standard/hoisted-predicates/HoistedPredicates.g +40 -0
  66. data/samples/standard/hoisted-predicates/hoisted-predicates.rb +13 -0
  67. data/samples/standard/hoisted-predicates/input +1 -0
  68. data/samples/standard/hoisted-predicates/output +1 -0
  69. data/samples/standard/island-grammar/Javadoc.g +46 -0
  70. data/samples/standard/island-grammar/Simple.g +104 -0
  71. data/samples/standard/island-grammar/input +11 -0
  72. data/samples/standard/island-grammar/island.rb +12 -0
  73. data/samples/standard/island-grammar/output +16 -0
  74. data/samples/standard/java/Java.g +827 -0
  75. data/samples/standard/java/input +80 -0
  76. data/samples/standard/java/java.rb +13 -0
  77. data/samples/standard/java/output +1 -0
  78. data/samples/standard/python/Python.g +718 -0
  79. data/samples/standard/python/PythonTokenSource.rb +107 -0
  80. data/samples/standard/python/input +210 -0
  81. data/samples/standard/python/output +24 -0
  82. data/samples/standard/python/python.rb +14 -0
  83. data/samples/standard/rakefile +18 -0
  84. data/samples/standard/scopes/SymbolTable.g +66 -0
  85. data/samples/standard/scopes/input +12 -0
  86. data/samples/standard/scopes/output +3 -0
  87. data/samples/standard/scopes/scopes.rb +12 -0
  88. data/samples/standard/simplecTreeParser/SimpleC.g +113 -0
  89. data/samples/standard/simplecTreeParser/SimpleCWalker.g +64 -0
  90. data/samples/standard/simplecTreeParser/input +12 -0
  91. data/samples/standard/simplecTreeParser/output +1 -0
  92. data/samples/standard/simplecTreeParser/simplec.rb +18 -0
  93. data/samples/standard/treeparser/Lang.g +24 -0
  94. data/samples/standard/treeparser/LangDumpDecl.g +17 -0
  95. data/samples/standard/treeparser/input +1 -0
  96. data/samples/standard/treeparser/output +2 -0
  97. data/samples/standard/treeparser/treeparser.rb +18 -0
  98. data/samples/standard/tweak/Tweak.g +68 -0
  99. data/samples/standard/tweak/input +9 -0
  100. data/samples/standard/tweak/output +16 -0
  101. data/samples/standard/tweak/tweak.rb +13 -0
  102. data/samples/standard/xml/README +16 -0
  103. data/samples/standard/xml/XML.g +123 -0
  104. data/samples/standard/xml/input +21 -0
  105. data/samples/standard/xml/output +39 -0
  106. data/samples/standard/xml/xml.rb +9 -0
  107. data/templates/Ruby.stg +4 -4
  108. data/test/functional/ast-output/auto-ast.rb +0 -5
  109. data/test/functional/ast-output/rewrites.rb +4 -4
  110. data/test/unit/test-scope.rb +45 -0
  111. metadata +96 -8
@@ -11,53 +11,53 @@ Adds debugging event hooks to TreeAdaptor objects
11
11
  module TreeAdaptor
12
12
 
13
13
  def self.wrap( adaptor, debug_listener = nil )
14
- adaptor.extend(self)
14
+ adaptor.extend( self )
15
15
  adaptor.debug_listener = debug_listener
16
16
  return( adaptor )
17
17
  end
18
18
 
19
19
  attr_accessor :debug_listener
20
20
 
21
- def create_with_payload(payload)
21
+ def create_with_payload( payload )
22
22
  node = super
23
- @debug_listener.create_node(node, payload)
23
+ @debug_listener.create_node( node, payload )
24
24
  return node
25
25
  end
26
26
 
27
- def create_from_token(token_type, from_token, text = nil)
27
+ def create_from_token( token_type, from_token, text = nil )
28
28
  node = super
29
- @debug_listener.create_node(node)
29
+ @debug_listener.create_node( node )
30
30
  return node
31
31
  end
32
32
 
33
- def create_from_type(token_type, text)
33
+ def create_from_type( token_type, text )
34
34
  node = super
35
- @debug_listener.create_node(node)
35
+ @debug_listener.create_node( node )
36
36
  return node
37
37
  end
38
38
 
39
- def create_error_node(input, start, stop, exc)
39
+ def create_error_node( input, start, stop, exc )
40
40
  node = super
41
- node.nil? or @debug_listener.error_node(node)
41
+ node.nil? or @debug_listener.error_node( node )
42
42
  return node
43
43
  end
44
44
 
45
- def copy_tree(tree)
45
+ def copy_tree( tree )
46
46
  t = super
47
- simulate_tree_construction(t)
47
+ simulate_tree_construction( t )
48
48
  return t
49
49
  end
50
50
 
51
- def simulate_tree_construction(tree)
52
- @debug_listener.create_node(tree)
53
- child_count(tree).times do |i|
54
- child = self.child_of(tree, i)
55
- simulate_tree_construction(child)
56
- @debug_listener.add_child(tree, child)
51
+ def simulate_tree_construction( tree )
52
+ @debug_listener.create_node( tree )
53
+ child_count( tree ).times do |i|
54
+ child = self.child_of( tree, i )
55
+ simulate_tree_construction( child )
56
+ @debug_listener.add_child( tree, child )
57
57
  end
58
58
  end
59
59
 
60
- def copy_node(tree_node)
60
+ def copy_node( tree_node )
61
61
  duplicate = super
62
62
  @debug_listener.create_node duplicate
63
63
  return duplicate
@@ -65,39 +65,39 @@ module TreeAdaptor
65
65
 
66
66
  def create_flat_list
67
67
  node = super
68
- @debug_listener.flat_node(node)
68
+ @debug_listener.flat_node( node )
69
69
  return node
70
70
  end
71
71
 
72
- def add_child(tree, child)
72
+ def add_child( tree, child )
73
73
  case child
74
74
  when Token
75
- node = create_with_payload(child)
76
- add_child(tree, node)
75
+ node = create_with_payload( child )
76
+ add_child( tree, node )
77
77
  else
78
78
  tree.nil? || child.nil? and return
79
- super(tree, child)
80
- @debug_listener.add_child(tree, child)
79
+ super( tree, child )
80
+ @debug_listener.add_child( tree, child )
81
81
  end
82
82
  end
83
83
 
84
- def become_root(new_root, old_root)
84
+ def become_root( new_root, old_root )
85
85
  case new_root
86
86
  when Token
87
- n = create_with_payload(new_root)
88
- super(n, old_root)
87
+ n = create_with_payload( new_root )
88
+ super( n, old_root )
89
89
  else
90
- n = super(new_root, old_root)
90
+ n = super( new_root, old_root )
91
91
  end
92
- @debug_listener.become_root(new_root, old_root)
92
+ @debug_listener.become_root( new_root, old_root )
93
93
  return n
94
94
  end
95
95
 
96
- def set_token_boundaries(tree, start_token, stop_token)
97
- super(tree, start_token, stop_token)
96
+ def set_token_boundaries( tree, start_token, stop_token )
97
+ super( tree, start_token, stop_token )
98
98
  return unless tree && start_token && stop_token
99
- @debug_listener.set_token_boundaries(tree,
100
- start_token.token_index, stop_token.token_index)
99
+ @debug_listener.set_token_boundaries( tree,
100
+ start_token.token_index, stop_token.token_index )
101
101
  end
102
102
  end
103
103
 
@@ -110,8 +110,8 @@ not already a Debug::TreeNodeStream.
110
110
  =end
111
111
  class TreeNodeStream
112
112
 
113
- def self.wrap(stream, debug_listener = nil)
114
- stream.extend(self)
113
+ def self.wrap( stream, debug_listener = nil )
114
+ stream.extend( self )
115
115
  stream.debug_listener ||= debug_listener
116
116
  end
117
117
  attr_accessor :debug_listener
@@ -119,36 +119,36 @@ class TreeNodeStream
119
119
  def consume
120
120
  node = @input >> 1
121
121
  super
122
- @debug_listener.consume_node(node)
122
+ @debug_listener.consume_node( node )
123
123
  end
124
124
 
125
- def look(i = 1)
125
+ def look( i = 1 )
126
126
  node = super
127
- id = @adaptor.unique_id(node)
128
- text = @adaptor.text_of(node)
129
- type = @adaptor.type_of(node)
130
- @debug_listener.look(i, node)
131
- return(node)
127
+ id = @adaptor.unique_id( node )
128
+ text = @adaptor.text_of( node )
129
+ type = @adaptor.type_of( node )
130
+ @debug_listener.look( i, node )
131
+ return( node )
132
132
  end
133
133
 
134
- def peek(i = 1)
134
+ def peek( i = 1 )
135
135
  node = self >> 1
136
- id = @adaptor.unique_id(node)
137
- text = @adaptor.text_of(node)
138
- type = @adaptor.type_of(node)
139
- @debug_listener.look(i, node)
140
- return(type)
136
+ id = @adaptor.unique_id( node )
137
+ text = @adaptor.text_of( node )
138
+ type = @adaptor.type_of( node )
139
+ @debug_listener.look( i, node )
140
+ return( type )
141
141
  end
142
142
 
143
143
  def mark
144
144
  @last_marker = super
145
- @debug_listener.mark(@last_marker)
146
- return(@last_marker)
145
+ @debug_listener.mark( @last_marker )
146
+ return( @last_marker )
147
147
  end
148
148
 
149
- def rewind(marker = nil)
150
- @debug_listener.rewind(marker)
151
- super(marker || @last_marker)
149
+ def rewind( marker = nil )
150
+ @debug_listener.rewind( marker )
151
+ super( marker || @last_marker )
152
152
  end
153
153
 
154
154
  =begin This actually differs with reset in CommonTreeNodeStream -- why is this one blank?
@@ -48,34 +48,34 @@ children have been visited.
48
48
  =end
49
49
 
50
50
  class Visitor
51
- def initialize(adaptor = nil)
51
+ def initialize( adaptor = nil )
52
52
  @adaptor = adaptor || CommonTreeAdaptor.new()
53
53
  @pre_action = nil
54
54
  @post_action = nil
55
- block_given? and yield(self)
55
+ block_given? and yield( self )
56
56
  end
57
57
 
58
- def pre_action(&block)
58
+ def pre_action( &block )
59
59
  block_given? and @pre_action = block
60
60
  return @pre_action
61
61
  end
62
62
 
63
- def post_action(&block)
63
+ def post_action( &block )
64
64
  block_given? and @post_action = block
65
65
  return @post_action
66
66
  end
67
67
 
68
- def visit(tree, pre_action = nil, post_action = nil)
69
- flat = @adaptor.flat_list?(tree)
68
+ def visit( tree, pre_action = nil, post_action = nil )
69
+ flat = @adaptor.flat_list?( tree )
70
70
  before = pre_action || @pre_action
71
71
  after = post_action || @post_action
72
72
 
73
- tree = before.call(tree) unless before.nil? or flat
74
- @adaptor.child_count(tree).times do |index|
75
- child = @adaptor.child_of(tree, index)
76
- visit(child, pre_action, post_action)
73
+ tree = before.call( tree ) unless before.nil? or flat
74
+ @adaptor.child_count( tree ).times do |index|
75
+ child = @adaptor.child_of( tree, index )
76
+ visit( child, pre_action, post_action )
77
77
  end
78
- tree = after.call(tree) unless after.nil? or flat
78
+ tree = after.call( tree ) unless after.nil? or flat
79
79
 
80
80
  return tree
81
81
  end
@@ -130,15 +130,15 @@ A class that is used internally by AST::Wizard to tokenize tree patterns
130
130
 
131
131
  autoload :StringScanner, 'strscan'
132
132
 
133
- PATTERNS = [
134
- [:space, /\s+/],
135
- [:identifier, /[a-z_]\w*/i],
136
- [:open, /\(/],
137
- [:close, /\)/],
138
- [:percent, /%/],
139
- [:colon, /:/],
140
- [:dot, /\./],
141
- [:argument, /\[((?:[^\[\]\\]|\\\[|\\\]|\\.)*?)\]/]
133
+ PATTERNS = [
134
+ [ :space, /\s+/ ],
135
+ [ :identifier, /[a-z_]\w*/i ],
136
+ [ :open, /\(/ ],
137
+ [ :close, /\)/ ],
138
+ [ :percent, /%/ ],
139
+ [ :colon, /:/ ],
140
+ [ :dot, /\./ ],
141
+ [ :argument, /\[((?:[^\[\]\\]|\\\[|\\\]|\\.)*?)\]/ ]
142
142
  ]
143
143
 
144
144
  attr_reader :text, :error, :pattern
@@ -154,7 +154,7 @@ A class that is used internally by AST::Wizard to tokenize tree patterns
154
154
  @scanner.eos? and return EOF
155
155
 
156
156
  type, = PATTERNS.find do |type, pattern|
157
- @scanner.scan(pattern)
157
+ @scanner.scan( pattern )
158
158
  end
159
159
 
160
160
  case type
@@ -164,7 +164,7 @@ A class that is used internally by AST::Wizard to tokenize tree patterns
164
164
  when :identifier then @text = @scanner.matched
165
165
  when :argument
166
166
  # remove escapes from \] sequences in the text argument
167
- (@text = @scanner[1]).gsub!(/\\(?=[\[\]])/, '')
167
+ ( @text = @scanner[ 1 ] ).gsub!( /\\(?=[\[\]])/, '' )
168
168
  end
169
169
  end while type == :space
170
170
 
@@ -208,7 +208,7 @@ from a tokenized tree pattern
208
208
  return nil
209
209
  end
210
210
 
211
- CONTINUE_TYPES = [:open, :identifier, :percent, :dot]
211
+ CONTINUE_TYPES = [ :open, :identifier, :percent, :dot ]
212
212
 
213
213
  def parse_tree
214
214
  @token_type != :open and return nil
@@ -219,10 +219,10 @@ from a tokenized tree pattern
219
219
  case @token_type
220
220
  when :open
221
221
  subtree = parse_tree
222
- @adaptor.add_child(root, subtree)
222
+ @adaptor.add_child( root, subtree )
223
223
  when :identifier, :percent, :dot
224
224
  child = parse_node or return nil
225
- @adaptor.add_child(root, child)
225
+ @adaptor.add_child( root, child )
226
226
  else break
227
227
  end
228
228
  end
@@ -234,16 +234,16 @@ from a tokenized tree pattern
234
234
  def parse_node
235
235
  label = nil
236
236
  if @token_type == :percent
237
- (@token_type = @tokenizer.next_token) == :identifier or return nil
237
+ ( @token_type = @tokenizer.next_token ) == :identifier or return nil
238
238
  label = @tokenizer.text
239
- (@token_type = @tokenizer.next_token) == :colon or return nil
239
+ ( @token_type = @tokenizer.next_token ) == :colon or return nil
240
240
  @token_type = @tokenizer.next_token
241
241
  end
242
242
 
243
243
  if @token_type == :dot
244
244
  @token_type = @tokenizer.next_token
245
- wildcard_payload = CommonToken.create(:type => 0, :text => '.')
246
- node = WildcardPattern.new(wildcard_payload)
245
+ wildcard_payload = CommonToken.create( :type => 0, :text => '.' )
246
+ node = WildcardPattern.new( wildcard_payload )
247
247
  label and node.label = label
248
248
  return node
249
249
  end
@@ -281,7 +281,7 @@ to validate tree structures as well as to extract nodes that match the pattern.
281
281
 
282
282
  class Pattern < CommonTree
283
283
  def self.parse( pattern_str, scheme )
284
- PatternParser.parse(
284
+ PatternParser.parse(
285
285
  pattern_str, scheme, PatternAdaptor.new( scheme.token_class )
286
286
  )
287
287
  end
@@ -349,20 +349,20 @@ A customized TreeAdaptor used by AST::Wizards to build tree patterns.
349
349
 
350
350
  def find( tree, what )
351
351
  case what
352
- when Integer then find_token_type(tree, what)
353
- when String then find_pattern(tree, what)
352
+ when Integer then find_token_type( tree, what )
353
+ when String then find_pattern( tree, what )
354
354
  when Symbol then find_token_type( tree, @token_scheme[ what ] )
355
355
  else raise ArgumentError, "search subject must be a token type (integer) or a string"
356
356
  end
357
357
  end
358
358
 
359
- def find_token_type(tree, type)
359
+ def find_token_type( tree, type )
360
360
  nodes = []
361
361
  visit( tree, type ) { | t, | nodes << t }
362
362
  return nodes
363
363
  end
364
364
 
365
- def find_pattern(tree, pattern)
365
+ def find_pattern( tree, pattern )
366
366
  subtrees = []
367
367
  visit_pattern( tree, pattern ) { | t, | subtrees << t }
368
368
  return( subtrees )
@@ -392,7 +392,7 @@ A customized TreeAdaptor used by AST::Wizards to build tree patterns.
392
392
  end
393
393
 
394
394
  def visit_type( tree, parent, type, &block )
395
- tree.nil? and return(nil)
395
+ tree.nil? and return( nil )
396
396
  index = @adaptor.child_index( tree )
397
397
  @adaptor.type_of( tree ) == type and yield( tree, parent, index, nil )
398
398
  @adaptor.each_child( tree ) do | child |
@@ -422,20 +422,20 @@ A customized TreeAdaptor used by AST::Wizards to build tree patterns.
422
422
  def match!( tree, pattern, labels = {} )
423
423
  tree.nil? || pattern.nil? and return false
424
424
  unless pattern.is_a? WildcardPattern
425
- @adaptor.type_of(tree) == pattern.type or return false
426
- pattern.has_text_arg && (@adaptor.text_of(tree) != pattern.text) and
425
+ @adaptor.type_of( tree ) == pattern.type or return false
426
+ pattern.has_text_arg && ( @adaptor.text_of( tree ) != pattern.text ) and
427
427
  return false
428
428
  end
429
429
  labels[ pattern.label ] = tree if labels && pattern.label
430
430
 
431
- number_of_children = @adaptor.child_count(tree)
431
+ number_of_children = @adaptor.child_count( tree )
432
432
  return false unless number_of_children == pattern.child_count
433
433
 
434
434
  number_of_children.times do |index|
435
- actual_child = @adaptor.child_of(tree, index)
435
+ actual_child = @adaptor.child_of( tree, index )
436
436
  pattern_child = pattern.child( index )
437
437
 
438
- return(false) unless match!( actual_child, pattern_child, labels )
438
+ return( false ) unless match!( actual_child, pattern_child, labels )
439
439
  end
440
440
 
441
441
  return labels
@@ -444,11 +444,11 @@ A customized TreeAdaptor used by AST::Wizards to build tree patterns.
444
444
  def equals( tree_a, tree_b, adaptor = @adaptor )
445
445
  tree_a && tree_b or return( false )
446
446
 
447
- adaptor.type_of(tree_a) == adaptor.type_of(tree_b) or return false
448
- adaptor.text_of(tree_a) == adaptor.text_of(tree_b) or return false
447
+ adaptor.type_of( tree_a ) == adaptor.type_of( tree_b ) or return false
448
+ adaptor.text_of( tree_a ) == adaptor.text_of( tree_b ) or return false
449
449
 
450
- child_count_a = adaptor.child_count(tree_a)
451
- child_count_b = adaptor.child_count(tree_b)
450
+ child_count_a = adaptor.child_count( tree_a )
451
+ child_count_b = adaptor.child_count( tree_b )
452
452
  child_count_a == child_count_b or return false
453
453
 
454
454
  child_count_a.times do | i |
@@ -469,9 +469,9 @@ A customized TreeAdaptor used by AST::Wizards to build tree patterns.
469
469
  when DOUBLE_ETC_PATTERN then raise ArgumentError, "invalid syntax: ... ..."
470
470
  end
471
471
 
472
- context = context.gsub(/([^\.\s])\.{3}([^\.])/, '\1 ... \2')
472
+ context = context.gsub( /([^\.\s])\.{3}([^\.])/, '\1 ... \2' )
473
473
  context.strip!
474
- nodes = context.split(/\s+/)
474
+ nodes = context.split( /\s+/ )
475
475
 
476
476
  while tree = @adaptor.parent( tree ) and node = nodes.pop
477
477
  if node == '...'
@@ -73,6 +73,24 @@ private
73
73
  END
74
74
  end
75
75
 
76
+ def deprecate( name, extra_message = nil )
77
+ hidden_name = "deprecated_#{ name }"
78
+ method_defined?( hidden_name ) and return
79
+
80
+ alias_method( hidden_name, name )
81
+ private( hidden_name )
82
+
83
+ message = "warning: method #{ self }##{ name } is deprecated"
84
+ extra_message and message << '; ' << extra_message.to_s
85
+
86
+ class_eval( <<-END )
87
+ def #{ name }( *args, &block )
88
+ warn( #{ message.inspect } )
89
+ #{ hidden_name }( *args, &block )
90
+ end
91
+ END
92
+ end
93
+
76
94
  def alias_accessor( alias_name, attr_name )
77
95
  alias_method( alias_name, attr_name )
78
96
  alias_method( :"#{ alias_name }=", :"#{ attr_name }=" )
@@ -20,7 +20,7 @@ module ANTLR3
20
20
  #
21
21
  MAJOR_VERSION = 1
22
22
  MINOR_VERSION = 8
23
- PATCH_VERSION = 0
23
+ PATCH_VERSION = 2
24
24
  VERSION = [ MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION ]
25
25
  VERSION_STRING = VERSION.join( '.' ).freeze
26
26