您的位置:首页 > 其它

编译器工具 Flex Bison for Windows 简单入门例子

2013-11-26 22:57 471 查看
最近从事一个系统仿真软件的开发,里面定义了自己的描述性语言MSL, MSL语言经FlexBison转换成C语言,然后用C编译器来编译并计算仿真。

现在领域驱动开发比较热门,有机会定义自己的语言对程序员来说是比较有成就感的,免不了要去学习编译原理和flex, bison, antlr等工具的使用,

在控制仿真语言,数控编程,还有股票程序化交易系统,游戏脚本中都可以看到领域驱动开发的影子。

借此机会,重新阅读了编译原理的教程,并学习一下自动控制原理(用于控制仿真),以前一直觉得大学里学的东西没有用,但是后来证明都用上了,

比如说微积分,线性代数,数值分析,甚至大学物理,还有那个以前不知所云数学物理方法,我努力回忆这些老师的面容,但已渐渐模糊。

有关Flex和Bison的资料可以在http://ishare.iask.sina.com.cn里面找到很多,也可以从其他博客找到例子,

这里我从 http://sourceforge.net/projects/winflexbison/ 下载了 win_flex , win_bison 版本。

然后解压到某个目录下,注意里面有个data目录也要一起解压。

网上找了个博客参考一下:http://blog.csdn.net/pikaxuji/article/details/7678135

hello.l

%{

#include <stdlib.h>

#include "y.tab.h"

%}

%%

("hi"|"oi")"\n" { return HI; }

("tchau"|"bye")"\n" { return BYE; }

. { yyerror(); }

%%

int main(void)

{

yyparse();

return 0;

}

int yywrap(void)

{

return 0;

}

int yyerror(void)

{

printf("Error\n");

exit(1);

}

hello.y

%token HI BYE

%%

program:

hi bye

;

hi:

HI { printf("Hello World\n"); }

;

bye:

BYE { printf("Bye World\n"); exit(0); }

;

经过尝试,我使用了以下命令生成代码:

win_flex --nounistd hello.l

win_bison -d -o y.tab.c hello.y

执行后会生成lex.yy.c 和 y.tab.h y.tab.c

用 visual studio 2008 创建一个新的Visual c++ empty project, 比如叫hello.vcproj, 然后把上面三个文件添加进去,直接编译成功。

运行时候在控制台运行,

d:\FlexBison\hello>hello.exe

hi

Hello World

bye

Bye World

很简单吧。flex bison 工具后面有很多选项,满足不同需要,可以自己测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: