10/29/2009

some info about compiler front end development

水木的CS_ARCH版有人在问一个关于Yacc&Lex资料的问题,碰巧知道一些情况,顺便回答了几句。似乎还是有些有用的信息,故转贴在此:

============================================================
============================================================

前段时间用bison和flex做过一个语言的前端.

flex/lex的文档,看"Lex - A Lexical Analyzer Generator "应该够了.

bison manual确实非常详细,不过还是建议你看看OReilly那本lex & yacc 2e:
一来,可以帮你更好理解这些工具,特别是处理复杂的问题时很有用
二来,上面有个简单的sql parser实例,可以照葫芦画瓢当作练习

网上最好的资料莫过于: http://dinosaur.compilertools.net/ 关于flex/bison, lex/yacc的方方面面都有.

lex & yacc那本书国内似乎有人翻译过,不过绝版了,我当时是在taobao上买的翻印版.

现在用flex/bison从头做东西的似乎不多了,这两个工具的维护似乎也跟不上。比如flex对unicode的支持就是个比较麻烦的问题,后端支持的语言也不多。

你如果从头开始做的话,可以考虑试试antlr(http://www.antlr.org),很多domain specific language compiler都用的这个工具, 比如hibernate的HQL, Yahoo!的YQL都是基于antlr的.

No comments: