什么是重入式解析器?

问题描述:

有人可以向我解释这个吗?特别的区别:什么是重入式解析器?

http://github.com/whymirror/greghttp://piumarta.com/software/peg/

后来的前者是重入版本。

最简单的重入式解析器不使用全局变量,因此可以同时有多个活动实例(不一定与线程相关,但这是我怀疑的主要用例)。

但是,在更复杂的用例中,您可以使用解析器来解析相同源文档中的多种语言。例如,考虑一个JSP解析器,它必须在同一个文件中解析Java代码和HTML。与其制作一个涵盖两种语言的巨大解析器(可能非常不切实际),您可以制作两个解析器并在它们之间切换。但是,如果您的解析器在它们之间使用全局状态切换可能会有问题。重入式语法分析器允许您轻松地在语法分析器之间切换,无论是以协程的形式,还是简单的“解析器 - 调用解析器-B用于嵌入式代码然后返回”的情况。


编辑补充:

如果你想重入解析的极端形式,看看解析器组合(如秒差距)这里的“语法”每个子表达式一个单独的解析器完全。通过组合大量的小型分析器来构建一个大型的分析器。

From wiki

要折返,计算机程序或 例行:

  • 必须保持无静电(或全球)非恒定的数据。
  • 不得将地址返回到静态(或全局)非常数数据。
  • 只能在由调用者提供给它的数据上工作。
  • 不能依靠锁定单身资源。

不一定与线程安全性有关,但解析文档中的多个语法。