Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Ähnliche Präsentationen


Präsentation zum Thema: "Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06."—  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. 2

3 Einführung 3 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 4 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 ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22:00 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 2/5 Deutsche Aktien :22:08 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 >>

6 Umsetzung 6 formale Grammatik 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 7 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 423 ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22:00 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 >>

8 Formale Grammatik für S ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22:00 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 >> Seitennummer 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

9 Formale Grammatik für S ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22:00 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 >> Sender 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

10 Formale Grammatik für S ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22:00 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 >> Wochentag 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

11 Formale Grammatik für S ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22:00 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 >> DatumUhrzeit 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

12 Formale Grammatik für S :15: ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22: :22:00 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 >> DatumUhrzeit 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

13 Formale Grammatik für S 13 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 … :15: ARD/ZDF So :15:49 Frankfurter Börse 1/5 Deutsche Aktien :22: :22:00 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 >>

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

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

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

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

18 Entwicklung eines Compilers 18 Wir haben jetzt eine Grammatik G S 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 19 lexikalischer Analyse 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.

20 Die Tokenliste 20 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/6 Neuer Markt :15:00 Kassa Vortag Teleplan Teles TePla

21 Die Tokenliste 21 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) … ) Bausteinkette: Text Datum Uhrzeit Kassa Vortag … … 420 ARD/ZDF Mo :32:19 Frankfurter Börse 6/6 Neuer Markt :15:00 Kassa Vortag Teleplan Teles TePla

22 Der Parser 22 Nachdem die Bausteine erkannt wurden, muss entschieden werden, ob sie auch in der richtigen Reihenfolge vorliegen dies steht in unser Grammatik für S Parser 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!

23 Der Compiler 23 Compiler Der S T - Compiler ist das Gesamtprodukt aus Scanner, Parser und Zielcodegenerierung:

24 Der Compilergenerator 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) 24 GSGS Scanner Generator Parser Generator Nichtterminale Produktionsregeln Terminale

25 Der Compilergenerator 25 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 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: 26 GSGS Scanner Generator Parser Generator Nichtterminale Produktionsregeln Terminale GTGT Zeile Text Kommazahl Output.WriteLine ("Aktienname: " + $1);

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

28 Automatisierte Compilergenerierung mit VCC 28 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 29 Übertragen unserer: Bausteinnamen und Schablonen (Scanner) Grammatik (Parser)

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

31 Automatisierte Compilergenerierung mit VCC 31 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 32 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 33 Videotext Datei Ausgabe Datei/Console

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

35 Andere Anwendungsbeispiele 35 // 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]

36 Andere Anwendungsbeispiele 36 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 AtoCC besteht aus 5 Komponenten: AutoEdit, AutoEdit Workbook, TDiag, VCC und SchemeEdit. Weitere Informationen erhalten Sie unter:


Herunterladen ppt "Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06."

Ähnliche Präsentationen


Google-Anzeigen