GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR(1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR(1) 或规范 LR(1) 解析表。一旦您熟练使用 Bison,您可以使用它开发广泛的语言解析器,从简单的桌面计算器中使用的解析器到复杂的编程语言。
在Qt源码编译中也会用到这两个软件。
编译环境:Linux kali64 4.9.0-kali3-amd64 #1 SMP Debian 4.9.18-1kali1 (2017-04-04) x86_64 GNU/Linux
gcc: gcc version 6.3.0 20170406 (Debian 6.3.0-12)
bison下载:http://mirrors.ustc.edu.cn/gnu/bison/bison-3.1.tar.xz
flex下载:https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
编译bison
$ tar -xzvf bison-3.1.tar.gz
$ cd bison-3.1
$ mkdir build && cd build
$ ../configure
$ make && make install
编译flex(必须先安装bison)
参考:Linux:编译flex、bison总结_wch0lalala的博客-CSDN博客
ubuntu下makeinfo安装,其实真正安装的是texinfo包
先下载以下源码安装包:
m4、autoconf、automake、libtool、gettext
libtool-2.4.tar.xz http://mirrors.ustc.edu.cn/gnu/libtool/libtool-2.4.tar.xz
gettext-0.21.tar.xz http://mirrors.ustc.edu.cn/gnu/gettext/gettext-0.21.tar.xz
texinfo-6.7.tar.xz http://mirrors.ustc.edu.cn/gnu/texinfo/texinfo-6.7.tar.xz
help2man-1.47.9.tar.xz http://mirrors.ustc.edu.cn/gnu/help2man/help2man-1.47.9.tar.xz
编译并安装
$ tar xvJf *.tar.xz
$ ./configure
$ make && make install
…
$ tar -xzvf flex-2.6.4.tar.gz
$ cd flex-2.6.4
$ sh autogen.sh
$ mkdir build && cd build
$ ../configure
$ make && make install
测试flex和bison
下载测试工程:https://github.com/liuyang1/flex-bison-example/archive/refs/heads/master.zip
$ unzip flex-bison-example-master.zip
$ cd flex-bison-example-master/
$ make
即可生成一个计算器
$ ./calc