我正在尝试使用Treetop解析 ERB 文件。我需要能够处理如下行:
<% ruby_code_here %>
<%= other_ruby_code %>
由于 Treetop 是用 Ruby 编写的,并且您使用 Ruby 编写 Treetop 语法,Treetop 中是否已经有一些现有的方式可以说“嘿,在这里查找 Ruby 代码,并给我它的故障”,而无需我编写单独的规则来处理Ruby 语言的所有部分?我正在寻找一种方法,在我的.treetop
语法文件中,有类似的东西:
rule erb_tag
"<%" ruby_code "%>" {
def content
...
end
}
end
ruby_code
Treetop 提供的一些规则在哪里处理。
编辑: 其他人使用 Ruby-lex 解析了 ERB,但我在尝试重现他所做的事情时遇到了错误。rlex 程序在生成解析器类时没有生成完整的类。
编辑:对,所以你很沮丧,但感谢您提供的信息。:) 对于我的硕士项目,我正在编写一个需要使用 ERB 作为输入的测试用例生成器。幸运的是,就我的目的而言,我只需要识别 ERB 代码中的一些内容,例如if
语句和其他条件以及循环。我想我可以提出 Treetop 语法来匹配它,但需要注意的是它对于 Ruby 来说并不完整。