我有一个我想用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
吗?我一直在寻找树梢文档,但没有找到任何确定的东西。
答案 0 :(得分:0)
据我所知,从源代码中可以看出,你确实只能传入一个字符串。所以你的选择基本上要么在他的评论中遵循Josh Voigts的想法,要么实现一些反向的IOString:有一个String接口,但'lazily'从File中获取请求的内容。
我不完全确定是否可以在不使用C的情况下实现这一点,即使这样,也可能存在语义无法一致地实现的方法,但也许Treetop使用的String方法的子集是这样的它是可管理的。但是,我会说Josh Voigts的回答是最务实的。