[最全]VS2017配置flex&bison

下载win flex-bison

网址:https://sourceforge.net/projects/winflexbison/

打开网址后下载win flex-bison软件,下载得到的文件为win_flex_bison-latest.zip

解压缩软件后打开文件夹可以看到如下内容,稍后步骤中将用到该文件夹。

配置VS2017

从lex文件生成c文件

Step1: 创建空项目

step2: 向工程中添加win-flex_bison软件中targets文件,具体步骤为

a. 右键单击工程(本例是Project2) -> 在弹出的菜单中选择“生成依赖项” -> “生成自定义” 

b. 在弹出的窗口下侧选择“查找现有的(F)...”,然后进入刚才已经下好的win flex-bison文件夹下,并依次进入\win_flex_bison-latest\custom_build_rules\文件夹中,选择“win_flex_bison_custom_build.targets”文件。

c. 在当前对话框中(如下图所示)出现了“in_flex_bison_custom_build.targets”文件选项,选中该文件并点“确定”。

step3: 向工程中添加win_bison.exe和win_flex.exe文件所在的路径

具体步骤为:右键单击工程(本例是Project2) -> 在弹出的菜单中选择“属性” -> 依次执行下图的步骤。

提示:

【步骤2】左键单击“可执行文件目录”后面的白色区域,会出现下拉菜单的提示符,选择该提示符后出现下拉菜单,选中“<编辑...>”后便会出现步骤3的对话框。

【步骤3】左键双击白色区域就能添加win_bison.exe和win_flex.exe文件所在的路径了,这两个文件保存在win_flex_bison-latest软件的第一级目录下。

step4: 向工程中添加lex文件,我一般会把lex文件保存在工程所在的路径下

lex文件的内容为,注意,一定要有yywrap()函数,不然最后生成的c文件将无法链接成功,会提示缺少yywrap函数的定义。

    int new_lines = 0, new_chars = 0;

%%
\n       printf("  >>> This is first new line.\n");

%%

int yywrap(void)
{  
  return 1;  
} 
int main(int argc, char** argv)
{
    --argc;
    ++argv;
    if(argc > 0)
        yyin = fopen(argv[0],"r");
    else
        yyin = stdin;
    
    yylex();
    system("pause");
}

添加文件的步骤为:右键单击工程(本例是Project2) -> 添加 -> 现有项 -> 选择flex_demo.l文件

step5: 执行flex_demo.l文件,并生成c文件

具体步骤为:生成 -> 生成解决方案

可以得到如下提示,“成功1个”。

同时,在与flex_demo.l相同路径下生成“flex_demo.flex.cpp”文件。

如果不想生成cpp文件而是c文件,可以按照如下步骤进行修改。

a. 右键单击flex_demo.l文件,弹出的菜单中选择“属性”。

b. 弹出如下对话框 -> Flex Options -> 删除Output File Name一栏中最后两个字符“pp” -> 确定

c. 重新执行“生成解决方案”,得到“flex_demo.flex.c”文件

编译c文件为exe

step1: 向工程中添加刚才生成的c文件,具体步骤为:

右键单击“源文件” -> 添加 -> 现有项 -> 选择刚才生成的c文件。

step2: 重新执行“生成解决方案”,会有如下提示:

解决方法是,右键单击工程(本例是Project2) -> 在弹出的菜单中选择“属性” -> 在弹出的对话框中选择"C/C++" -> 预处理器 -> 选择"预处理定义"后面的下拉菜单

弹出如下对话框,在其中填入_CRT_SECURE_NO_WARNINGS

step3: 重新执行“生成解决方案”,会有如下成功的提示。

执行exe文件

将测试文档配置进工程中,步骤为:调试 -> “命令参数”中填写文件的名字 -> "工作目录"中填写该文件所在的路径 -> 确定。

开始执行exe文件,步骤为:调试 -> 开始调试。

显示结果如下,说明exe执行成功。

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值