Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

37
Automatisierte Compilergenerieru ng mit VCC aus AtoCC Michael Hielscher IIm06

Transcript of Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Page 1: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Automatisierte Compilergenerierung

mit VCC aus AtoCC

Michael Hielscher IIm06

Page 2: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Einführung

Compilerbau bedeutet: Herstellung eines Programms (Compiler) zur Übersetzung (ST) 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 ST Compiler.

Dies soll hier vorgeführt werden am Bsp.: Filtern von Informationen aus dem Börsenumfeld.

2

Page 3: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Einführung3

Börsendaten werden im Videotext angezeigt

Wir suchen uns die füruns gerade wichtigenKurse heraus.

Könnte dies nicht auchder Rechner für uns tun?

Page 4: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Zielstellung4

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…

Page 5: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Zielstellung5

423 ARD/ZDF So 07.11.99 16:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.99 18:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 Quelle: vwd >>

423 ARD/ZDF So 07.11.99 16:15:55 Frankfurter Börse 2/5 Deutsche Aktien 05.11.99 18:22:08 Kassa Vortag AXA Col.VZ.. 86.10 86.00 86.20 Babcock-Bors 40.00 39.50 38.50 Babcock-BSH. 3.29 3.29 3.30 Bad.Wuert.Bk 34.50 34.50 34.50 Barmag...... 15.50 15.30 15.40 Balcke-Duerr 10.70 10.70 10.60 BBS......... 20.00 20.00 20.50 Benz, Rolf.. 20.00 20.00 20.00 Berl.Freiver 23.45 23.40 23.60 Berlin Hyp.. 32.00 32.00 32.00 Berl. Kindl. 200.00 200.00 200.00 Bertelsm.Gen 224.60 224.60 224.70 BHS tabletop 8.90 8.90 8.90 Bijou Brig.. 25.60 25.70 25.48 Binding ST.. 202.00 202.00 202.00 Blaue Quel.. 440.00 440.00 440.00 BMW VZ...... 13.95 13.75 13.76 Boss,Hugo ST 106.00 106.00 109.00 Boss,Hugo VZ 128.50 128.40 128.75 Quelle: vwd >>

Page 6: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Umsetzung6

Anhand des vorliegenden Formats (automatisch erstellte Video-Text-Datei) müssen wir eine formale Grammatik 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.

Page 7: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S7

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 07.11.99 16:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.99 18:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 Quelle: vwd >>

Page 8: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S8

423 ARD/ZDF So 07.11.99 16:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.99 18:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 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

Page 9: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S9

423 ARD/ZDF So 07.11.99 16:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.99 18:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 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

Page 10: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S10

423 ARD/ZDF So 07.11.99 16:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.99 18:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 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

Page 11: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S11

423 ARD/ZDF So 07.11.99 16:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.99 18:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 Quelle: vwd >>

Datum Uhrzeit 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

Page 12: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S12

423 ARD/ZDF So 07.11.9907.11.99 16:15:4916:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.9905.11.99 18:22:0018:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 Quelle: vwd >>

Datum Uhrzeit 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

Page 13: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S13

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

423 ARD/ZDF So 07.11.9907.11.99 16:15:4916:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.9905.11.99 18:22:0018:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 Achterbahn.. 89.00 91.00 92.00 Agfa........ 18.40 18.55 18.62 AGFB........ 11.90 11.92 11.85 Akzo Nobel.. 180.00 180.00 180.00 Albingia VZ. 658.00 658.00 658.00 Alcatel SEL. 155.00 155.00 156.00 Allianz Leb. 505.00 505.00 501.00 Allweiler VZ 200.00 200.00 200.00 Alno........ 8.60 8.60 8.50 Alsen....... 21.51 21.51 21.51 AMB INH..... 80.00 79.50 79.00 AM Leben.... 280.00 280.00 280.00 AM Versich.. 203.00 203.00 203.00 Andreae-N.Z. 28.50 28.50 28.50 Asea Brown.. 259.00 259.00 248.00 ATB Antrieb. 27.20 27.20 27.20 Audi........ 69.00 69.00 68.00 Autania..... 8.05 8.05 8.00 Quelle: vwd >>

Page 14: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S14

423 ARD/ZDF So 07.11.9907.11.99 16:15:4916:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.9905.11.99 18:22:0018:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 … Quelle: vwd >>

Da wir keine Informationen aus der Titelzeile, Ort, Seite … benötigen können wir die Grammatik stark vereinfachen:

TextText

Text

Text

Text

Text

Text

Text

Datum

Datum

Uhrzeit

Uhrzeit

Kassa

Kassa

Vortag

Vortag

Seite

Seite

WerteWerte

Werte

Werte

Text

Text

Text

Text

Werte

Werte

Zeile

Zeile

Zeile

Zeile

Zeile

Zeile

Text

Text

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Page 15: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S15

423 ARD/ZDF So 07.11.9907.11.99 16:15:4916:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.9905.11.99 18:22:0018:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 … Quelle: vwd >>

Da wir keine Informationen aus der Titelzeile, Ort, Seite … benötigen können wir die Grammatik stark vereinfachen:

TextText

Text

Text

Text

Text

Text

Text

Datum

Datum

Uhrzeit

Uhrzeit

Kassa

Kassa

Vortag

Vortag

Seite

Seite

WerteWerte

Werte

Werte

Text

Text

Text

Text

Werte

Werte

Zeile

Zeile

Zeile

Zeile

Zeile

Zeile

Text

Text

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Die mehrfachen Leerzeichen interessieren uns

nicht!

Page 16: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S16

423 ARD/ZDF So 07.11.9907.11.99 16:15:4916:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.9905.11.99 18:22:0018:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 … 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

Text

Text

Text

Text

Text

Text

Text

Datum

Datum

Uhrzeit

Uhrzeit

Kassa

Kassa

Vortag

Vortag

Seite

Seite

Werte

Werte

Werte

Werte

Text

Text

Text

Text

Werte

Werte

Zeile

Zeile

Zeile

Zeile

Zeile

Zeile

Text

Text

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Page 17: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Formale Grammatik für S17

423 ARD/ZDF So 07.11.9907.11.99 16:15:4916:15:49 Frankfurter Börse 1/5 Deutsche Aktien 05.11.9905.11.99 18:22:0018:22:00 Kassa Vortag AAA......... 6.75 6.75 6.75 … 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

Text

Text

Text

Text

Text

Text

Text

Datum

Datum

Uhrzeit

Uhrzeit

Kassa

Kassa

Vortag

Vortag

Seite

Seite

Werte

Werte

Werte

Werte

Text

Text

Text

Text

Werte

Werte

Zeile

Zeile

Zeile

Zeile

Zeile

Zeile

Text

Text

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Page 18: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Entwicklung eines Compilers

18

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

Page 19: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Der Scanner19

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

Page 20: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Die Tokenliste20

Als Ergebnis liefert der Scanner eine Tokenliste die etwa wie folgt aussehen könnte:

( ("420 ARD/ZDF Mo 08.11.99 15:32:19" , Text) ("Frankfurter Börse", Text) ("6/6", Text) ("Neuer Markt", Text) ("08.11.99", Datum) ("15:15:00", Uhrzeit) ("Kassa", Kassa) ("Vortag", Vortag) ("Teleplan.... ", Text) ("137.10", Kommazahl) ("137.10", Kommazahl) ("137.50", Kommazahl) …)

420 ARD/ZDF Mo 08.11.99 15:32:19 Frankfurter Börse 6/6 Neuer Markt 08.11.99 15:15:00 Kassa Vortag Teleplan.... 137.10 137.10 137.50 Teles....... 32.50 31.90 34.00 TePla....... 12.65 12.90 12.85 ...

Page 21: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Die Tokenliste21

Als Ergebnis liefert der Scanner eine Tokenliste die etwa wie folgt aussehen könnte:

( ("420 ARD/ZDF Mo 08.11.99 15:32:19" , Text) ("Frankfurter Börse", Text) ("6/6", Text) ("Neuer Markt", Text) ("08.11.99", Datum) ("15:15:00", Uhrzeit) ("Kassa", Kassa) ("Vortag", Vortag) ("Teleplan.... ", Text) ("137.10", Kommazahl) ("137.10", Kommazahl) ("137.50", Kommazahl) …) Bausteinkette:Bausteinkette:

Text

Text

Text

Text

Text

Text

Text

Text

Datum

Datum

Uhrzeit

Uhrzeit

Kassa

Kassa

Vortag

Vortag

……

420 ARD/ZDF Mo 08.11.99 15:32:19 Frankfurter Börse 6/6 Neuer Markt 08.11.99 15:15:00 Kassa Vortag Teleplan.... 137.10 137.10 137.50 Teles....... 32.50 31.90 34.00 TePla....... 12.65 12.90 12.85 ...

Page 22: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Der Parser22

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 ParserParser 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!

Page 23: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Der Compiler23

Der ST - CompilerCompiler ist das Gesamtprodukt aus Scanner, Parser und Zielcodegenerierung:

Page 24: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

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

GS

ScannerGenerato

r

Parser Generato

r

NichtterminaleProduktionsregelnTerminale

Page 25: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Der Compilergenerator25

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]

121.34 0815 0.00 54.0

Page 26: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

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

GS

Scanner Generato

r

Parser Generato

r

NichtterminaleProduktionsregelnTerminale

GT

Zeile

Zeile

Text

Text

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Kommazahl

Output.WriteLine ("Aktienname: " + $1);

Page 27: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

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 GS und den Übersetzungsaktionen.

Beispiele für Scanner-/Parsergeneratoren: LEX & YACC ANTLR JavaCC VCC (Visual Compiler Compiler)VCC (Visual Compiler Compiler)

Page 28: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

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.

Page 29: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Automatisierte Compilergenerierung mit VCC

29

Übertragen unserer: Bausteinnam

en und Schablonen (Scanner)

Grammatik (Parser)

Page 30: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Automatisierte Compilergenerierung mit VCC

30

Übertragen unserer: Bausteinnam

en und Schablonen (Scanner)

Grammatik (Parser)

Page 31: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

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:

Page 32: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Automatisierte Compilergenerierung mit VCC

32

Berechnung über Dreisatz:Differenz in %

Page 33: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Ergebnis

Fertiger Compiler nach einem Mausklick S T Compiler als Programmtext in der

gewählten Sprache Übersetzen des ST Compilers in eine

ausführbare Datei

33

Videotext Datei Ausgabe Datei/Console

Page 34: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Ergebnis34

Test des ST Compilers mit einer VT-Datei:

Page 35: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Andere Anwendungsbeispiele

35

// Setting Variables x and yx = 200;y = 200;

// some pattern illustrating// parameters, loops and other featuresProcedure 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 ; }}

// Setting Variables x and yx = 200;y = 200;

// some pattern illustrating// parameters, loops and other featuresProcedure 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

Page 36: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

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

Page 37: Automatisierte Compilergenerierung mit VCC aus AtoCC Michael Hielscher IIm06.

Vielen Dank für Ihre Aufmerksamkeit

AtoCCAtoCC

besteht aus 5 Komponenten: AutoEdit, AutoEdit Workbook, TDiag, VCC und SchemeEdit.

Weitere Informationen erhalten Sie

unter: www.atocc.de