wssccc


我们在世纪末的流光中追寻过往,追寻那些渐渐模糊的面容


最近在整parser

其实是在整一个编译器一样的东西,不过编译器前前后后乱七八糟的太多,我也不确定写完之后它会是什么样子(也可能是个解释器)。
不过前两个部分是妥妥儿的了,所以暂且称之为parser。

和一般的parser不同,这个parser既不是针对特定语言手写的,也不是parser工具生成的。
它可以读入词法描述和语法描述,然后再开始parse。

语法分析使用了LALR(1)。本来是准备用parser组合子的,但是java不支持lambda,调试起来也麻烦,
当然最重要的原因是不支持左递归……

现在语法分析器已经可以支持error符号的错误恢复,和空产生式了。
试用了一些s-exp的语法,工作的还挺好的样子

一直就想做这个东西,后来学编译原理的时候,老师只让我们做了SLR(1)的实验,觉得局限很大,
后来看到这个系列文章一个链接
跟着做了做,发现里面有很多问题,比如构造正则表达式的DFA处理unicode时,比如使用的解析器组合子方法本身的问题等等。

去年这个时候开始关注王垠,最近抽空读了很多他的博客,虽然给人一种“无法交流感”,但是他有很多十分独到的见解。
www.yinwang.org