编译原理 - 实验四 - 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),不然无论对错都一直会是提示错误


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM