首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Treetop语法中识别Ruby代码

在Treetop语法中识别Ruby代码
EN

Stack Overflow用户
提问于 2010-10-29 18:28:05
回答 4查看 760关注 0票数 9

我试图使用树梢来解析一个ERB文件。我需要能够处理以下几行:

代码语言:javascript
复制
<% ruby_code_here %>
<%= other_ruby_code %>

既然Treetop是用Ruby编写的,而您是用Ruby编写Treetop语法的,那么Treetop中是否已经有一些方法可以说“嘿,在这里查找Ruby代码,并给我它的分解”,而不用我编写单独的规则来处理Ruby语言的所有部分?我正在寻找一种方法,在我的.treetop语法文件中,有这样的方法:

代码语言:javascript
复制
rule erb_tag
  "<%" ruby_code "%>" {
    def content
      ...
    end
  }
end

其中ruby_code由Treetop提供的一些规则处理。

编辑: 其他人使用Ruby解析了ERB,但是我在复制他所做的事情时出错了。rlex程序在生成解析器类时没有生成完整的类。

编辑:是对的,所以你们都很沮丧,但是谢谢你们的信息。)对于我的硕士项目,我正在编写一个测试用例生成器,需要使用ERB作为输入。幸运的是,就我的目的而言,我只需要识别ERB代码中的一些内容,比如if语句和其他条件以及循环。我想我可以想出与此相匹配的Treetop语法,但请注意,对于Ruby来说,它是不完整的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-29 20:41:44

据我所知,还没有人为Ruby创建Treetop语法。(事实上,除了MRI和YARV附带的YACC语法之外,没有人能够为Ruby创建任何语法。)我知道Treetop的作者已经做了好几年的工作,但这并不是一件简单的事情。获得XRuby中使用的ANTLR语法耗时5年左右,至今仍未完全兼容。

Ruby的语法异常复杂,令人难以置信。

票数 11
EN

Stack Overflow用户

发布于 2010-10-29 18:43:47

不是

我不这样认为。在树顶中指定复杂而微妙的Ruby语法将是一个重大的成就,但这应该是可能的。

真正的红宝石语法是用雅克写的。现在,yacc是一个传奇的工具,但树顶生成了一个更强大的类解析器,所以它应该是可能的,也许有人已经这样做了。

这不是下午的项目。

票数 2
EN

Stack Overflow用户

发布于 2010-10-31 18:06:18

也许我在开玩笑,但如果yacc没有ruby那么复杂,那么您可以在树顶实现yacc,而不是使用为yacc创建的ruby语法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4054761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档