Conditions for Using Bison

The distribution terms for Bison-generated parsers permit using the
parsers in nonfree programs. Before Bison version 2.2, these extra
permissions applied only when Bison was generating LALR(1)
parsers in C. And before Bison version 1.24, Bison-generated
parsers could be used only in programs that were free software.

The other GNU programming tools, such as the GNU C
compiler, have never
had such a requirement. They could always be used for nonfree
software. The reason Bison was different was not due to a special
policy decision; it resulted from applying the usual General Public
License to all of the Bison source code.

The main output of the Bison utility—the Bison parser implementation
file—contains a verbatim copy of a sizable piece of Bison, which is
the code for the parser’s implementation. (The actions from your
grammar are inserted into this implementation at one point, but most
of the rest of the implementation is not changed.) When we applied
the GPL terms to the skeleton code for the parser’s implementation,
the effect was to restrict the use of Bison output to free software.

We didn’t change the terms because of sympathy for people who want to
make software proprietary. Software should be free. But we
concluded that limiting Bison’s use to free software was doing little to
encourage people to make other software free. So we decided to make the
practical conditions for using Bison match the practical conditions for
using the other GNU tools.

This exception applies when Bison is generating code for a parser.
You can tell whether the exception applies to a Bison output file by
inspecting the file for text beginning with “As a special
exception…”. The text spells out the exact terms of the
exception.