module ANTLR3::Debug::ParserEvents
ParserEvents
adds debugging event hook methods and functionality that is required by the code ANTLR generated when called with the -debug
switch.
Attributes
debug_listener[R]
Public Class Methods
included( klass )
click to toggle source
Calls superclass method
# File lib/antlr3/debug.rb, line 146 def self.included( klass ) super if klass.is_a?( ::Class ) def klass.debug? true end end end
new( stream, options = {} )
click to toggle source
Calls superclass method
# File lib/antlr3/debug.rb, line 158 def initialize( stream, options = {} ) @debug_listener = options[ :debug_listener ] ||= begin EventSocketProxy.new( self, options ).handshake end options[ :state ] ||= Debug::RecognizerSharedState.new super( stream, options ) if @input.is_a?( Debug::TokenStream ) @input.debug_listener ||= @debug_listener else @input = Debug::TokenStream.wrap( @input, @debug_listener ) end end
Public Instance Methods
backtrack() { || ... }
click to toggle source
# File lib/antlr3/debug.rb, line 217 def backtrack @state.backtracking += 1 @debug_listener.begin_backtrack( @state.backtracking ) start = @input.mark success = begin yield rescue BacktrackingFailed then false else true end return success ensure @input.rewind( start ) @debug_listener.end_backtrack( @state.backtracking, ( success rescue nil ) ) @state.backtracking -= 1 end
begin_backtrack()
click to toggle source
# File lib/antlr3/debug.rb, line 209 def begin_backtrack @debug_listener.begin_backtrack( @state.backtracking ) end
begin_resync()
click to toggle source
Calls superclass method
# File lib/antlr3/debug.rb, line 191 def begin_resync @debug_listener.begin_resync super end
cyclic_decision=( flag )
click to toggle source
# File lib/antlr3/debug.rb, line 179 def cyclic_decision=( flag ) @state.cyclic_decision = flag end
cyclic_decision?()
click to toggle source
# File lib/antlr3/debug.rb, line 175 def cyclic_decision? @state.cyclic_decision end
debug_listener=( dbg )
click to toggle source
custom attribute writer for debug_listener
propegates the change in listener to the parser’s debugging input stream
# File lib/antlr3/debug.rb, line 186 def debug_listener=( dbg ) @debug_listener = dbg @input.debug_listener = dbg rescue nil end
end_backtrack( successful )
click to toggle source
# File lib/antlr3/debug.rb, line 213 def end_backtrack( successful ) @debug_listener.end_backtrack( @state.backtracking, successful ) end
end_resync()
click to toggle source
Calls superclass method
# File lib/antlr3/debug.rb, line 196 def end_resync @debug_listener.end_resync super end
in_alternative( alt_number )
click to toggle source
# File lib/antlr3/debug.rb, line 266 def in_alternative( alt_number ) @debug_listener.enter_alternative( alt_number ) end
in_decision( decision_number ) { || ... }
click to toggle source
# File lib/antlr3/debug.rb, line 277 def in_decision( decision_number ) @debug_listener.enter_decision( decision_number ) yield ensure @debug_listener.exit_decision( decision_number ) end
in_rule( grammar_file, rule_name ) { || ... }
click to toggle source
# File lib/antlr3/debug.rb, line 245 def in_rule( grammar_file, rule_name ) @state.rule_invocation_stack.empty? and @debug_listener.commence @debug_listener.enter_rule( grammar_file, rule_name ) @state.rule_invocation_stack.push( grammar_file, rule_name ) yield ensure @state.rule_invocation_stack.pop( 2 ) @debug_listener.exit_rule( grammar_file, rule_name ) @state.rule_invocation_stack.empty? and @debug_listener.terminate end
in_subrule( decision_number ) { || ... }
click to toggle source
# File lib/antlr3/debug.rb, line 270 def in_subrule( decision_number ) @debug_listener.enter_subrule( decision_number ) yield ensure @debug_listener.exit_subrule( decision_number ) end
missing_symbol( error, expected_type, follow )
click to toggle source
Calls superclass method
# File lib/antlr3/debug.rb, line 239 def missing_symbol( error, expected_type, follow ) symbol = super @debug_listener.consume_node( symbol ) return( symbol ) end
predicate?( description ) { || ... }
click to toggle source
# File lib/antlr3/debug.rb, line 260 def predicate?( description ) result = yield @debug_listener.semantic_predicate( result, description ) return result end
report_error( exc )
click to toggle source
Calls superclass method
# File lib/antlr3/debug.rb, line 233 def report_error( exc ) ANTLR3::RecognitionError === exc and @debug_listener.recognition_exception( exc ) super end
resync() { |self| ... }
click to toggle source
TO-DO: is this pointless?
# File lib/antlr3/debug.rb, line 202 def resync begin_resync yield( self ) ensure end_resync end
rule_invocation_stack()
click to toggle source
# File lib/antlr3/debug.rb, line 256 def rule_invocation_stack @state.rule_invocation_stack.each_slice( 2 ).to_a end
rule_level()
click to toggle source
# File lib/antlr3/debug.rb, line 171 def rule_level @state.rule_invocation_stack.length end