在VC6.0/VC2008中高效地使用flex & bison

来源:互联网 发布:js object[] 编辑:程序博客网 时间:2024/05/17 10:43

由于 目前的主要工作是IDE,而IDE中主要负责Compiler & Assembler部分,这两部分中都会用到flex & bison(Lex & Yacc),所以通常的做法是在相应工程目录(如:工程为SDCC Compiler)下建立一个parser的目录,然后里面存放.l(lex文件)和.y(yacc文件)文件,还有一个.bat文件,这个.bat文件的作用是把.l和.y文件调用flex & bison转换为.hpp和.cpp文件,通常我会在工程中建立一个folder,名为Parser, 然后把.l和.y文件和它们生成的.hpp和.cpp文件加到该目录下,这样我就直接打开工程修改.l和.y文件,然后修改完毕后我再去执行.bat文件然后重新生成对应的.hpp和.cpp文件,又由于.l和.y文件在开发之中会经常改动,所以按照这样的操作的话会比较麻烦,所以我就想一个解决方案,把.bat文件的调用放到Build Events中的Pre-Build Event中,但是这样又产生一个问题那就是:即使我不修改.l和.y文件,也会重新执行.bat再生成.hpp和.cpp文件,这样也不好。


最后找到一个比较好的解决方案:

对于.l文件我们在VC2008的菜单点击Tools -> External Tools -> Add

分别填入:

Title: Flex

Command: D:\Program VC6\Lex\Sample6\Tool\flex.exe

Arguments: -i -d  Sample6.l

Initial directory: D:\Program VC6\Lex\Sample6\Tool\

再钩选下面的 Use Output window.

然后为.y文件增加一个类似于上面的Item,这样我们如果更改.l文件,只需按一下Tools -> Flex,就会生成.cpp文件,这样使用起来相当方便.