最近比较关注Programming Language Processor方面的书,有大部头深入浅出的龙书,也有精辟的Model Checking,不过真要落到实处,还是需要从一行行代码开始写起。软件理论大多晦涩,现有的一些工具实现方式大多古老(比如SPIN是YACC+C,图形上使用的tk/tcl),要开源或者产品化,都需要采用现代化的手段实现,ANTLR就是从取代yacc开始提出来的,不过现在已经不止是取代了,详情可以去www.antlr.org上看。
Terence Parr之前写过ANTLR的专著,不过有点搞笑的是,这本书更像 是一本ANTLR的user manual,对于ANTLR的内部设计思想讲得不多,读者看完之后,只是 对ANTLR这门“DSL”语言有所印象,对于真正要实现一门自己的“DSL”——也就是ANTLR的主要用途——印象并不深刻。
Terence或许听到了读者这样的困惑抱怨,于是很快又出了这本书——书名里的pattern实际上就是实现自己的DSL时 可以重用的一些内部设计思想。
书还没看完,很喜欢这样的做事风格。希望学到一些实用的东西,为PLP打基础,相信这是今后软件理论和实践结合的重要领域。
补充:相关领域开源的LLVM也很火,主要由Apple公司赞助,在Xcode产品线上应用很多,主要面向代码生成、优化。相比而言,ANTLR算是轻量级的,用途更专一一些。