Как я могу разобрать несколько строк, используя ruby_parser?

Я пытаюсь использовать ruby_parser для анализа многослойного кода Ruby в файле.

Допустим, я хочу разобрать следующий код:

def foo
  2 + 2
end

Когда я делаю следующее, я получаю сообщение об ошибке:

RubyParser.new.parse("def foo")
#=> Racc::ParseError: (string):1 :: parse error on value "$end" ($end)

потому что строка не содержит end,

Я прохожу линии по одному, используя File.readlines(file),

В идеале я хотел бы указать имя файла RubyParser, но я не могу понять это, и там очень мало документации.

1 ответ

Решение

Вы не можете передавать построчно. Передайте весь код сразу.

RubyParser.new("def foo\n  2 + 2\nend")

или же

RubyParser.new(File.read(file))
Другие вопросы по тегам