This class handles only scanner events, which are dispatched in the 'right' order (same with input).
# File ext/ripper/lib/ripper/filter.rb, line 24 def initialize(src, filename = '-', lineno = 1) @__lexer = Lexer.new(src, filename, lineno) @__line = nil @__col = nil @__state = nil end
Creates a new Ripper::Filter
instance, passes parameters src
, filename
, and lineno
to Ripper::Lexer.new
The lexer is for internal use only.
# File ext/ripper/lib/ripper/filter.rb, line 59 def parse(init = nil) data = init @__lexer.lex.each do |pos, event, tok, state| @__line, @__col = *pos @__state = state data = if respond_to?(event, true) then __send__(event, tok, data) else on_default(event, tok, data) end end data end
Starts the parser. init
is a data accumulator and is passed to the next event handler (as of Enumerable#inject
).
This method is called when some event handler is undefined. event
is :on_XXX, token
is the scanned token, and data
is a data accumulator.
The return value of this method is passed to the next event handler (as of Enumerable#inject
).
Ruby Core © 1993–2020 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.