语法分析——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

相关文章
相关标签/搜索