- YACC
-
Yacc ist ein Computerprogramm, welches zur Herstellung von Compilern dient. Das Wort Yacc ist ein Akronym, das selbstironisch für yet another compiler compiler steht.
Yacc ist eine Implementierung eines Parsergenerators der eine einfache Möglichkeit zur Definition der Syntax neuer Programmiersprachen bietet. Hierzu generiert Yacc einen Parser auf Basis eines Kellerautomaten. Der Parser analysiert Eingabedaten und zerteilt diese in logische Strukturen, die durch kontextfreie Grammatiken vorgegeben sind. Die Grammatik wird bei Yacc in einer BNF-ähnlichen Notation angegeben.
Yacc dient der syntaktischen Analyse, während das häufig in Kombination mit Yacc genutzte Lex die lexikalische Analyse eines Textes durchführt.
Yacc erzeugt aus der Sprachdefinition Programmcode, der typischerweise in C bereitgestellt wird und als Parser dient. Daneben gibt es weitere Yacc-Varianten, die Code für andere Sprachen erzeugen, wie beispielsweise Ayacc für die Sprache Ada.
Yacc wurde ursprünglich von Steven C. Johnson bei AT&T im Rahmen des UNIX-Projektes entwickelt. Später sind weitere Varianten des Programms entstanden, wie beispielsweise Berkeley Yacc, GNU Bison, MKS Yacc and Abraxas Yacc. Diese basieren auf dem gleichen Grundkonzept wie YACC, bieten aber oft Verbesserungen im Detail.
Um einen Compiler oder Interpreter zu erstellen, benötigt ein von Yacc generierter Parser noch ein weiteres Programmmodul zur lexikalischen Analyse (Lexikalischer Scanner) des Quellcodes. Hierfür wird häufig das ebenfalls unter UNIX entwickelte Programm Lex eingesetzt.
Verschiedene, teilweise erweiterte OpenSource-Implementierungen existieren, etwa das im Rahmen des GNU-Projekts entwickelte Programm bison oder byacc, in modernen BSD-Betriebssystemen. Der Quellcode von yacc ist heute ebenfalls unter einer freien Lizenz veröffentlicht. Yacc ist unter anderem Bestandteil von OpenSolaris und Plan 9.
Literatur
- Herold, Helmut: lex & yacc . Die Profitools zur lexikalischen und syntaktischen Textanalyse. Addison Wesley, 2003, ISBN 3-82732-096-8
- John R. Levine, Tony Mason, Doug Brown: lex & yacc, O'REILLY 1992, ISBN 1-56592-000-7
- S. C. Johnson, Yacc: Yet Another Compiler Compiler, Computing Science Technical Report No. 32, 1975, Bell Laboratories, Murray Hill, New Jersey 07974
Weblinks
yacc(1)
– Linux-Manpage (Englisch)- http://www.gnu.org/software/bison - GNU Bison
- http://www.golem.de/0807/61133.html - OpenBSD-Entwickler behebt 33 Jahre alten Fehler
Wikimedia Foundation.