3

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

rule document
  category_listing*
end

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

Treetop只能用来解析Strings吗?我一直在浏览树顶文档,但没有找到任何确定的东西。

4

1 回答 1

0

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

我不完全确定这是否可能在不诉诸 C 的情况下实现,即便如此,也可能存在语义使得它们根本无法一致实现的方法,但也许 Treetop 使用的 String 方法的子集是可管理的. 但是,我想说 Josh Voigts 的回答是最务实的。

于 2012-12-25T11:01:07.837 回答