`
chinamming
  • 浏览: 141362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

语法分析——Bison介绍以及Flex、Bison联合编译

 
阅读更多

语法分析使用Bison,在前面的博文中提到一些如何在Windows下安装Bison,但是从语法分析开始,我还是在Linux下写实验的,安装了ubuntu,因此需要在Linux下安装Bison,这个安装是比较简单的,只需要在命令行中敲入如下命令:sudo apt-get install bison,同样,安装Flax:sudo apt-get install flex

如,写好的Bison代码文件名为syntax.y,则使用下面的语句进行编译:bison syntax.y

那么,如何进行Flex和Bison的联合编译呢?首先需要在Bison代码文件syntax.y中引用lex.yy.c:#include "lex.yy.c"

在Flex源代码中需要使规则部分的每一action都返回相应的词法单元,如:

%{

#include "syntax.tab.h"

...

%}

...

%%

"+" {return PLUS;}

"-" {return SUB;}

编译Flex文件:flex lexical.l

使用Bison编译代码时,需要加上"-d"的参数:bison -d syntax.y

在main函数中需要调用yyparse()和yyrestart()函数

int main(int argc, char** argv)
{
if (argc <= 1) return 1;
FILE* f = fopen(argv[1], "r");
if (!f)
{
perror(argv[1]);
return 1;
}
yyrestart(f);
yyparse();
return 0;
}

最后进行mian.c一起编译:gcc main.c syntax.tab.c -lfl -ly -o parser

若想对一个测试文件test.c进行语法分析,则只需要在命令行中输入:./parser test.c

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics