Skriptes - Uni Bremen - Universität Bremen
Skriptes - Uni Bremen - Universität Bremen
Skriptes - Uni Bremen - Universität Bremen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Teil I + II: Automatentheorie und<br />
formale Sprachen<br />
Formale Sprachen, also (endliche oder unendliche) Mengen von Wörtern, sind ein wichtiger<br />
Abstraktionsmechanismus der Informatik. Hier ein paar Anwendungsbeispiele:<br />
• Die Menge aller wohlgeformten Programme in einer gegebenen Programmiersprache<br />
wie Pascal, Java oder C++ ist eine formale Sprache.<br />
• Die Menge aller wohlgeformten Eingaben für ein Programm ist eine formale Sprache.<br />
• Die Menge aller wohlgeformten Eingaben für ein Eingabefeld auf einer Webseite<br />
ist eine formale Sprache (z.B. Menge aller Kontonummern / Menge aller Geburtsdaten).<br />
• Jeder Suchausdruck (z.B. eine Regular Expression in Linux ) definiert eine formale<br />
Sprache: die Menge der Dokumente, in der der Ausdruck zu finden ist.<br />
• Kommunikationsprotokolle: die Menge aller wohlgeformten TCP-Pakete kann als<br />
eine formale Sprache betrachtet werden.<br />
• Das “erlaubte Verhalten” von Soft- und Hardwaresystemen kann in sehr natürlicher<br />
Weise als formale Sprache modelliert werden.<br />
Wir beginnen mit einem kurzen Überblick über die zentralen Betrachtungsgegenstände<br />
und Fragestellungen.<br />
1. Charakterisierung:<br />
Nützliche und interessante formale Sprachen sind i.d.R. unendlich. Dies ist auch in<br />
den obigen Beispielen der Fall, denn es gibt zum Beispiel unendlich viele wohlgeformte<br />
Pascal-Programme. Die Frage ist nun: Wie beschreibt man derartige Sprachen<br />
mit endlichem Aufwand? Wir betrachten folgende Möglichkeiten.<br />
• Automaten oder Maschinen, die genau die Elemente der Menge akzeptieren.<br />
Wir werden viele verschiedene Automatenmodelle kennenlernen, wie z.B. endliche<br />
Automaten, Kellerautomaten und Turingmaschinen.<br />
• Grammatiken, die genau die Elemente der Menge generieren; auch hier gibt<br />
es viele verschiedene Typen, z.B. rechtslineare Grammatiken und kontextfreie<br />
Grammatiken (vgl. auch VL „Praktische Informatik“: kontextfreie Grammatiken<br />
(EBNF) zur Beschreibung der Syntax von Programmiersprachen).<br />
7