标签:
一、介绍
只要在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),不然无论对错都一直会是提示错误
标签:
原文地址:http://www.cnblogs.com/zzhili/p/4542354.html