语法解析工具Berkeley Yacc、Flex、Bison、YACC介绍

以下为你介绍的语法解析工具都可用在Linux系统上:Berkeley Yacc(语法分析器生成工具)、Flex(语法扫描器生成器)、Bison(解析器生成器)、YACC(语法分析器生成工具)。

1、Berkeley Yacc(语法分析器生成工具)

语法解析工具Berkeley Yacc、Flex、Bison、YACC介绍

Berkeley Yacc (byacc) 是一个高质量的yacc变种,其目的是为了避免依赖某个特定的编译器。与bison相比,它的编写避免了对特定编译器的依赖。

下载地址:https://invisible-island.net/byacc/

2、Flex(语法扫描器生成器)

flex (fast lexical analyser generator) 是Lex的另一个替代品。它经常和自由软件Bison语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用C语言写成。

Flex手册里对Flex 描述如下:

“flex 是一个生成扫描器的工具,能够识别文本中的词法模式。flex读入给定的输入文件,如果没有给定文件名的话,则从标准输入读取,从而获得一个关于需要生成 的扫描器的描述。此描述叫做 规则,由正则表达式和 C代码对组成。flex 的输出是一个 C 代码文件——lex.yy.c——其中定义了yylex() 函数。编译输出文件并且和 -lfl库链接生成一个可执行文件。当运行可执行文件的时候,它分析输入文件,为每一个正则表达式寻找匹配。当发现一个匹配时,它执行与此正则表达式相关的C代码。”

一个相似的,用C++语言的词法分析器生成器是flex++,包含在flex 软件包里。

Flex 不是GNU工程,但是GNU为Flex 写了手册。

下载地址:https://sourceforge.net/projects/flex/

3、Bison(解析器生成器)

GNU bison是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新近版本中,Bison增加了对GLR语法分析算法的支持。

Bison与Yacc向上兼容:所有正确编写的Yacc语法都应与Bison一起使用,而无需进行任何更改。熟悉Yacc的任何人都应该可以轻松使用Bison。

下载地址:http://dinosaur.compilertools.net/

4、YACC(语法分析器生成工具)

计算机程序输入通常具有某种结构,实际上,每个进行输入的计算机程序都可以认为是定义了它接受的一种输入语言。输入语言可能像编程语言一样复杂,也可能像数字序列一样简单。不幸的是,通常的输入设备是有限的,难以使用的,并且常常对于检查其输入的有效性不严。Yacc提供了一种用于描述计算机程序输入的通用工具。Yacc用户指定其输入的结构,以及在识别每个此类结构时要调用的代码。Yacc将这样的规范转换为处理输入过程的子例程。通常,由该子例程处理用户应用程序中的大多数控制流是方便且适当的。

下载地址:http://dinosaur.compilertools.net/

注明

以上就是语法解析工具Berkeley Yacc、Flex、Bison、YACC的介绍内容,这些语法解析工具都能使用在Linux操作系统中。

栏目相关文章