Я пытаюсь использовать 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.