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

标签 ruby treetop

我有一个文件想用 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吗?我一直在查看树顶文档,但没有找到任何确定的信息。

最佳答案

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

我不完全确定如果不求助于 C 是否有可能,即使那样可能会有一些方法的语义使得它们根本无法一致地实现,但也许 Treetop 使用的 String 方法的子集是这样的这是易于管理的。但是,我认为 Josh Voigts 的回答是最务实的。

关于ruby - 我可以使用 Treetop 来解析 IO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655658/

相关文章:

Ruby 哈希数组;只保留包含特定键=>值对的第一个元素

ruby-on-rails - Rails 4 Mailer、Amazon S3 和内联图像

ruby - treetop 上最简单的规则不起作用

ruby - 规则的顺序在 TreeTop 中重要吗?

ruby - 如何在 treetop 钉中定义 {min,max} 匹配

ruby - Treetop 的 Vim 缩进文件(Ruby 解析器)

ruby-on-rails - 部署到 slicehost 时出现 Capistrano 错误

Ruby:while 循环之前和之后声明变量的区别?

ruby-on-rails - 如何为初始化变量创建验证?

ruby - 树顶基本解析和正则表达式使用