GNU Bison

GNU bison, commonly known as Bison, is a parser generator that is part of the GNU Project. Bison reads a specification of a context-free language, warns about any parsing ambiguities, and generates a parser (either in C, C++, or Java) which reads sequences of tokens and decides whether the sequence conforms to the syntax specified by the grammar. Bison by default generates LALR parsers but can also create GLR parsers).

In POSIX mode, Bison is compatible with yacc, but also supports several improvements over this earlier program. flex, an automatic lexical analyser, is often used with Bison, to tokenise input data and provide Bison with tokens.

Bison is licensed as free software and is available in source code form. Earlier releases of Bison used to stipulate that parts of its output were protected under the GPL, due to the inclusion of the yyparse function from the original source code in the output. An exception has since been made to allow other licenses to apply to the use of the output.

Read more about GNU Bison:  A Complete Reentrant Parser Example, Where Is It Used?