【发布时间】:2010-01-16 18:48:06
【问题描述】:
我想使用 Ragel 使用状态机解析连续的字节流(来自套接字)
但是,我发现的所有示例要么一次性解析完整文件(如 the Gherkin lexer,要么使用 Ragels C 目标(如 mongrel HTTP1.1 Parser)
我正在寻找一些关于如何实例化 Ragel 状态机然后向其添加字节以保持现有状态不变的建议或示例。
我正在寻找的最终界面类似于:
parser = MyStreamParser.new(Grammar)
parser.on_token { |t| puts t.inspect }
# I can't parse lines seperately because tokens can span multiple lines.
$stdin.each_line do |line|
parser.add(line)
end
非常感谢有关如何在 Ragel 中执行此操作的任何建议。我宁愿使用它也不愿手动编写另一个状态机。
也许 Ragel 不是正确的工具?如果不是:我应该改用什么?
【问题讨论】:
标签: ruby parsing state-machine ragel