-
要测试运行实例的话,前提是保证配好环境变量。环境变量具体配置通过查阅其他博客完成了,接下来演示如何查看是否配置成功:
①进入cmd,输入flex --version
②输入bison --version
-
我使用codeblocks进行后面的编译,所以先对codeblocks进行一些配置。进入cb:设置->编译器
点击右边的小三角,拖到最右边:
进入高级选项,会弹出一个确认框,确认:
对.l进行配置:在Source ext.的下拉框中选择l,表示将针对flex文件进行配置,宏命令行下面的编辑框中会显示利用flex命令对.l文件进行处理的命令行(命令及命令参数)。由于CodeBlocks使用的是移植自Linux的MinGW,所以其缺省的命令还是Linux下使用flex的命令。现在我们需要更新为:win_flex -o$file_dir/$file_name.flex.cpp --wincompat $file
,其中“$file_dir/$file_name.flex.cpp”
是要生成的cpp文件的目录+文件名称。你可以根据你的需要选择由flex生成的文件是什么名字。相应的在Generated files的编辑框中同样修改为“$file_dir/$file_name.flex.cpp”
,和前面的生成一致,这样能够让CodeBlocks找到生成的文件进行编译处理。这样.l的配置就完成了:
对.y进行配置:同样在Source ext.的下拉菜单中选择y,进入.y文件的相关配置中,替换原来的配置项为:
win_bison --output=$file_dir/$file_name.tab.cpp --defines=$file_dir/$file_name.tab.h $file
(具体可以参考win_bison的帮助,通过win_bison --help)。相应Generate files也修改为$file_dir/$file_name.tab.cpp 和$file_dir/$file_name.tab.h
。点击OK即完成配置,这样就可以添加.y和.l到你的工程中了。要记得去重启cb! -
接下来进入自己创建好的文件夹中,复制路径,cmd进入命令行,cd 自己的路径,输入type nul>hello.l创建一个hello.l文件:
发现文件夹中生成了文件:
右击以记事本方式打开,然后把lex代码写进去,保存:(注意这里面有.l与.y文件,要分开创建)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45hello.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("Errorn"); exit(1); } hello.y %token HI BYE %% program: hi bye ; hi: HI { printf("Hello Worldn"); } ; bye: BYE { printf("Bye Worldn"); exit(0); } ;
在命令框输入命令:win_flex --nounistd hello.l
将产生编译好的.c文件:
输入:type nul>hello.y,填入上面hello.y的代码保存,
输入命令:win_bison -d -o y.tab.c hello.y
4. 接下来可以开始测试了:
①在那个文件夹中新建test文件夹,用来存放cb新建的工程:
②进入cb,新建控制台工程:
③把以下3个文件拖进工程:
编译此工程,生成:
测试成功!
最后
以上就是魁梧热狗最近收集整理的关于flex+bison运行测试一个小例子的全部内容,更多相关flex+bison运行测试一个小例子内容请搜索靠谱客的其他文章。
发表评论 取消回复