Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Automatisierte Compilergenerierung mit VCC aus AtoCC

Ähnliche Präsentationen


Präsentation zum Thema: "Automatisierte Compilergenerierung mit VCC aus AtoCC"—  Präsentation transkript:

1 Automatisierte Compilergenerierung mit VCC aus AtoCC
Michael Hielscher IIm06

2 Einführung Compilerbau bedeutet: Herstellung eines Programms (Compiler) zur Übersetzung (ST) einer Quellsprache S in eine Zielsprache T. Automatisierte Compiler-Konstruktion bedeutet: Ein sog. compiler compiler (z.B. VCC) nimmt die Beschreibungen von S und T sowie die jeweiligen Entsprechungen und erzeugt den ST Compiler. Dies soll hier vorgeführt werden am Bsp.: Filtern von Informationen aus dem Börsenumfeld.

3 Einführung Börsendaten werden im Videotext angezeigt Wir suchen uns die für uns gerade wichtigen Kurse heraus. Könnte dies nicht auch der Rechner für uns tun?

4 Zielstellung Unser Ziel: Börsendaten aus dem Videotext auslesen, wichtige Informationen herausfiltern und verarbeiten. Ausgabe soll eine Liste der Wertpapiere und ihre Entwicklung in Prozent (z.B.: Siemens +2,5%) sein. Technische Voraussetzungen: TV-Karte im Rechner um Videotext in den Rechner zu bekommen Empfang eines TV-Senders wie etwa ARD, N-TV…

5 Zielstellung 423 ARD/ZDF So 07.11.99 16:15:49 Frankfurter Börse 1/5
Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> 423 ARD/ZDF So :15:55 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AXA Col.VZ Babcock-Bors Babcock-BSH Bad.Wuert.Bk Barmag Balcke-Duerr BBS Benz, Rolf Berl.Freiver Berlin Hyp Berl. Kindl Bertelsm.Gen BHS tabletop Bijou Brig Binding ST Blaue Quel BMW VZ Boss,Hugo ST Boss,Hugo VZ Quelle: vwd >> Ergebnis: Videotext in Textdatei speichern Wir wollen die % Differenz berechnen und uns für jede Aktie ausgeben lassen – der Rest interessiert uns nicht (wie Quelle, Seite, Sender…)

6 Umsetzung Anhand des vorliegenden Formats (automatisch erstellte Video-Text-Datei) müssen wir eine formale Grammatik entwickeln. Was war gleich noch mal eine Grammatik? Ein Beispiel: Artikel Subjekt Verb Adjektiv Satzzeichen Der Hund bellt laut.  ein gültiger Satz Hund laut der . bellt  kein gültiger Satz  Eine Grammatik ist ein Regelwerk und beschreibt systematisch den Aufbau einer bestimmten Sprache.

7 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Wir wollen eine Grammatik für unsere Quellsprache S (VideoText-Daten in Form einer Textdatei) herstellen. Hierfür müssen wir die Struktur des Dokuments analysieren. Dies kann mitunter sehr schwierig sein! Versuchen wir es mal 

8 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Wir wollen eine Grammatik für unsere Quellsprache S (VideoText-Daten in Form einer Textdatei) herstellen. Hierfür müssen wir die Struktur des Dokuments analysieren. Dies kann mitunter sehr schwierig sein! Versuchen wir es mal  Seitennummer

9 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Wir wollen eine Grammatik für unsere Quellsprache S (VideoText-Daten in Form einer Textdatei) herstellen. Hierfür müssen wir die Struktur des Dokuments analysieren. Dies kann mitunter sehr schwierig sein! Versuchen wir es mal  Sender

10 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Wir wollen eine Grammatik für unsere Quellsprache S (VideoText-Daten in Form einer Textdatei) herstellen. Hierfür müssen wir die Struktur des Dokuments analysieren. Dies kann mitunter sehr schwierig sein! Versuchen wir es mal  Wochentag

11 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Wir wollen eine Grammatik für unsere Quellsprache S (VideoText-Daten in Form einer Textdatei) herstellen. Hierfür müssen wir die Struktur des Dokuments analysieren. Dies kann mitunter sehr schwierig sein! Versuchen wir es mal  Datum Uhrzeit

12 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Wir wollen eine Grammatik für unsere Quellsprache S (VideoText-Daten in Form einer Textdatei) herstellen. Hierfür müssen wir die Struktur des Dokuments analysieren. Dies kann mitunter sehr schwierig sein! Versuchen wir es mal  Datum Uhrzeit

13 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Achterbahn Agfa AGFB Akzo Nobel Albingia VZ Alcatel SEL Allianz Leb Allweiler VZ Alno Alsen AMB INH AM Leben AM Versich Andreae-N.Z Asea Brown ATB Antrieb Audi Autania Quelle: vwd >> Nach der Analyse aller Bestandteile können wir die Struktur durch eine Grammatik abbilden: Seite  Titelzeile Ort Seitenzahl Art Tabellenkopf Werte Ende Titelzeile  Zahl Sender Tag Datum Uhrzeit

14 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Quelle: vwd >> Da wir keine Informationen aus der Titelzeile, Ort, Seite … benötigen können wir die Grammatik stark vereinfachen: Seite Text Text Text Text Datum Uhrzeit Kassa Vortag Werte Text Text Werte Werte Zeile Zeile Zeile Text Kommazahl Kommazahl Kommazahl

15 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Quelle: vwd >> Da wir keine Informationen aus der Titelzeile, Ort, Seite … benötigen können wir die Grammatik stark vereinfachen: Seite Text Text Text Text Die mehrfachen Leerzeichen interessieren uns nicht! Datum Uhrzeit Kassa Vortag Werte Text Text Werte Werte Zeile Zeile Zeile Text Kommazahl Kommazahl Kommazahl

16 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Quelle: vwd >> Da wir keine Informationen aus der Titelzeile, Ort, Seite … benötigen können wir die Grammatik stark vereinfachen: Seite Text Text Text Text Die mehrfachen Leerzeichen interessieren uns nicht! Datum Uhrzeit Kassa Vortag Werte Text Text Werte Werte Zeile Zeile Zeile Text Kommazahl Kommazahl Kommazahl

17 Formale Grammatik für S
423 ARD/ZDF So :15:49 Frankfurter Börse /5 Deutsche Aktien :22: Kassa Vortag AAA Quelle: vwd >> Da wir keine Informationen aus der Titelzeile, Ort, Seite … benötigen können wir die Grammatik stark vereinfachen: Seite Text Text Text Was ist „Text“ ?: Beliebige Zeichenketten die nicht mehr als ein Leerzeichen hintereinander besitzen. Text Datum Uhrzeit Kassa Vortag Werte Text Text Werte Werte Zeile Zeile Zeile Text Kommazahl Kommazahl Kommazahl

18 Entwicklung eines Compilers
Wir haben jetzt eine Grammatik GS für unsere Quellsprache S (VT-Daten)  Nun soll ein Compiler erstellt werden da dies recht aufwendig ist, soll das doch bitte der Rechner selbst tun Wir müssen aber „beschreiben“ wie unsere Sprachen S und T nun genau aussehen und wie die Übersetzung erfolgen soll. Hierfür müssen wir zunächst die Arbeitsweise eines Compilers verstehen 

19 Der Scanner Zunächst muss der Rechner alle Bausteintypen (Kommazahl, Datum, Text,…) zuordnen. Man spricht von lexikalischer Analyse bei der die Eingabedatei in sogenannte Token zerlegt wird. Verantwortlich für diese Aufgabe ist der Scanner. VideoText Datei Scanner Tokenliste

20 Die Tokenliste Als Ergebnis liefert der Scanner eine Tokenliste die etwa wie folgt aussehen könnte: ( ("420 ARD/ZDF Mo :32:19" , Text) ("Frankfurter Börse", Text) ("6/6", Text) ("Neuer Markt", Text) (" ", Datum) ("15:15:00", Uhrzeit) ("Kassa", Kassa) ("Vortag", Vortag) ("Teleplan.... ", Text) ("137.10", Kommazahl) ("137.50", Kommazahl) ) 420 ARD/ZDF Mo :32:19 Frankfurter Börse /6 Neuer Markt :15: Kassa Vortag Teleplan Teles TePla ...

21 Die Tokenliste Als Ergebnis liefert der Scanner eine Tokenliste die etwa wie folgt aussehen könnte: ( ("420 ARD/ZDF Mo :32:19" , Text) ("Frankfurter Börse", Text) ("6/6", Text) ("Neuer Markt", Text) (" ", Datum) ("15:15:00", Uhrzeit) ("Kassa", Kassa) ("Vortag", Vortag) ("Teleplan.... ", Text) ("137.10", Kommazahl) ("137.50", Kommazahl) ) 420 ARD/ZDF Mo :32:19 Frankfurter Börse /6 Neuer Markt :15: Kassa Vortag Teleplan Teles TePla ... Betrachtet man nur die Tokenklassen (die blauen Teile) und reiht diese aneinander, entsteht die hier gezeigte Bausteinkette. Bezieht man dies wieder auf die unsere Sprache könnte man eine solche Kette auch für einen beliebigen deutschen Satz aufstellen (Artikel Subjektiv Verb usw.) Die Überprüfung ob die Bausteine in der richtigen Reihenfolge gemäß unserer Grammatik vorliegen ist also unser nächster Schritt. Bausteinkette: Text Text Text Text Datum Uhrzeit Kassa Vortag

22 Der Parser Nachdem die Bausteine erkannt wurden, muss entschieden werden, ob sie auch in der richtigen Reihenfolge vorliegen  dies steht in unser Grammatik für S  Der Parser verwendet die Grammatik und prüft, ob die Elemente der Tokenliste wirklich auf unsere Sprache passen. Der Parser selbst liefert als Ausgabe: true (w  S) / false (w  S). Wird durch einen Kellerautomaten beschrieben und weist das typische Akzeptorverhalten auf! W ist dabei ein Wort der Sprache s – in unserem Fall der Inhalt einer konkreten VT-Datei.

23 Der Compiler Der ST - Compiler ist das Gesamtprodukt aus Scanner, Parser und Zielcodegenerierung: VideoText Datei Scanner Tokenliste Parser Ausgabe

24 Der Compilergenerator
GS Nichtterminale Produktionsregeln Terminale Scanner Generator Parser Generator Die Terminale der Grammatik werden im Scannergenerator verwendet um die Token zu definieren. Die Nichtterminale und Produktionsregeln werden im Parsergenerator verwendet und werden praktisch 1:1 übertragen. Sehr einfache Produktionsregeln: Zahl  Ziffer Zahl | Ziffer werden teilweise bereits im Scanner abgebildet (RegExp) Die Terminale der Grammatik werden im Scanner verwendet um die wie besprochen Token zu bestimmen. Die Nichtterminale und Produktionsregeln werden im Parser verwendet und werden praktisch 1:1 übertragen. Zur Vereinfachung und aus Performancegründen, werden typischerweise sehr primitive Produktionsregeln und Nichtterminale die sich bereits mit den Schablonen (Regulären Ausdrücken) beschreiben lassen, im Scanner umgesetzt. Die Ausgabesprache T werden wir hier nicht formal durch eine Grammatik beschreiben. Während der Abarbeitung des Parsers (des Automatens) kann bei jeder erfolgreich angewendeten Produktionsregel ein Teilergebnis für die Ausgabe synthetisiert werden.

25 Der Compilergenerator
Der Scannergenerator benötigt „Schablonen“ wie eine bestimmter Bausteintyp aussehen soll. Beispiel Kommazahl mit zwei Nachkommastellen (regulärer Ausdruck): [0-9]+\.[0-9][0-9]    

26 Der Compilergenerator
GS Nichtterminale Produktionsregeln Terminale GT Scanner Generator Parser Generator Während der Abarbeitung des Parsers (des Automatens) kann bei jeder erfolgreich angewendeten Produktionsregel ein Teilergebnis für die Ausgabe synthetisiert werden. Die „Übersetzungsaktionen“ im Parsergenerator: Die Terminale der Grammatik werden im Scanner verwendet um die wie besprochen Token zu bestimmen. Die Nichtterminale und Produktionsregeln werden im Parser verwendet und werden praktisch 1:1 übertragen. Zur Vereinfachung und aus Performancegründen, werden typischerweise sehr primitive Produktionsregeln und Nichtterminale die sich bereits mit den Schablonen (Regulären Ausdrücken) beschreiben lassen, im Scanner umgesetzt. Die Ausgabesprache T werden wir hier nicht formal durch eine Grammatik beschreiben. Während der Abarbeitung des Parsers (des Automatens) kann bei jeder erfolgreich angewendeten Produktionsregel ein Teilergebnis für die Ausgabe synthetisiert werden. Zeile Text Kommazahl Kommazahl Kommazahl Output.WriteLine ("Aktienname: " + $1);

27 Automatisierte Compilergenerierung mit VCC
Nachdem wir nun wissen wie ein Compiler arbeitet, können wir einen „Compilergenerator“ verwenden. Ein solches Werkzeug erstellt einen Compiler aus der Grammatik GS und den Übersetzungsaktionen. Beispiele für Scanner-/Parsergeneratoren: LEX & YACC ANTLR JavaCC VCC (Visual Compiler Compiler)

28 Automatisierte Compilergenerierung mit VCC
Warum gerade VCC? VCC wurde speziell für didaktische Zwecke entwickelt. Verlang wenig technisches Hintergrundwissen um das Werkzeug einzusetzen. Erlaubt die Generierung von Compilern in mehreren Sprachen (Java, C# .NET, Scheme) Eine Compilerdefinition wird in einer einzigen XML Datei abgelegt – einfach zu verwalten.

29 Automatisierte Compilergenerierung mit VCC
Übertragen unserer: Bausteinnamen und Schablonen (Scanner) Grammatik (Parser)

30 Automatisierte Compilergenerierung mit VCC
Übertragen unserer: Bausteinnamen und Schablonen (Scanner) Grammatik (Parser)

31 Automatisierte Compilergenerierung mit VCC
Ausgabe: Zielstellung war: Eine Liste der Wertpapiere und ihre Entwicklung in Prozent (z.B.: Siemens +2,5%). Wir fügen eine „Übersetzungsaktion“ als kleines Stück Quelltext in unseren Parser ein:

32 Automatisierte Compilergenerierung mit VCC
Berechnung über Dreisatz: Differenz in %

33 Ergebnis Fertiger Compiler nach einem Mausklick
S  T Compiler als Programmtext in der gewählten Sprache Übersetzen des ST Compilers in eine ausführbare Datei Videotext Datei Ausgabe Datei/Console

34 Ergebnis Test des ST Compilers mit einer VT-Datei:

35 Andere Anwendungsbeispiele
// Setting Variables x and y x = 200; y = 200; // some pattern illustrating // parameters, loops and other features Procedure kr(w,l) { [x,y] Kreis; [x,y] in rgb(1,1,0) Sector w/2; For i=w Step w To 359 Do [x,y] <i in blau Sector w/2; [150+x,y-100] %200 Quadrat; [200+x,y-50] { For i=1 Step 1 To l Do %100/i <i*-20 [0, 50] in rgb(1, i*1/l,0) Quadrat ; } KLX: eine durch Studenten entwickelte Programmiersprache die in PDF übersetzt werden kann

36 Andere Anwendungsbeispiele
PL/0  Scheme Compiler DTD  VCC Compiler Das Entwickeln einer eigener kleinern Programmiersprache ist für Studenten immer eine motivierende und spannende Aufgabe 

37 Vielen Dank für Ihre Aufmerksamkeit
AtoCC besteht aus 5 Komponenten: AutoEdit, AutoEdit Workbook, TDiag, VCC und SchemeEdit. Weitere Informationen erhalten Sie unter: Vielen Dank für Ihre Aufmerksamkeit


Herunterladen ppt "Automatisierte Compilergenerierung mit VCC aus AtoCC"

Ähnliche Präsentationen


Google-Anzeigen