clo*_*ead 11 parsing reentrancy
谁可以给我解释一下这个?特别是之间的区别:
http://github.com/whymirror/greg和http://piumarta.com/software/peg/
前者是后者的可重入版本.
JUS*_*ION 16
最简单的重入解析器不使用全局变量,因此可以同时激活多个实例(不一定与线程相关,但这是我怀疑的主要用例).
但是,在更复杂的用例中,您可以使用解析器实际解析同一源文档中的多种语言.例如,考虑一个JSP解析器,它必须解析同一文件中的Java代码和HTML.您可以制作两个解析器并在它们之间切换,而不是制作一个涵盖两种语言的大型解析器(可能非常不切实际).但是,如果您的解析器使用它们之间的全局状态切换可能会有问题.一个可重入的解析器允许您轻松地在解析器之间切换,或者以协程的形式,或者在简单的"解析器-A调用解析器-B中嵌入代码,然后返回"情况.
编辑添加:
如果您想要一种极端形式的可重入解析,请查看解析器组合器(如Parsec),其中"语法"中的每个子表达式都是完全独立的解析器.你通过组合无数的小解析器来构建一个大的解析器.
| 归档时间: |
|
| 查看次数: |
2967 次 |
| 最近记录: |