Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Übersetzerbau 1

Übersetzerbau 1

  • „Grundlagen des Übersetzerbaus“ uebbau WS 2012/2013
  • „Übungen zu Grundlagen des Übersetzerbaus“
  • ~ 30 min.
  • Prüfung oder benoteter Leistungsnachweis zu Programmiersysteme (7,5 ECTS)

Prüfer: Prof. Dr. Michael Philippsen
Beisitz: Dipl.-Math. Jakob Krainz
Papier + Stift bereitgestellt
versch. Blätter mit Pseudo-Code für Prüfungsfragen vorhanden

void f(int x) {
    a = b + c                         (1)
    x[2][b][3+4] += a                  (2)
}

(P) Was macht der Compiler?

(S) Lexer geht durch, ist endl automat. Eintrag in Namenstabelle nicht vergessen!(lalala)

Parser: Parst Ergebnis vom Lexer, versucht Grammatik anzuwenden. Buzzword: Rekursiver Abstieg (P) was kommt dabei raus?

(S) Teilw. Atr. Sr. Tbaum

(P) was kommt danach?

(S) Semant. Analyse. mit typpruefung, Semantische ueberpruefung auf korrektheit (hier war ich wohl bissl ungenau)

(P) wie geht die Typueberpruefung in (1) s.O.

(S) baum hinmalen, durchlaufen, prototypen mitnehmen

(P) geht das immer so?

(S) nein, wenn infos von spaeter gebraucht werden um den typ festzustellen.

(P) wir ham da dieses +=, wie baut man das ein

(S) an die richtige stelle in der grammatik einfuegen, lexer muss es kennen etc

(P) jetz soll die Zielsprache das nicht koennen, was tun?

(S) auf einfache addition abbilden (tmp = x[]…. + b; x[]…. = tmp;)

(P) was kann schiefgehen?

gemeint war wenn im array zugriff eine funktion steht (x[b()]) wird sie 2mal aufgerufen.

(P) wenn man den code jetz uebersetzen will, wie geht man vor

(S) man muss moegl. ersetzungsstrategien wissen (→ risc) dann kann man G&G machen, DP oder Baumersetzung etc. kurz darauf eingegangen dass da registerverteilung unabh. gemacht wird → suboptimal, aber leichter. dann baum in praefix hinschreiben, shift reduce machen, lookahead damits keine toten enden gibt.

(P) und was macht man jetz mit den registern?

(S) get reg, graph faerben. graph faerben dann ansatzweise ausgefuehrt. was machen wenn Grad <( oder = ) Registerzahl etc siehe Folien {(P) was ist eine kante, was ein knoten, was ist eine lebensspanne}

(P) zeit is rum

(S) echt? mist.

note war 1.7. das war auch fair. mein problem war hauptsaechlich dass ich nicht exakt genug auf die frage geantwortet hab. ein grosses wissen und verstaendniss darueber zu haben was man tut genuegt nicht unbedingt. man muss auch bei den fragen verstehen was genau gefragt ist und schnell genug antworten. note waere wohl besser geworden wenn ich am anfang schneller auf die namenstabelle & den rekursiven abstieg gekommen waer. das is an sich was echt einfaches, aber dann fehlt die zeit um am ende zu zeigen was man eigtl alles kann.