Weiterführende Links zur Vorlesung ÜSW SS 07

Scanner-Generatoren

Lex - A Lexical Analyser Generator

Lex ist ein Werkzeug zur Generierung lexikalischer Analysatoren in der Programmiersprache C. \ Es wurde von der Firma AT&T entwickelt. \ Die Dokumentation zum Programm finden Sie auf der The Lex & Yacc Page.

Flex - A Fast Scanner Generator

Flex ist ein Werkzeug zur Generierung lexikalischer Analysatoren in der Programmiersprache C. \ Flex liefert die gleiche Funktionalität wie lex. \ Das Paket flex ist Bestandteil der SuSE-Linux Distribution. \ Den Quellcode zum Herunterladen und die Dokumentation von flex finden Sie \ auf der The Lex & Yacc Page.

JFlex - The Fast Scanner Generator for Java(TM)

JFlex ist ein in Programmiersprache Java(TM) geschriebenes Werkzeug \ zur Generierung lexikalischer Analysatoren in Java(TM). \ Es ist ein Rewrite von JLex und wurde von Gerwin Klein an der TU München entwickelt. \ Den Quellcode, Dokumentation und Beispiele zum Herunterladen finden Sie \ auf der JFlex Homepage.

ML-Lex - A Lexical Analyzer Generator for Standard ML

ML-Lex eine Variante von lex, die in der Programmiersprache ML geschrieben ist. \ ML-Lex hat eine ähnliche Syntax wie Lex und generiert statt C- ein ML-Programm. \ Die von ML-Lex generierten Scanner sind sehr effizient. \ Im Normalfall ist ein von ML-Lex generierter Lexer fast so schnell oder sogar schneller \ als ein Lexer, der von Hand geschrieben und mit SML kompilliert wurde. \ Typischerweise hat auch ML-Lex sehr kleinen Speicher-Bedarf. \ Ausserdem bietet ML-Lex die gleiche Funktionalität, die auch lex hat, an, \ kennt aber keine künstlichen Einschränkungen bzgl. der Länge der erkannten \ Zeichenketten (so wie das von lex-Werkzeug gemacht wird). \ ML-Lex wurde von Andrew W. Appel \ (auch Autor des in der Vorlesung vorgestellten Buches \ “Modern Compiler Implementation in Java”), \ James S. Mattson und David R. Tarditi von der Princeton Universität entwickelt \ und ist zur Zeit ein Bestandteil der Compiler-Distribution Standard ML of New Jersey. \ Auf unseren Linux-Rechnern befindet sich die ausführbare Datei ml-lex in dem gleichen bin-Verzeichnis \ der sml-Installation wie die ausführbare Dateien des Compilers, sml, des Parser-Generatos, \ ml-yacc, und des code-generator-Generators, ml-burg. D.h.: * /usr/local/sml/bin/ml-burg * /usr/local/sml/bin/ml-lex * /usr/local/sml/bin/ml-yacc * /usr/local/sml/bin/sml.

Die Dokumentation zu ML-Lex und Beispiele finden Sie auf der Seite \ http://www.smlnj.org/doc/ML-Lex/manual.html. \ Bei der Lektüre sollten Sie darauf achten, dass das dort vorgestellte Beispiel \ nicht mehr mit den neueren Versionen von SMLNJ Compilern kompillierbar ist \ (wir haben es mit der Version 110.0.7 ausprobiert).\ Hier finden Sie eine Portierung des Beispiels.

Parser-Generatoren

YACC - Yet Another Compiler Compiler

Generierung von Parsern in der Programmiersprache C. \ Es wurde von der Firma AT&T entwickelt. \ Die Dokumentation zum Programm finden Sie auf der \ The Lex & Yacc Page

CUP - LALR Parser Generator for Java(TM)

CUP ist eine Variante von yacc, die in der Programmiersprache Java(TM) geschrieben ist,\ und wurde von Scott E. Hudson u.a. geschrieben. \ CUP besitzt fast die gleiche Funktionalität wie das weit verbreitete Programm YACC, \ hat eine ähnliche Syntax wie yacc und generiert statt C- ein Java-Programm. \ Den Quellcode, Dokumentation und Beispiele zum Herunterladen finden Sie \ auf der CUP Homepage.

ML-Yacc - A Parser Generator for Standard ML

ML-Yacc ist eine Variante von yacc, die in der Programmiersprache SML geschrieben wurde. \ Wie yacc, generiert ml-yacc Parser für die LALR-Sprachen und hat ähnliche Syntax. \ Allerdings verwenden die von ml-yacc generierten Parser einen anderen Algorithmus \ zur Fehlerbehandlung, der eine partielle Implementation des Burke-Fischer-Algorithmus ist. \ ML-Lex wurde von Andrew W. Appel (auch Autor des in der Vorlesung vorgestellten Buches \ “Modern Compiler Implementation in Java”) und David R. Tarditi von der Princeton Universität\ entwickelt und ist zur Zeit ein Bestandteil der Compiler-Distribution \ Standard ML of New Jersey. \ (Auf unseren Linux-Rechnern befindet sich die ausführbare Datei ml-lex \ in dem gleichen bin-Verzeichnis der sml-Installation wie die ausführbare Dateien des Compilers, \ sml, des Scanner-Generatos, ml-lex, und des code-generator-Generators, ml-burg, \ sehe oben die Beschreibung von ml-lex. \ Die Dokumentation zu ML-Yacc und Beispiele finden Sie auf der Seite \ kttp://www.smlnj.org/doc/ML-Yacc/

Bison - GNU parser generator

Bison ist ein universaller Parsergenerator, der aus annotierten kontextfreien Grammatiken \ LALR(1)- bzw. GLR-Parser generiert. \ Bison ist aufwärts kompatibel mit Yacc, d.h. alle fehlerfreie Yacc-Grammatiken werden auch von Bison akzeptiert.\ Jeder, der sich mit Yacc auskennt, sollte in der Lage sein, auch Bison anzuwenden. \ Um Bison zu mit dem Bison zu arbeiten, brauch man gute Kenntnise in C oder C++. \ Bison wurde ursprünglich von Robert Corbett geschrieben.\ Richard Stallman machte Bison Yacc-kompatibel. \ Wilfred Hansen von Carnegie Mellon Universität erweiterte die Funktionalität von Bison um die Behandlung \ von multi-character String-Literalen und andere Funktionalitäten. Weitere Informationen zu diesem Werkzeug\ finden Sie auf der Bison Homepage

ANTLR - ANother Tool for Language Recognition (formerly PCCTS)

ANTLR ist Framework für die Konstruktion von Parsern, Compilern und Übersetzern\ aus Grammatik-Spezifikationen, die Java- C#-, Python- und C++-Annotationen enthält.\ Die Gründe, warum ANTLR populär geworden ist, sind die folgenden: * Es ist einfach, leicht verständlich und flexibel. * ANTLR’s Funktionalität ist vom großen Umfang. * Die von ANTLR generierten Ausgaben sind lesbar für den Programmierer. * ANTLR ist eine Open Source Software. * ANTLR unterstützt Spezifikationen zur Bäume-Konstruktion, -Analyse und -Transformation. ANTLR wurde von Terence Parr aus der Universität von Los Angeles in 1989 geschrieben \ und wird auch von ihm gewartet. \ Weiter Informationen zu diesem Werkzeug finden Sie auf der ANTLR Homepage.

Weitere Software und Links

elipkg

Elipkg ist ein Bestandteil der SuSE-Linux Distribution. \ In diesem Paket ist ein sehr breites Spektrum von systematischen \ Methoden und Techniken des Übersetzerbaus durch Werkzeuge \ implementiert, aufeinander abgestimmt und in \ der Entwicklungsumgebung Eli zusammengefasst. \ Mit dem Eli-System kann man aus anwendungsnahen Spezifikationen \ vollständige Implementierungen von Sprachen und Übersetzungen in \ beliebige Zielsprachen automatisch generieren.

Die Webseite Catalog of Compiler Construction Tools

Eine Zusammenstellung von Freeware und kommerziellen Werkzeugen \ für Compiler-Entwickler. \ Die Homepage enthält Informationen aus den folgenden Bereichen: * Compiler Construction Kits * Lexer and Parser Generators * Trees and Transformation * Attribute Grammar Systems * Backend Generators * Programm Analysis and Optimisation * Environment Generators * Tools, Frameworks, Infrastructure * Compiler Construction with Java.