2009-09-09

Elisp to Rescue!

这些日子开始做一个简单的代码生成工具 -- 听着很炫,其实很思想简单 -- 就是用一些(脚本)程序修改老的C头文件,并自动在源代码中修改相应的实现。修改头文件相对简单,用sed就可以了,因为现有API的名字有明显的模式可寻,而修改C源代码则相对困难,这是因为大家的实现方式并不一致。姑且不论对代码的解析,仅仅是用sed/awk之类的工具去做块编辑便很难得心应手。

生活中总有一些事情可以激发一点点灵感。昨天因为写错了一个自定义类型的名字,一段代码花费了我半个多小时的调试时间(为了通用,它藏在两层macro之中),于是想如果能把这些自定义类型加入vim/emacs的语法高亮,这样可以比较方便的看出来。接着便配置了vim/emacs去做这些事,配置emacs很简单,在c-mode-hook里面设置一下c-font-lock-extra-types即可。

我突然想到,为什么不重用cc-mode来做代码生成呢?Emacs提供了编辑功能,cc-mode提供了足够的c/c++语法解析,而lisp天生便用于符号操作,用elisp去操纵c/c++代码实在是再适合不过了!

另外,如果我们的代码能做到简单一致(Simple & Consistent)那该多么美妙!可惜这已经是奢望了。

标签:

0 Comments:

发表评论

<< Home