自20世纪五六十年代以来,语法分析器的构造一直是编译技术中最炙手可热的话题之一。虽然它日趋完美,但是,这似乎并没有打消人们研究的热情。无论是从构造技术,还是从形式语言理论而言,关于语法分析器的资源都是最丰富的。从早期的递归下降分析器到近乎完美的LR(k)分析器,它承载的更像是一部完整的编译技术发展史。
与词法分析器的构造类似,自动生成技术同样适用于构造语法分析器。与Lex完美结合的就是Yacc (yet another compiler compiler),它是基于LR分析法实现的自动生成工具。如果读者需要了解更多关于Yacc的信息,可以访问http://dino saur.compilertools.net/y acc/。
这里,笔者推荐一个更有效的自动生成工具--ANTLR。从某种程度而言,ANTLR可能比Yacc更实用,只不过ANTLR的诞生年代较晚,因此,不如Yacc那样著名。ANTLR是基于LL(k)分析法实现的自动生成工具,它生成的语法分析器可读性较好,而且执行效率也不错,还可以自动生成AST。在现代编译器设计中,ANTLR已经逐渐被设计者接受。读者可以访问ANTLR的主页http://www.antlr.org/,以获取更多的资料。当然,与Yacc相比,ANTLR凸现的是其灵活性,而Yacc就显得更学术派。
l、语言与机器:计算机科学理论导论 Thomas A.Sudkamp 机械工业出版社
说明:这本书重点介绍了形式语言相关的话题,包括卜下文无关文法、下推自动机、图灵机、乔姆斯基层次、LL(k)文法等。
2、Yacc: Yet Another Compiler Compiler Johnson
说明:可以访问http://dinosaur.compilertools.net/yacc/,以获得yace的更多信息。
3、Bison, The YACC-compatile Parser Generator Donnelly,R. Stallman
说明:可以访问http://www.gnu.org/software/bison/manual/,以获得Bison的更多信息。
4、A programmer-friendly LL(1) parser generator D.Grune,C. Jacobs
说明:这是一个基于LL(1)实现的语法分析器的生成器,可以访问http://www.cs.vu.nl/-ceriel/LLgen.html,以获取更多的信息。(www.daowen.com)
5、形式语言与自动机导论 Peter Linz 机械工业出版社
说明:这是形式语言理论方面的经典著作,目前被很多国内高校选作形式语言课程的教材。
6、Bibliography on Syntax Error Handling in Language Translation Systems J.A.Dain
说明:论文详细阐述了语法分析出错处理的相关技术,可以访问http://cornpilers.iecc.com/comparch/article/91 -04-050。
7、Report on the Algorithmic Language Algol 60 Peter Naur, et al_
说明:论文详细阐述了文法描述形式在Algol 60设计中的应用。
8、Three models for the description of language N.Chomsky
说明:Chomsky在论文中详细阐述了卜下文无关文法的相关内容,当然,其最初的目的只是作为自然语言研究的一个分支。
9、编译原理及实践 Kenneth C.Louden 机械工业出版社
说明:该书描述了一个小型编译器实例--TINY,与本书的Neo Pascal是一脉相承的,值得初学者研究。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。