Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Übersetzerbau 1 (Übersicht)
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
pruefungen:hauptstudium:ls2:ueb1-2012-02 [12.04.2012 17:55] – neverpanic | pruefungen:hauptstudium:ls2:ueb1-2012-02 [29.09.2012 14:54] (aktuell) – buntfalke | ||
---|---|---|---|
Zeile 34: | Zeile 34: | ||
==== Innere Klassen in Java ==== | ==== Innere Klassen in Java ==== | ||
- | |||
**P:** Gegeben: Blatt mit Pseudo-Code \\ | **P:** Gegeben: Blatt mit Pseudo-Code \\ | ||
Class " | Class " | ||
Zeile 57: | Zeile 56: | ||
**S:** Class " | **S:** Class " | ||
- | |||
class Outer { | class Outer { | ||
public static int a; | public static int a; | ||
private static int b; | private static int b; | ||
+ | | ||
public int i; | public int i; | ||
private int j; | private int j; | ||
- | static access$0{..} // getB() because var is private | + | static |
- | static access$1{..} // setB() because var is private | + | |
- | | + | } |
- | access$3{..} // setJ() because var is private | + | |
- | foo(){ | + | |
- | // ?? I think " | + | |
- | Outer.a++; | + | |
- | // b++; | + | |
- | int temp = Outer.getB(); | + | |
- | Outer.setB( temp+1 ); | + | |
| | ||
- | this$0.i++; //" | + | static int access$1(int b) { |
- | // j++; | + | Outer.b = b; // setB() |
- | int temp = getJ(); | + | |
- | setJ( temp+1 | + | |
+ | static | ||
+ | return o.j; // getJ() because var is private | ||
} | } | ||
+ | | ||
+ | static int access$3(Outer o, int j) { | ||
+ | return o.j = i; // setJ() because var is private | ||
+ | } | ||
+ | | ||
} | } | ||
+ | | ||
class Outer$Inner{ | class Outer$Inner{ | ||
Outer this$0; // needed e.g. for i++ | Outer this$0; // needed e.g. for i++ | ||
- | Outer$Inner( Outer outer ){ | + | |
+ | Outer$Inner(Outer outer) { | ||
this$0 = outer; | this$0 = outer; | ||
} | } | ||
- | foo(){...} | + | |
+ | void foo() { | ||
+ | Outer.a++; //" | ||
+ | |||
+ | // b++; | ||
+ | Outer.access$1(Outer.access$0() + 1); | ||
+ | |||
+ | this$0.i++; | ||
+ | |||
+ | // j++; | ||
+ | Outer.access$3(this$0, | ||
+ | } | ||
} | } | ||
==== SV-Verweis ==== | ==== SV-Verweis ==== | ||
- | |||
**P:** Sowas wie " | **P:** Sowas wie " | ||
**S:** SV-Verweis statischer Vorg.-Verweis | **S:** SV-Verweis statischer Vorg.-Verweis | ||
Zeile 129: | Zeile 140: | ||
==== Stack-Frame ==== | ==== Stack-Frame ==== | ||
- | |||
**P:** Stack-Frame Aufbau. | **P:** Stack-Frame Aufbau. | ||
**S:** Zeichnung vereinfachter Stack (max. bis 0) | **S:** Zeichnung vereinfachter Stack (max. bis 0) | ||
Zeile 143: | Zeile 153: | ||
==== Compiler-Komponenten und deren Zusammenspiel am Bsp. assert ==== | ==== Compiler-Komponenten und deren Zusammenspiel am Bsp. assert ==== | ||
- | |||
**P:** Ausgehend von Übungs-Compiler-Sprache, | **P:** Ausgehend von Übungs-Compiler-Sprache, | ||
neues Feature einbauen: \\ | neues Feature einbauen: \\ | ||
Zeile 244: | Zeile 253: | ||
Gelerntes erklären und ausformulieren am besten mit Lernpartner vor der mündl. Prüfung üben. | Gelerntes erklären und ausformulieren am besten mit Lernpartner vor der mündl. Prüfung üben. | ||
(" | (" | ||
- |