Class: RubyParser

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_parser_extras.rb

Overview

RubyParser is a compound parser that first attempts to parse using the 1.9 syntax parser and falls back to the 1.8 syntax parser on a parse error.

Defined Under Namespace

Classes: SyntaxError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRubyParser

Returns a new instance of RubyParser.



1324
1325
1326
1327
1328
# File 'lib/ruby_parser_extras.rb', line 1324

def initialize
  @p18 = Ruby18Parser.new
  @p19 = Ruby19Parser.new
  @p20 = Ruby20Parser.new
end

Class Method Details

.for_current_rubyObject



1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
# File 'lib/ruby_parser_extras.rb', line 1347

def self.for_current_ruby
  case RUBY_VERSION
  when /^1\.8/ then
    Ruby18Parser.new
  when /^1\.9/ then
    Ruby19Parser.new
  when /^2.0/ then
    Ruby20Parser.new
  else
    raise "unrecognized RUBY_VERSION #{RUBY_VERSION}"
  end
end

Instance Method Details

#process(s, f = "(string)", t = 10) ⇒ Object Also known as: parse

parens for emacs sigh



1330
1331
1332
1333
1334
1335
1336
1337
1338
# File 'lib/ruby_parser_extras.rb', line 1330

def process(s, f = "(string)", t = 10) # parens for emacs *sigh*
  @p20.process s, f, t
rescue Racc::ParseError, RubyParser::SyntaxError
  begin
    @p19.process s, f, t
  rescue Racc::ParseError, RubyParser::SyntaxError
    @p18.process s, f, t
  end
end

#resetObject



1342
1343
1344
1345
# File 'lib/ruby_parser_extras.rb', line 1342

def reset
  @p18.reset
  @p19.reset
end