编译原理 - 实验四 - yacc基本使用(bison)

一、介绍

只要在Unix环境中写过程序,必定会邂逅神秘的Lex&YACC,就如GNU/Linux用户所熟知的Flex&Bison,这里的Flex就是由Vern Paxon实现的一个Lex,Bison则是GNU版本的YACC,在此我们将统一称呼这些程序为Lex和YACC,所以我们将用Flex和Bison来尝试下我们的实例。

二、准备工作(win7)

①  下载flex和bison并安装到D:\GnuWin32(尽量是根目录)

②    由于我们使用的flex和bison都是GNU的工具,所以为了方便,采用的C/C++

编译器也 采用GNU的编译器GCC,当然我们需要的也是Windows版本的GCC了。所以选用了CodeBlocks编译器

三、课本实例

①  按课本代码输入,并保存为yac1.y,并将其放到bison所在目录

②  打开cmd命令行,然后进入D盘中bison所在目录下,然后输入命令行bison yac1.y对文件进行解析,生成yac1.tab.c文件

③  用CodeBlocks编译器打开yac1.tab.c文件,进行编译运行

④  测试结果:

   

四、遇到问题

①int yylex(void)函数中改为int yylex(),因为后面需要返回数值,void为空,则得不到结果

②void yyerror(char *s)改为int yyerror(char *s),必须和前面的类型统一

③mian()中的if(i=0)改为if(i!=1),不然无论对错都一直会是提示错误

转载于:https://www.cnblogs.com/zzhili/p/4542354.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值