lighttpd的配置文件需要用到lemon来分析,lemon是一个LALR(1)的语法分析生成器。
本来以为要用到LALR(1)的知识,刚好上个学期学了编译原理这门课,但是由于课时
不够,Bottom-Up Parsing只讲了LR(0)和SLR(1),LR(1)和LALR(1)没讲到,所以在
尝试使用lemon之前特意花了一个小时去看了LR(1)和LALR(1)的知识。好在基础的
知识还没有还给老师,所以理解起来没有什么困难。不过看完lemon的文档之后发现
只需要知道一点编译原理的知识就可以了,不熟悉也问题不大。
Prepare
先到这里把lemon.c和lempar.c下载下来,再打开Documentation来学习一下。
其中lemon.c就是整个lemon parser generator的源代码了,而lempar.c则是
lemon默认使用的代码生成模板(从源代码中看出来的),一般来说用这个就
可以了。编译的话很简单:
$gcc lemon.c -o lemon