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