【发布时间】:2011-05-02 13:41:29
【问题描述】:
我正在尝试使用 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 提供的一些规则处理。
编辑: someone else 使用 Ruby-lex 解析了 ERB,但我在尝试重现他所做的事情时遇到了错误。 rlex 程序在生成解析器类时没有生成完整的类。
编辑:是的,所以你们很沮丧,但感谢您提供的信息。 :) 对于我的硕士项目,我正在编写一个需要使用 ERB 作为输入的测试用例生成器。幸运的是,就我的目的而言,我只需要识别 ERB 代码中的一些内容,例如 if 语句和其他条件以及循环。我想我可以提出 Treetop 语法来匹配它,但需要注意的是它对于 Ruby 来说并不完整。
【问题讨论】:
标签: ruby parsing grammar erb treetop