flex+bison运行测试一个小例子

  1. 要测试运行实例的话,前提是保证配好环境变量。环境变量具体配置通过查阅其他博客完成了,接下来演示如何查看是否配置成功:
    ①进入cmd,输入flex --version
    说明flex环境变量配置好了
    ②输入bison --version
    说明bison环境变量配好

  2. 我使用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!

  3. 接下来进入自己创建好的文件夹中,复制路径,cmd进入命令行,cd 自己的路径,输入type nul>hello.l创建一个hello.l文件:
    在这里插入图片描述
    发现文件夹中生成了文件:
    在这里插入图片描述
    右击以记事本方式打开,然后把lex代码写进去,保存:(注意这里面有.l与.y文件,要分开创建)

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
在这里插入图片描述
将产生编译好的.c文件:
在这里插入图片描述
输入:type nul>hello.y,填入上面hello.y的代码保存,
输入命令:win_bison -d -o y.tab.c hello.y
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
4. 接下来可以开始测试了:
①在那个文件夹中新建test文件夹,用来存放cb新建的工程:
在这里插入图片描述
②进入cb,新建控制台工程:
在这里插入图片描述在这里插入图片描述
③把以下3个文件拖进工程:
在这里插入图片描述

编译此工程,生成:
在这里插入图片描述
测试成功!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值