我需要解析一种类似于 Java 的最小化版本的语言。由于效率是最重要的因素,所以我选择手写解析器而不是像 GOLD、bison 和 yacc 这样的 LRAR 解析器生成器。
但是我找不到优秀的手写解析器背后的理论。似乎只有关于这些生成器及其背后机制的教程。
我必须放弃使用正则表达式吗?因为我可以想象它们比手写的 tokiners 慢。
有人知道手写解析的好类(class)或教程吗?
最佳答案
如果有帮助,这里是(不是类(class)或教程,而是)手写解析器的示例:https://github.com/tabatkins/css-parser (然而,它被明确编码为与规范正确/简单对应,而不是为高性能而优化)。
我预计,更大的问题是制定解析规范。解析器规范的示例包括 http://dev.w3.org/csswg/css3-syntax/以及用于解析 HTML5 的类似方法。
使用解析器生成器的先决条件是语言语法已由语法定义(解析器生成器支持语法格式),而不是由解析算法定义。
关于C++解析代码(手写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858866/