HAG 1 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Compilerbau Seminar Attributgrammatiken höherer Ordnung Gunter Ohrner
HAG 2 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Motivation Idee / Prinzip Definitionen Beispiel Attributauswertung Wohldefiniertheit Schlussbemerkungen
HAG 3 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Motivation
HAG 4 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner ● Herkömmliche Attributgrammatiken: ● geeignet für Modellierung vieler textverarbeitender Prozesse und Systeme ● Aber: ● Prozesse, bei denen Ausgangswort in verschiedenen Stufen in Zielwort über-setzt wird schwer darstellbar ● Struktur des Syntaxbaumes abhängig von zugrunde liegender CFG, für weitere Verarbeitung häufig ungünstig ● Übersetzungsprozesse mit „dynamischer Semantik” nicht gut modellierbar Motivation 1
HAG 5 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Motivation 2 ● Deswegen: Attributgrammatiken höherer Ordnung ● Erweiterung herkömmlicher Attributgrammatiken ● Attributgrammatiken „höherer Ordnung” in Anlehnung an Funktionen „höherer Ordnung”: ● Parsebäume können in Attributvariablen berechnet werden ● Änderung / Anpassung des Ableitungsbaumes während Attributauswertung somit möglich!
HAG 6 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Idee / Prinzip
HAG 7 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Ableitungsbäume in Attributvariablen – 1 1. Einführung von lokalen Attributen bei Attributgrammatiken 2. Einführung von nicht-terminalen Attributen ● Nichtterminal-Attribute: ● Entsprechung von Attributen bei Nichtterminal-Symbolen („Zwitter”) ● gelten bei Berechnung des Ableitungsbaumes als NULL-Nichtterminale, (d.h. Nichtterminale, für die nur leere Ableitung existiert) Blätter im Ableitungsbaum ● können Ableitungsbäume als Attributwerte zugewiesen bekommen erweiterung des Ableitungsbaumes
HAG 8 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Ableitungsbäume in Attributvariablen – 2 ⇨ NTA
HAG 9 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Ableitungsbäume in Attributvariablen – 3 Problem:Darstellung von Ableitungsbäumen als Attributwerte Erinnerung:Attributwerte nicht auf Zahlen beschränkt („durch Funktionen berechenbare Objekte”) Lösung:Repräsentation von Ableitungsbäumen durch Objekte geeig- neter mathematischen Struktur Einer CFG G wird eine Signatur G = zugeordnet, wobei jeder Produktion aus G eine Funktion f aus G entspricht. ⇨
HAG 10 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Ableitungsbäume in Attributvariablen – 4 ⇨ Darstellung des Ausdrucks „815 ⋅ 47” als Strukturbaum und als Objekt der zugeordneten Struktur.
HAG 11 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Definitionen
HAG 12 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributgrammatiken mit lokalen Attributen – 1 Ergänzung zur Definition einer AG aus der Vorlesung:
HAG 13 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributgrammatiken mit lokalen Attributen – 2 S A erg1.0erg2.0 lok einattr.0 Produktion mit lokalem Attribut: Abhängigkeitsgraph der Produktion
HAG 14 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Nichtterminal-Attribute ● AG HAG: Nichtterminal-Attribute ● Verwendung lokaler Attribute als Nichtterminal-Symbole ● verhalten sich beim Erstellen des Ableitungsbaumes wie NULL-Nichtterminal-Symbole (ex. nur leere Produktion N, NTAs dadurch zunächst Blätter im Ableitungsbaum) (virtuelles Nichtterminal) ● können während der Attributberechnung einen Ableitungsbaum t aus einer Struktur mit Signatur G zugewiesen bekommen ● der ursprüngliche Ableitungsbaum wird so an Position des NTAs erweitert (instantiiertes Nichtterminal)
HAG 15 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Vollständigkeit von HAGs ● Vollständigkeit einer Attributgrammatik höherer Ordnung: ● alle NTA einer Produktion lokale Attribute ● alle NTA in Produktionen auf rechten Seiten ● ein NTA einer Produktion nie Funktionsparameter ● alle Zuweisungen zu NTAs korrekt getypt
HAG 16 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Beispiel
HAG 17 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Beispiel – 1 ● Beispiel: ● Attributgrammatik höherer Ordnung für Berechnung einfacher arithmetische Ausdrücke ● Auswertungsreihenfolge der Operatoren vor jeder Berechnung definierbar ● Idee: ● berechne anhand einfacher Grammatik Ableitungsbaum für Ausdruck ● berechne aufgrund Operatorprioritäten während Attributauswertung angepassten Ableitungsbaum t' ● Zuweisung von t' zu einem Nichtterminal-Attribut ursprünglicher Ableitungsbaum wird erweitert ● Fortsetzen der Attributauswertung
HAG 18 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Beispiel – 2 Idee: zwei Kellerspeicher zum Aufbau des fertigen Ausdrucks merke dir Operatoren und Prioritäten auf Stack 1, speichere und gruppiere Operanden auf Stack 2
HAG 19 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Beispiel – 3
HAG 20 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Beispiel – 4 Abkürzung für
HAG 21 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Beispiel – 5
HAG 22 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributauswertung
HAG 23 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributauswertung – Begriffe Attributvariablen Begriffe: ● effektiv berechenbar: nicht (indirekt) von sich selber abhängig ● bereit für die Auswertung: bei definierender Attributgleichung bereits alle Funktionsparameter ausgewertet ● Wohldefiniertheit einer AG: gdw. alle Attribute effektiv berechenbar und Ableitungsbaum hat nur endliche Erweiterungen
HAG 24 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributauswertungs-Algorithmus
HAG 25 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributauswertung in HAGs: ● ähnlich wie in herkömmlichen Attributgrammatiken ● zyklische Abhängigkeiten zwischen Attributen können auch bei Attributauswertung entstehen ● NTA kann von erst in darunterliegenden Teilbaum berechneten synthetischen Attribut abhängen ● prinzipiell unbegrenztes Wachstum des Ableitungsbaumes ⇒ „strenge” Bedingungen an Attributgrammatiken höherer Ordnung, um Berechenbarkeit der Attribute zu gewährleisten ⇒ Definition einer erweiterten Abhängigkeitsrelation ⇒ Begriff der „wohldefinierten” Attributgrammatik Attributauswertung – Probleme
HAG 26 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Attributauswertung – erweiterte Abhängigkeitsrelation Sei die erweiterte Kantenrelation. ist die Abhängigkeitsrelation über dem Ableitungsbaum t zu einem Wort L(G). Zyklen in Relation ⇔ nicht effektiv berechenbare Attributvariablen in t
HAG 27 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Wohldefiniertheit
HAG 28 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Wohldefiniertheit – Definition alle Attribute effektiv berechenbar es werden keine Attribute „übergangen” nur endliche Erweiterungen Attributauswertung terminiert Aber: endliche Erweiterung im Allgemeinen unentscheidbar
HAG 29 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Wohldefiniertheit – Bedingungen 1 ● wünschenswert: ● garantiert endliche und vollständige Attributauswertung ● also wohldefinierte Attributgrammatiken ● Lösung: ● Einschränkung „zugelassener” HAGs
HAG 30 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Wohldefiniertheit – Bedingungen 2
HAG 31 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner beschränkte Wohldefiniertheit ● ⇒ Wohldefiniertheit garantiert ● aber: ● „erlaubte” HAGs stark eingeschränkt. ● Kompromiss: beschränkt wohldefinierte Attributgrammatiken ● Forderungen: im entgrateten Ableitungsbaum alle Attribute effektiv berechenbar und jede rekursive Produktion erzeugt nur endliche Wörter ● Kompromiss zwischen Handhabbarkeit und Ausdrucksstärke ● erlaubt Berechnung rekursiver Funktionen (Turing-Vollständigkeit!) mit HAGs ohne aufwändige Attributgleichungen
HAG 32 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner HAG für Fibonacci-Zahlen (param.0 ≥ 0)
HAG 33 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Schlussbemerkungen
HAG 34 Compilerbau Seminar – Thema: Attributgrammatiken höherer Ordnung.Gunter Ohrner Fazit ● HAG beheben zahlreiche Nachteile herkömmlicher Attributgrammatiken ● geeigneter Formalismus zur Darstellung mehrstufiger Übersetzungsprozesse ● nicht allzu weit verbreitet (Google: gut 400 Treffer) ● auch bzw. vor allem in den letzten Jahren in einigen wissenschaftlichen Ausarbeitungen thematisiert ( ● z.B. Ansätze zur Verwendung von HAGs für die „Hardwaresynthese” ( ● u.a. implementiert in LRC und AG, Tools zur Erzeugung von sprachverarbeitenden Systemen auf der Basis von Attributgrammatiken