Parser combinator 在C++里的DSL

如果对编译原理稍微有了解, 相信你一定知道语法, 语法分析(Parsing)和语法分析算法, 也见过语法分析器(Parser). 当需要对某个语言进行处理时语法分析是必不可少的阶段, 可是呢, 实现语法却很繁琐, 就算是递归下降算法LL家族在语法较复杂的时候实现也会变得很繁琐单调, 更别说对编码不友好的LR家族算法了. 很多小伙伴会选择使用语法器生成器(Parser generator)来编译产生语法分析器, 输入文法和相关的操作输出一个语法分析器的源码. 这是其中一种很不错的办法, 相信大家都知道, 这里呢介绍另一种比较少被了解的办法: 语法分析器组合子(Parser combinator).

Continue reading