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

编译原理是计算机科学中的一门重要课程,涉及了很多与编译器设计和实现相关的概念和技术。而C-minus语法分析则是编译原理中的一个重要部分,它使用flexbison这两个工具来实现。接下来我将详细介绍C-minus语法分析的相关内容。 C-minus是一种简化版的C语言,它具有类似于C语言的语法和语义。语法分析编译器的第二个阶段,主要负责通过解析输入的源代码来构建抽象语法树。在C-minus语法分析中,我们使用flexbison这两个工具来实现词法分析和语法分析flex是一个用于生成词法分析器的工具,它通过定义一系列正则表达式规则来识别源代码中的各种词法单元,如关键字、标识符、常量等。在C-minus语法分析中,我们可以使用flex来识别源代码中的词法单元,并将它们传递给bison进行后续的语法分析bison是一个用于生成语法分析器的工具,它通过定义一系列文法规则来分析词法单元之间的语法关系,同时生成一个由这些规则构成的抽象语法树。在C-minus语法分析中,我们可以使用bison来定义C-minus语言的文法规则,并将其与词法单元进行匹配,从而生成抽象语法树。 在C-minus语法分析中,我们需要定义C-minus语言的文法规则,如声明语句、函数定义、循环语句等。通过使用flexbison这两个工具,我们可以将这些规则转化为相应的词法和语法规则,并实现一个完整的C-minus语法分析器。 总而言之,C-minus语法分析编译原理中的一个重要环节,通过使用flexbison这两个工具,我们可以实现一个功能完善的C-minus语法分析器,从而为后续的语义分析和代码生成打下基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值