什么是重入式解析器?
问题描述:
有人可以向我解释这个吗?特别的区别:什么是重入式解析器?
http://github.com/whymirror/greg和http://piumarta.com/software/peg/
后来的前者是重入版本。
答
最简单的重入式解析器不使用全局变量,因此可以同时有多个活动实例(不一定与线程相关,但这是我怀疑的主要用例)。
但是,在更复杂的用例中,您可以使用解析器来解析相同源文档中的多种语言。例如,考虑一个JSP解析器,它必须在同一个文件中解析Java代码和HTML。与其制作一个涵盖两种语言的巨大解析器(可能非常不切实际),您可以制作两个解析器并在它们之间切换。但是,如果您的解析器在它们之间使用全局状态切换可能会有问题。重入式语法分析器允许您轻松地在语法分析器之间切换,无论是以协程的形式,还是简单的“解析器 - 调用解析器-B用于嵌入式代码然后返回”的情况。
编辑补充:
如果你想重入解析的极端形式,看看解析器组合(如秒差距)这里的“语法”每个子表达式一个单独的解析器完全。通过组合大量的小型分析器来构建一个大型的分析器。
答
要折返,计算机程序或 例行:
- 必须保持无静电(或全球)非恒定的数据。
- 不得将地址返回到静态(或全局)非常数数据。
- 只能在由调用者提供给它的数据上工作。
- 不能依靠锁定单身资源。
不一定与线程安全性有关,但解析文档中的多个语法。