распознать код Ruby в грамматике Treetop

Я пытаюсь использовать Treetop для анализа файла ERB. Мне нужно уметь обрабатывать такие строки, как следующие:

<% ruby_code_here %>
<%= other_ruby_code %>

Поскольку Treetop написан на Ruby, а вы пишете грамматики Treetop на Ruby, существует ли уже существующий способ в Treetop сказать: «Эй, поищите здесь код Ruby и дать мне его разбивку "без необходимости писать отдельные правила для обработки всех частей языка Ruby? Я ищу способ в моем файле грамматики .treetop иметь что-то вроде:

rule erb_tag
  "<%" ruby_code "%>" {
    def content
      ...
    end
  }
end

Где ruby_code обрабатывается некоторыми правилами, предоставляемыми Treetop.

Edit : кто-то другой проанализировал ERB с помощью Ruby-lex, но я получил ошибки при попытке воспроизвести то, что он сделал. Программа rlex не создала полный класс, когда сгенерировала класс парсера.

Edit: правильно, так что вы очень удручаете, но спасибо за информацию. :) Для своего магистерского проекта я пишу генератор тестовых примеров, который должен работать с ERB в качестве входных данных. К счастью, для моих целей мне нужно распознать только несколько вещей в коде ERB, такие как операторы if и другие условные выражения, а также циклы. Я думаю, что смогу придумать грамматику Treetop, чтобы соответствовать этому, с оговоркой, что она не полная для Ruby.

8
задан Community 23 May 2017 в 10:29
поделиться