Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Lexer und Parser   (Übersicht)

Pruefer: Phillipsen
Beisitzer: Baer
Zeit: 30 Minuten (voll ausgenutzt, nix zur Besprechung abgezwackt)

Lexer und Parser

Programmcode bekommen, erklaeren was ein Uebersetzer macht:
Sprache in Maschinencode uebersetzen, Lexer+Parser erklaeren.
Nachfrage: Welche Eingabe bekommt der Parsergenerator, hier wichtig: Die Tokenfolge, die Grammatikregeln, und was beim ausfuehren einer Grammatikregel passieren soll.
[Reduktionsregeln der Uebungen, was zurueckgegeben wird]

    foo(){
        int a;
        int[10] x;
        int b;
        x[7] = ...;
        return a;
    }    
    
    bar(){
        int a;
        int[a] x;
        int b;
        ...
    }

Stack und Zwischencode

Erklaeren wie es weitergeht, also Zwischencode und Stack nach ABI der Vorlesung aufmalen und erklaeren.
Hier wichtig: Welche Register werden auf dem Stack gesichert, wo ist der Returnwert (auch auf dem Stack! laut ABI), SVV, Basepointer, lokale Variablen.)
Danach noch die Frage, wie Zugriffe auf das statische und dynamische Array (oben) realsiert werden.

Methodenaufrufe

Danach noch Methodenaufrufe in Java, welcher wird aufgerufen (spezifischte Methode zur Compilezeit), was wird zur Compilezeit (Wo muss gesucht werden, Modifikatoren, Ueberladung, Verbergen), was zur Laufzeit (Methodenueberschreibung in Unterklassen) ueberprueft.

    class Method {
        int foo(long a, int b);
        long foo(int a, long b);
        long foo(int a, int b);
    }
    
    ...
        Method m = new Method();
        m.foo(2,3);