обнаружение ошибок при разборе Rubi Ripper - PullRequest
1 голос
/ 10 октября 2011

Кто-нибудь выяснил, как обнаруживать ошибки, когда в библиотеку Ruby ripper передается искаженный ввод?

ruby-1.9.2-p180 :002 > Ripper.sexp("array[1 2]")
 => [:program, [:@int, "2", [1, 8]]] 
ruby-1.9.2-p180 :003 >

Я немного покопался в источниках и обнаружил #compile_error, #warning, #warn,и #yydebug, но пока не ясно, как заставить работать любой из этих методов.Без сомнения, здесь есть простой ответ.

1 Ответ

0 голосов
/ 20 октября 2011

Мне кажется, я где-то читал, что расширение ruby ​​ripper все еще находится в стадии разработки active , поэтому я не удивлюсь, если еще никто не удосужился подключиться к.

Ripper # yydebug работает в Ruby 1.9.3, и он может работать в 1.9.2, и я просто что-то делал не так.Но он выводит отладочную информацию, только малая часть которой будет связана с ошибкой.

Это простой способ обнаружения ошибок:

require 'ripper'
require 'pp'

class SexpBuilderPP < Ripper::SexpBuilderPP
  def on_parse_error(*)
    raise "parse error!"
  end
end

while input = $stdin.gets
  pp SexpBuilderPP.new(input).parse
end

Существует несколько событий, которые содержат "ошибка "в имени: on_alias_error, on_assign_error, on_class_name_error, on_param_error и on_parse_error.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...