Bison ist ein freier universeller Parsergenerator aus dem GNU-Projekt. Bison übersetzt eine Grammatikbeschreibung einer kontextfreien Grammatik in ein C-, C++- oder Java-Programm, das eine Serie von Tokens parsen kann, deren Aufbau dieser Grammatik folgt (sogenannter LALR-Parser). Weiterhin kann es auch allgemeinere Tomita-Parser für uneindeutige Grammatiken erzeugen.
GNU Bison
| |
---|---|
![]() | |
Basisdaten
| |
Hauptentwickler | Akim Demaille, Joel E. Denny, Paul Eggert |
Entwickler | GNU-Projekt |
Erscheinungsjahr | Juni 1985[1] |
Aktuelle Version | 2.4 (2. November 2008) |
Betriebssystem | Unix-ähnliche |
Programmiersprache | C |
Kategorie | Parsergenerator |
Lizenz | GPL (Freie Software) |
www.gnu.org/software/bison |
Im POSIX-Modus ist Bison kompatibel zu dem älteren Yacc, wobei es demgegenüber einige Verbesserungen implementiert (aufwärtskompatibel). Aus einer Syntaxbeschreibung einer Programmiersprache in einem Format ähnlich der Backus-Naur-Form erzeugt es einen Parser auf Basis eines Kellerautomaten, der als Element zur syntaktischen Analyse zusammen mit einem lexikalischen Scanner wie flex[2] (freie Alternative zu Lex) als einem weiteren Programmmodul zur Erstellung eines Compilers oder Interpreters eingesetzt werden kann.
Bison ist als Freie Software unter der GNU General Public License (GPL) veröffentlicht. Es wurde hauptsächlich von Robert Corbett entwickelt. Richard Stallman machte es (aufwärts)kompatibel zu Yacc.
Geschichte
Bison wurde bereits in der zweiten Hälfte 1980er Jahren entwickelt.[3] Version 1.00 wurde am 26. Mai 1988 veröffentlicht.[4]
Durch die Einbindung der (GPL-lizenzierten) Funktion yyparse() aus dem Bison-Code standen die erzeugten Parserprogramme ebenfalls unter der GPL. Seit Version 1.24 besteht hier eine Ausnahme,[5] durch die die Ausgabe auch als proprietäre Software verwendet werden darf.[6]
Weblinks
Quellen
- ↑ In: Static Semantics and Compiler Error Recovery.
- ↑ flex.sf.net
- ↑ Liste der ersten Beiträge im Code-Repositorium
- ↑ code.google.com/p/oldbison
- ↑ www.economicexpert.com/a/GNU:bison.htm
- ↑ Ocamlyacc Tutorial: Conditions for Using Bison