我可以使用Treetop来解析IO吗?

时间:2012-12-01 02:02:37

标签: ruby treetop

我有一个我想用Treetop解析的文件。如果我想解析整个事情,我会使用

rule document
  category_listing*
end

我真的不想立刻将整个文件读入内存。我知道我可以设置解析器一次解析一个category_listing(使用#consume_all_input = false#root = :category_listing),这是问题的一半。但是,看起来#parse期望传递String(当我尝试将其传递给File时它肯定会失败),这使得读取和解析{{1 } category_listing听起来像PITA。

Treetop只能用于解析category_listing吗?我一直在寻找树梢文档,但没有找到任何确定的东西。

1 个答案:

答案 0 :(得分:0)

据我所知,从源代码中可以看出,你确实只能传入一个字符串。所以你的选择基本上要么在他的评论中遵循Josh Voigts的想法,要么实现一些反向的IOString:有一个String接口,但'lazily'从File中获取请求的内容。

我不完全确定是否可以在不使用C的情况下实现这一点,即使这样,也可能存在语义无法一致地实现的方法,但也许Treetop使用的String方法的子集是这样的它是可管理的。但是,我会说Josh Voigts的回答是最务实的。