Einen mindestens 31 Jahre alten Bug beheben die Entwickler in der aktuellen Version 3.3 von GNU Bison. Der universelle Parser-Generator stammt aus der zweiten Hälfte der 80er Jahre.
Bei Bison handelt es sich um einen Parser-Generator, der laut Projektseite eine kontextfreie Grammatik in einen deterministischen Von-Links- nach-Rechts-Parser (LR-Parser) mit Lookahead-Tables verwandelt. Die Software hilft unter anderem beim Bau von Compilern.
Nach einem Update auf Version 3.2 im Oktober 2018 folgt nun eine weitere Aktualisierung auf die 3.3. Die bietet unter anderem die neue Option “–update” an, die veraltete Features von existierenden Grammatiken auf den neuen Stand bringt. So ist laut Ankündigung etwa die Direktive ‘%name-prefix “xx”‘ inzwischen veraltet, diese ersetzt ‘%define api.prefix {xx}’. Auch doppelte Direktiven haben die Bison-Entwickler entfernt. Dabei hilft zusätzlich die neue Option “-ffixit”, die maschinenlesbare Bearbeitungs-Instruktionen für IDEs und Editoren generiert.
Uralt-Bug
Für Regeln lassen sich nun die zu erwartenden Shift-Reduce- und Reduce-Reduce-Konflikte anmerken. Auch der anfangs genannte Uralt-Bug bezieht sich auf einen Reduce-Reduce-Konflikt, bei dem Bison nur einen statt der erwarteten zwei Konflikte anzeigte. Der Bug trat wohl bereits beim ersten Check-in in das Versionskontrollsystem auf, im Dezember 1987.
Außerdem lässt sich Bison neuerdings an anderer Stelle im Dateisystem platzieren. Dabei hilft die Option “–enable-relocatable”, die der Nutzer beim “./configure” vor dem Übersetzen der Software als Parameter angeben muss. Auch die Dokumentation haben die Entwickler überarbeitet und mit neuen Beispielen versehen. Weitere Feinheiten zu den Neuerungen verrät das Announcement, dort finden sich auch Links zu den Quellen der Software.



