我有一个要用Treetop解析的文件。如果我想解析整个东西,我会使用
rule document
category_listing*
end我并不是真的想一次将整个文件读入内存。我知道我可以设置解析器一次解析一个category_listing (使用#consume_all_input = false和#root = :category_listing),这就解决了一半的问题。但是,看起来#parse希望传递一个String (当我试图传递一个File时,它肯定会失败),这使得通过category_listing读取和解析category_listing的想法听起来像是一个PITA。
Treetop只能用于解析String%s吗?我已经翻遍了树顶文档,但没有找到任何明确的东西。
发布于 2012-12-25 19:01:08
据我所知,从源代码来看,您实际上只能传入一个字符串。因此,你的选择基本上是要么遵循Josh Voigts在他的评论中的想法,要么实现某种反向IOString:具有String接口的东西,但“懒惰地”从文件中获取所请求的内容。
如果不求助于C,我甚至不能完全确定这是否可能,即使这样,也可能有一些方法的语义无法一致地实现,但也许Treetop使用的字符串方法的子集是可管理的。然而,我想说Josh Voigts的答案是最务实的。
https://stackoverflow.com/questions/13655658
复制相似问题