antlr3 1.6.0 → 1.6.3

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.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 1.6.3 / 02-12-10
2
+
3
+ * 4 Minor Enhancements
4
+ - added --help and --version options to antlr4ruby
5
+ - documented the antlr4ruby source and added license information
6
+ - prettied up the source code in all of the library files a little
7
+ - added a hoe-based rakefile with the gem distribution of the source code
8
+
1
9
  === 1.6.0 / 01-27-10
2
10
 
3
11
  * 4 Minor Enhancements to runtime library
data/Manifest.txt ADDED
@@ -0,0 +1,94 @@
1
+ bin/antlr4ruby
2
+ lib/antlr3/main.rb
3
+ lib/antlr3/recognizers.rb
4
+ lib/antlr3/modes/ast-builder.rb
5
+ lib/antlr3/modes/filter.rb
6
+ lib/antlr3/streams/rewrite.rb
7
+ lib/antlr3/streams/interactive.rb
8
+ lib/antlr3/debug.rb
9
+ lib/antlr3/dot.rb
10
+ lib/antlr3/streams.rb
11
+ lib/antlr3/debug/record-event-listener.rb
12
+ lib/antlr3/debug/rule-tracer.rb
13
+ lib/antlr3/debug/socket.rb
14
+ lib/antlr3/debug/trace-event-listener.rb
15
+ lib/antlr3/debug/event-hub.rb
16
+ lib/antlr3/version.rb
17
+ lib/antlr3/error.rb
18
+ lib/antlr3/tree.rb
19
+ lib/antlr3/test/functional.rb
20
+ lib/antlr3/test/call-stack.rb
21
+ lib/antlr3/test/grammar.rb
22
+ lib/antlr3/test/core-extensions.rb
23
+ lib/antlr3/template.rb
24
+ lib/antlr3/dfa.rb
25
+ lib/antlr3/profile.rb
26
+ lib/antlr3/template/parameter.rb
27
+ lib/antlr3/template/group-lexer.rb
28
+ lib/antlr3/template/group-parser.rb
29
+ lib/antlr3/tree/visitor.rb
30
+ lib/antlr3/tree/debug.rb
31
+ lib/antlr3/tree/wizard.rb
32
+ lib/antlr3/token.rb
33
+ lib/antlr3/task.rb
34
+ lib/antlr3/constants.rb
35
+ lib/antlr3/util.rb
36
+ lib/antlr3.rb
37
+ test/unit/test-dfa.rb
38
+ test/unit/sample-input/file-stream-1
39
+ test/unit/sample-input/template-group
40
+ test/unit/sample-input/teststreams.input2
41
+ test/unit/test-tree-wizard.rb
42
+ test/unit/test-streams.rb
43
+ test/unit/test-recognizers.rb
44
+ test/unit/test-trees.rb
45
+ test/unit/test-exceptions.rb
46
+ test/unit/test-scheme.rb
47
+ test/unit/test-template.rb
48
+ test/functional/delegation/import.rb
49
+ test/functional/lexer/xml.rb
50
+ test/functional/lexer/properties.rb
51
+ test/functional/lexer/nuances.rb
52
+ test/functional/lexer/basic.rb
53
+ test/functional/lexer/filter-mode.rb
54
+ test/functional/lexer/syn-pred.rb
55
+ test/functional/debugging/rule-tracing.rb
56
+ test/functional/debugging/profile-mode.rb
57
+ test/functional/debugging/debug-mode.rb
58
+ test/functional/ast-output/hetero-nodes.rb
59
+ test/functional/ast-output/construction.rb
60
+ test/functional/ast-output/rewrites.rb
61
+ test/functional/ast-output/tree-rewrite.rb
62
+ test/functional/ast-output/auto-ast.rb
63
+ test/functional/main/main-scripts.rb
64
+ test/functional/tree-parser/basic.rb
65
+ test/functional/parser/predicates.rb
66
+ test/functional/parser/backtracking.rb
67
+ test/functional/parser/properties.rb
68
+ test/functional/parser/nuances.rb
69
+ test/functional/parser/rule-methods.rb
70
+ test/functional/parser/basic.rb
71
+ test/functional/parser/actions.rb
72
+ test/functional/parser/calc.rb
73
+ test/functional/parser/ll-star.rb
74
+ test/functional/parser/scopes.rb
75
+ test/functional/template-output/template-output.rb
76
+ test/functional/token-rewrite/via-parser.rb
77
+ test/functional/token-rewrite/basic.rb
78
+ templates/ASTDbg.stg
79
+ templates/AST.stg
80
+ templates/Ruby.stg
81
+ templates/ST.stg
82
+ templates/Dbg.stg
83
+ templates/ASTParser.stg
84
+ templates/ASTTreeParser.stg
85
+ samples/CPP.g
86
+ samples/ANTLRv3Grammar.g
87
+ README.txt
88
+ ANTLR-LICENSE.txt
89
+ History.txt
90
+ Manifest.txt
91
+ java/antlr-full-3.2.1.jar
92
+ java/RubyTarget.java
93
+ Manifest.txt
94
+ Rakefile
data/README.txt CHANGED
@@ -111,7 +111,7 @@ ANTLR provides for other language targets, such as Java and Python. It contains:
111
111
  == LICENSE
112
112
 
113
113
  [The "BSD licence"]
114
- Copyright (c) 2009 Kyle Yetter
114
+ Copyright (c) 2009-2010 Kyle Yetter
115
115
  All rights reserved.
116
116
 
117
117
  Redistribution and use in source and binary forms, with or without
data/Rakefile ADDED
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/ruby
2
+ # encoding: utf-8
3
+
4
+ require 'antlr3'
5
+ require 'hoe'
6
+
7
+ Hoe.spec "antlr3" do
8
+ self.version = ANTLR3::VERSION_STRING
9
+ self.rubyforge_name = "antlr3"
10
+
11
+ developer "Kyle Yetter", "kcy5b@yahoo.com"
12
+
13
+ spec_extras.update(
14
+ :required_ruby_version => ">= 1.8.7"
15
+ )
16
+
17
+ self.test_globs = [
18
+ "test/unit/test-dfa.rb",
19
+ "test/unit/test-tree-wizard.rb",
20
+ "test/unit/test-streams.rb",
21
+ "test/unit/test-recognizers.rb",
22
+ "test/unit/test-trees.rb",
23
+ "test/unit/test-exceptions.rb",
24
+ "test/unit/test-scheme.rb",
25
+ "test/unit/test-template.rb",
26
+ "test/functional/delegation/import.rb",
27
+ "test/functional/lexer/xml.rb",
28
+ "test/functional/lexer/properties.rb",
29
+ "test/functional/lexer/nuances.rb",
30
+ "test/functional/lexer/basic.rb",
31
+ "test/functional/lexer/filter-mode.rb",
32
+ "test/functional/lexer/syn-pred.rb",
33
+ "test/functional/debugging/rule-tracing.rb",
34
+ "test/functional/debugging/profile-mode.rb",
35
+ "test/functional/debugging/debug-mode.rb",
36
+ "test/functional/ast-output/hetero-nodes.rb",
37
+ "test/functional/ast-output/construction.rb",
38
+ "test/functional/ast-output/rewrites.rb",
39
+ "test/functional/ast-output/tree-rewrite.rb",
40
+ "test/functional/ast-output/auto-ast.rb",
41
+ "test/functional/main/main-scripts.rb",
42
+ "test/functional/tree-parser/basic.rb",
43
+ "test/functional/parser/predicates.rb",
44
+ "test/functional/parser/backtracking.rb",
45
+ "test/functional/parser/properties.rb",
46
+ "test/functional/parser/nuances.rb",
47
+ "test/functional/parser/rule-methods.rb",
48
+ "test/functional/parser/basic.rb",
49
+ "test/functional/parser/actions.rb",
50
+ "test/functional/parser/calc.rb",
51
+ "test/functional/parser/ll-star.rb",
52
+ "test/functional/parser/scopes.rb",
53
+ "test/functional/template-output/template-output.rb",
54
+ "test/functional/token-rewrite/via-parser.rb",
55
+ "test/functional/token-rewrite/basic.rb"
56
+ ]
57
+
58
+ end
data/bin/antlr4ruby CHANGED
@@ -1,12 +1,106 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
3
 
4
- __DIR__ = File.expand_path( File.dirname __FILE__ )
5
- project_top = File.dirname __DIR__
6
- lib = File.join( project_top, 'lib' )
7
- $:.unshift( lib )
8
- require 'antlr3'
4
+ =begin LICENSE
5
+
6
+ [The "BSD licence"]
7
+ Copyright (c) 2009 Kyle Yetter
8
+ All rights reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions
12
+ are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+ 2. Redistributions in binary form must reproduce the above copyright
17
+ notice, this list of conditions and the following disclaimer in the
18
+ documentation and/or other materials provided with the distribution.
19
+ 3. The name of the author may not be used to endorse or promote products
20
+ derived from this software without specific prior written permission.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
23
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
26
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
27
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ =end
34
+
35
+ =begin rdoc antlr4ruby
36
+
37
+ A simple wrapper script to run the ANTLR tool with the ruby antlr3
38
+ target modifications in place of the default Ruby target data.
39
+ It essentially does two things:
40
+
41
+ * locate the `customized' ANTLR v.3 JAR archive file
42
+ * exec the command <tt>java -cp path/to/jar $ARGV</tt>
43
+
44
+ Thus, for ANTLR tool usage, refer to ANTLR's main documentation
45
+ at http://www.antlr.org .
46
+
47
+ There are a small number of additional options available
48
+ in addition to ANTLR's options:
49
+
50
+ --version display the Ruby target version and then the
51
+ ANTLR tool's version information
52
+
53
+ --help, -h as ANTLR does not provide these standard switches,
54
+ it executes the ANTLR tool without arguments to make
55
+ it print out usage information
56
+
57
+ --keep-classpath Do not unset the CLASSPATH environmental variable before
58
+ executing the java command (*)
59
+
60
+
61
+ (*) This script unsets CLASSPATH to avoid interference from system installations
62
+ of prior versions of ANTLR. The jar that is distributed with this package
63
+ is complete, and thus does not generally require any external libraries, so
64
+ this shouldn't cause any major problems. However, if for some reason you
65
+ need to keep this variable to execute the command properly, you can use
66
+ the --keep-classpath option.
67
+ =end
68
+
69
+ $0 = 'antlr4ruby'
70
+
71
+ begin
72
+ require 'antlr3'
73
+ rescue LoadError
74
+ __DIR__ = File.expand_path( File.dirname __FILE__ )
75
+ project_top = File.dirname __DIR__
76
+ lib = File.join( project_top, 'lib' )
77
+ $LOAD_PATH.unshift( lib )
78
+ require 'antlr3'
79
+ end
9
80
 
10
81
  jar = ANTLR3.antlr_jar or fail( "cannot find antlr4ruby's customized ANTLR jar" )
11
82
 
12
- exec( 'java', '-jar', jar, *ARGV )
83
+ run = proc do | *args |
84
+ exec( 'java', '-jar', jar, *args )
85
+ end
86
+
87
+ ARGV.delete( '--keep-classpath' ) or
88
+ ENV.delete( 'CLASSPATH' )
89
+
90
+ if ARGV.include?( '--version' )
91
+
92
+ puts( "Ruby Target and Runtime Library Version: #{ ANTLR3::VERSION_STRING }" )
93
+ run.call( '-version' )
94
+
95
+ elsif ARGV.include?( '--help' ) or ARGV.include?( '-h' )
96
+
97
+ # the ANTLR tool doesn't follow the --help/-h convention
98
+ # -- it provides help only if no arguments are specified
99
+ run.call
100
+
101
+ else
102
+
103
+ # run the tool
104
+ run.call( *ARGV )
105
+
106
+ end
Binary file
data/lib/antlr3.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  =begin LICENSE
5
5
 
6
6
  [The "BSD licence"]
7
- Copyright (c) 2009 Kyle Yetter
7
+ Copyright (c) 2009-2010 Kyle Yetter
8
8
  All rights reserved.
9
9
 
10
10
  Redistribution and use in source and binary forms, with or without
@@ -93,10 +93,13 @@ antlr3/dot.rb::
93
93
  extra utilities to generate DOT map specifications for graphical.
94
94
  representations of ASTs
95
95
 
96
+ @author Kyle Yetter
97
+
96
98
  =end
97
99
 
98
100
  module ANTLR3
99
-
101
+
102
+ # :stopdoc:
100
103
  LIBRARY_PATH = ::File.expand_path(::File.dirname(__FILE__))
101
104
  # :startdoc:
102
105
 
@@ -126,8 +129,27 @@ module ANTLR3
126
129
  raise(bug)
127
130
  end
128
131
 
132
+ @antlr_jar = nil
133
+
134
+ def self.antlr_jar=( path )
135
+ @antlr_jar = path ? File.expand_path( path.to_s ) : path
136
+ end
137
+
129
138
  def self.antlr_jar
130
- path = project_path "java/antlr-full-#{ANTLR_VERSION_STRING}.jar"
139
+ @antlr_jar and return( @antlr_jar )
140
+
141
+ path = project_path "java/antlr-full-#{ ANTLR_VERSION_STRING }.jar"
142
+ if env_path = ENV[ 'RUBY_ANTLR_JAR' ]
143
+ if File.file?( env_path ) then return File.expand_path( env_path ) end
144
+
145
+ warn(
146
+ "#{ __FILE__ }:#{ __LINE__ }: " <<
147
+ "ignoring environmental variable RUBY_ANTLR_JAR (=%p) " % env_path <<
148
+ "as it is not the path to an existing file\n" <<
149
+ " -> trying default jar path %p instead" % path
150
+ )
151
+ end
152
+
131
153
  File.exists?( path ) ? path : nil
132
154
  end
133
155
 
@@ -138,6 +160,8 @@ module ANTLR3
138
160
  # Tree classes are only used by tree parsers or AST-building parsers
139
161
  # Thus, they're not essential for everything ANTLR generates and
140
162
  # are autoloaded on-demand
163
+ autoload :AST, 'antlr3/tree'
164
+
141
165
  tree_classes = [
142
166
  :Tree, :TreeAdaptor, :BaseTree, :BaseTreeAdaptor,
143
167
  :CommonTree, :CommonErrorNode, :CommonTreeAdaptor,
@@ -146,7 +170,7 @@ module ANTLR3
146
170
  :RewriteRuleTokenStream, :RewriteRuleSubtreeStream,
147
171
  :RewriteRuleNodeStream
148
172
  ]
149
- autoload :AST, 'antlr3/tree'
173
+
150
174
  for klass in tree_classes
151
175
  autoload klass, 'antlr3/tree'
152
176
  end
@@ -167,12 +191,16 @@ module ANTLR3
167
191
 
168
192
  end # module ANTLR3
169
193
 
194
+
170
195
  require 'set'
171
196
  require 'antlr3/util'
172
197
  require 'antlr3/version'
173
- require 'antlr3/constants'
174
- require 'antlr3/error'
175
- require 'antlr3/token'
176
- require 'antlr3/recognizers'
177
- require 'antlr3/dfa'
178
- require 'antlr3/streams'
198
+
199
+ unless $0 == 'antlr4ruby'
200
+ require 'antlr3/constants'
201
+ require 'antlr3/error'
202
+ require 'antlr3/token'
203
+ require 'antlr3/recognizers'
204
+ require 'antlr3/dfa'
205
+ require 'antlr3/streams'
206
+ end
@@ -4,7 +4,7 @@
4
4
  =begin LICENSE
5
5
 
6
6
  [The "BSD licence"]
7
- Copyright (c) 2009 Kyle Yetter
7
+ Copyright (c) 2009-2010 Kyle Yetter
8
8
  All rights reserved.
9
9
 
10
10
  Redistribution and use in source and binary forms, with or without
@@ -45,18 +45,26 @@ module Constants
45
45
  # built-in token channel IDs
46
46
 
47
47
  # the channel to which most tokens will be assigned
48
- DEFAULT = DEFAULT_CHANNEL = :default
48
+ DEFAULT = DEFAULT_CHANNEL = DEFAULT_TOKEN_CHANNEL = :default
49
49
 
50
50
  # the channel for tokens which should not be passed to a parser by a token stream
51
51
  HIDDEN = HIDDEN_CHANNEL = :hidden
52
52
 
53
+ # flag used by recognizers during memoization to
54
+ # represent a previous prediction failure
55
+ MEMO_RULE_FAILED = -2
56
+
57
+ # flag used by recognizers during memoization to indicate
58
+ # that the rule has not been memoized yet
59
+ MEMO_RULE_UNKNOWN = -1
60
+
53
61
  # built-in token types used internally by ANTLR3
54
62
 
55
63
  INVALID_TOKEN_TYPE = 0
56
64
 
57
- # End of File / End of Input character and token type
58
65
  EOF = -1
59
66
 
67
+
60
68
  # Imaginary tree-navigation token type indicating the ascent after moving through the
61
69
  # children of a node
62
70
  UP = 3
@@ -74,10 +82,10 @@ module Constants
74
82
  # returning a string "<UNKNOWN: #{type}>" for non-builtin token
75
83
  # types
76
84
  BUILT_IN_TOKEN_NAMES = Hash.new do |h, k|
77
- "<UNKNOWN: #{k}>"
85
+ "<UNKNOWN: #{ k }>"
78
86
  end
79
87
 
80
- BUILT_IN_TOKEN_NAMES.update(
88
+ BUILT_IN_TOKEN_NAMES.update(
81
89
  0 => "<invalid>".freeze, 1 => "<EOR>".freeze,
82
90
  2 => "<DOWN>".freeze, 3 => "<UP>".freeze,
83
91
  -1 => "<EOF>".freeze
data/lib/antlr3/debug.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  =begin LICENSE
5
5
 
6
6
  [The "BSD licence"]
7
- Copyright (c) 2009 Kyle Yetter
7
+ Copyright (c) 2009-2010 Kyle Yetter
8
8
  All rights reserved.
9
9
 
10
10
  Redistribution and use in source and binary forms, with or without
@@ -58,7 +58,7 @@ autoload :EventHub, 'antlr3/debug/event-hub'
58
58
  autoload :TreeAdaptor, 'antlr3/tree/debug'
59
59
  autoload :TreeNodeStream, 'antlr3/tree/debug'
60
60
 
61
- RecognizerSharedState = Struct.new(
61
+ RecognizerSharedState = Struct.new(
62
62
  # the rule invocation depth
63
63
  :rule_invocation_stack,
64
64
  # a boolean flag to indicate whether or not the current decision is cyclic
@@ -101,7 +101,7 @@ generated in debug or profiling mode.
101
101
  =end
102
102
  class RecognizerSharedState
103
103
  def initialize
104
- super([], false, [], false, -1, 0, nil, 0, nil, -1)
104
+ super( [], false, [], false, -1, 0, nil, 0, nil, -1 )
105
105
  # ^-- same as this --v
106
106
  # self.following = []
107
107
  # self.error_recovery = false
@@ -141,9 +141,9 @@ switch.
141
141
  module ParserEvents
142
142
  include ANTLR3::Error
143
143
 
144
- def self.included(klass)
144
+ def self.included( klass )
145
145
  super
146
- if klass.is_a?(::Class)
146
+ if klass.is_a?( ::Class )
147
147
  def klass.debug?
148
148
  true
149
149
  end
@@ -153,16 +153,16 @@ module ParserEvents
153
153
 
154
154
  attr_reader :debug_listener
155
155
 
156
- def initialize(stream, options = {})
157
- @debug_listener = options[:debug_listener] ||= begin
156
+ def initialize( stream, options = {} )
157
+ @debug_listener = options[ :debug_listener ] ||= begin
158
158
  EventSocketProxy.new( self, options ).handshake
159
159
  end
160
- options[:state] ||= Debug::RecognizerSharedState.new
161
- super(stream, options)
162
- if @input.is_a?(Debug::TokenStream)
160
+ options[ :state ] ||= Debug::RecognizerSharedState.new
161
+ super( stream, options )
162
+ if @input.is_a?( Debug::TokenStream )
163
163
  @input.debug_listener ||= @debug_listener
164
164
  else
165
- @input = Debug::TokenStream.wrap(@input, @debug_listener)
165
+ @input = Debug::TokenStream.wrap( @input, @debug_listener )
166
166
  end
167
167
  end
168
168
 
@@ -174,14 +174,14 @@ module ParserEvents
174
174
  @state.cyclic_decision
175
175
  end
176
176
 
177
- def cyclic_decision=(flag)
177
+ def cyclic_decision=( flag )
178
178
  @state.cyclic_decision = flag
179
179
  end
180
180
 
181
181
  # custom attribute writer for debug_listener
182
182
  # propegates the change in listener to the
183
183
  # parser's debugging input stream
184
- def debug_listener=(dbg)
184
+ def debug_listener=( dbg )
185
185
  @debug_listener = dbg
186
186
  @input.debug_listener = dbg rescue nil
187
187
  end
@@ -199,22 +199,22 @@ module ParserEvents
199
199
  # TO-DO: is this pointless?
200
200
  def resync
201
201
  begin_resync
202
- yield(self)
202
+ yield( self )
203
203
  ensure
204
204
  end_resync
205
205
  end
206
206
 
207
207
  def begin_backtrack
208
- @debug_listener.begin_backtrack(@state.backtracking)
208
+ @debug_listener.begin_backtrack( @state.backtracking )
209
209
  end
210
210
 
211
- def end_backtrack(successful)
212
- @debug_listener.end_backtrack(@state.backtracking, successful)
211
+ def end_backtrack( successful )
212
+ @debug_listener.end_backtrack( @state.backtracking, successful )
213
213
  end
214
214
 
215
215
  def backtrack
216
216
  @state.backtracking += 1
217
- @debug_listener.begin_backtrack(@state.backtracking)
217
+ @debug_listener.begin_backtrack( @state.backtracking )
218
218
  start = @input.mark
219
219
  success =
220
220
  begin yield
@@ -223,8 +223,8 @@ module ParserEvents
223
223
  end
224
224
  return success
225
225
  ensure
226
- @input.rewind(start)
227
- @debug_listener.end_backtrack(@state.backtracking, (success rescue nil))
226
+ @input.rewind( start )
227
+ @debug_listener.end_backtrack( @state.backtracking, ( success rescue nil ) )
228
228
  @state.backtracking -= 1
229
229
  end
230
230
 
@@ -240,43 +240,43 @@ module ParserEvents
240
240
  return( symbol )
241
241
  end
242
242
 
243
- def in_rule(grammar_file, rule_name)
243
+ def in_rule( grammar_file, rule_name )
244
244
  @state.rule_invocation_stack.empty? and @debug_listener.commence
245
- @debug_listener.enter_rule(grammar_file, rule_name)
246
- @state.rule_invocation_stack.push(grammar_file, rule_name)
245
+ @debug_listener.enter_rule( grammar_file, rule_name )
246
+ @state.rule_invocation_stack.push( grammar_file, rule_name )
247
247
  yield
248
248
  ensure
249
- @state.rule_invocation_stack.pop(2)
250
- @debug_listener.exit_rule(grammar_file, rule_name)
249
+ @state.rule_invocation_stack.pop( 2 )
250
+ @debug_listener.exit_rule( grammar_file, rule_name )
251
251
  @state.rule_invocation_stack.empty? and @debug_listener.terminate
252
252
  end
253
253
 
254
254
  def rule_invocation_stack
255
- @state.rule_invocation_stack.each_slice(2).to_a
255
+ @state.rule_invocation_stack.each_slice( 2 ).to_a
256
256
  end
257
257
 
258
- def predicate?(description)
258
+ def predicate?( description )
259
259
  result = yield
260
- @debug_listener.semantic_predicate(result, description)
260
+ @debug_listener.semantic_predicate( result, description )
261
261
  return result
262
262
  end
263
263
 
264
- def in_alternative(alt_number)
265
- @debug_listener.enter_alternative(alt_number)
264
+ def in_alternative( alt_number )
265
+ @debug_listener.enter_alternative( alt_number )
266
266
  end
267
267
 
268
- def in_subrule(decision_number)
269
- @debug_listener.enter_subrule(decision_number)
268
+ def in_subrule( decision_number )
269
+ @debug_listener.enter_subrule( decision_number )
270
270
  yield
271
271
  ensure
272
- @debug_listener.exit_subrule(decision_number)
272
+ @debug_listener.exit_subrule( decision_number )
273
273
  end
274
274
 
275
- def in_decision(decision_number)
276
- @debug_listener.enter_decision(decision_number)
275
+ def in_decision( decision_number )
276
+ @debug_listener.enter_decision( decision_number )
277
277
  yield
278
278
  ensure
279
- @debug_listener.exit_decision(decision_number)
279
+ @debug_listener.exit_decision( decision_number )
280
280
  end
281
281
  end
282
282
 
@@ -290,14 +290,14 @@ not already a Debug::TokenStream.
290
290
  =end
291
291
  module TokenStream
292
292
 
293
- def self.wrap(stream, debug_listener = nil)
294
- stream.extend(self)
293
+ def self.wrap( stream, debug_listener = nil )
294
+ stream.extend( self )
295
295
  stream.instance_eval do
296
296
  @initial_stream_state = true
297
297
  @debug_listener = debug_listener
298
298
  @last_marker = nil
299
299
  end
300
- return(stream)
300
+ return( stream )
301
301
  end
302
302
  attr_reader :last_marker
303
303
  attr_accessor :debug_listener
@@ -307,11 +307,11 @@ module TokenStream
307
307
  a = index + 1 # the next position IF there are no hidden tokens in between
308
308
  t = super
309
309
  b = index # the actual position after consuming
310
- @debug_listener.consume_token(t) if @debug_listener
310
+ @debug_listener.consume_token( t ) if @debug_listener
311
311
 
312
312
  # if b > a, report the consumption of hidden tokens
313
313
  for i in a...b
314
- @debug_listener.consume_hidden_token at(i)
314
+ @debug_listener.consume_hidden_token at( i )
315
315
  end
316
316
  end
317
317
 
@@ -330,7 +330,7 @@ module TokenStream
330
330
  def consume_initial_hidden_tokens
331
331
  first_on_channel_token_index = self.index
332
332
  first_on_channel_token_index.times do |index|
333
- @debug_listener.consume_hidden_token at(index)
333
+ @debug_listener.consume_hidden_token at( index )
334
334
  end
335
335
  @initial_stream_state = false
336
336
  end
@@ -341,20 +341,20 @@ module TokenStream
341
341
  ###################################### Stream Methods ######################################
342
342
  ############################################################################################
343
343
 
344
- def look(steps = 1)
344
+ def look( steps = 1 )
345
345
  @initial_stream_state and consume_initial_hidden_tokens
346
- token = super(steps)
347
- @debug_listener.look(steps, token)
346
+ token = super( steps )
347
+ @debug_listener.look( steps, token )
348
348
  return token
349
349
  end
350
350
 
351
- def peek(steps = 1)
352
- look(steps).type
351
+ def peek( steps = 1 )
352
+ look( steps ).type
353
353
  end
354
354
 
355
355
  def mark
356
356
  @last_marker = super
357
- @debug_listener.mark(@last_marker)
357
+ @debug_listener.mark( @last_marker )
358
358
  return @last_marker
359
359
  end
360
360
 
@@ -379,14 +379,14 @@ module EventListener
379
379
  # The grammarFileName allows composite grammars to jump around among
380
380
  # multiple grammar files.
381
381
 
382
- def enter_rule(grammar_file, rule_name)
382
+ def enter_rule( grammar_file, rule_name )
383
383
  # do nothing
384
384
  end
385
385
 
386
386
  # Because rules can have lots of alternatives, it is very useful to
387
387
  # know which alt you are entering. This is 1..n for n alts.
388
388
 
389
- def enter_alternative(alt)
389
+ def enter_alternative( alt )
390
390
  # do nothing
391
391
  end
392
392
 
@@ -397,7 +397,7 @@ module EventListener
397
397
  # The grammarFileName allows composite grammars to jump around among
398
398
  # multiple grammar files.
399
399
 
400
- def exit_rule(grammar_file, rule_name)
400
+ def exit_rule( grammar_file, rule_name )
401
401
  # do nothing
402
402
  end
403
403
 
@@ -476,7 +476,7 @@ module EventListener
476
476
 
477
477
  def backtrack( level )
478
478
  begin_backtrack( level )
479
- successful = yield(self)
479
+ successful = yield( self )
480
480
  end_backtrack( level, successful )
481
481
  end
482
482
 
@@ -567,7 +567,7 @@ module EventListener
567
567
 
568
568
  def resync
569
569
  begin_resync
570
- yield(self)
570
+ yield( self )
571
571
  end_resync
572
572
  end
573
573
 
@@ -670,16 +670,16 @@ module EventListener
670
670
  # do nothing
671
671
  end
672
672
 
673
- def examine_rule_memoization(rule)
673
+ def examine_rule_memoization( rule )
674
674
  # do nothing
675
675
  end
676
676
 
677
- def on(event_name, &block)
677
+ def on( event_name, &block )
678
678
  sclass = class << self; self; end
679
- sclass.send(:define_method, event_name, &block)
679
+ sclass.send( :define_method, event_name, &block )
680
680
  end
681
681
 
682
- EVENTS = [
682
+ EVENTS = [
683
683
  :add_child, :backtrack, :become_root, :begin_backtrack,
684
684
  :begin_resync, :commence, :consume_hidden_token,
685
685
  :consume_node, :consume_token, :create_node, :end_backtrack,