Seite 1 von 1

Übungsblatt 2

Verfasst: 21. Nov 2013 15:46
von Julian Oppermann
... ist jetzt auf der Website verfügbar.

Re: Übungsblatt 2

Verfasst: 4. Dez 2013 11:32
von Julian Oppermann
Beachten Sie bitte folgende Korrektur der Aufgabe 2.4 d):
Statt

Code: Alles auswählen

type ListNode ~ record next : List *; data : Integer end;
soll der Typ

Code: Alles auswählen

type ListNode ~ record next : List; data : Integer end;
sein, d.h. das Element next in ListNode ist kein Zeiger.

Re: Übungsblatt 2

Verfasst: 14. Dez 2013 16:15
von Julian Oppermann
Die Musterlösung ist nun online.

Re: Übungsblatt 2

Verfasst: 17. Dez 2013 15:29
von Erich
Servus,

ich hätte da mal ne Frage zur Musterlösung:

Dort steht in der Implementation der enter(String id, Declaration attr)-Methode in SymbolTable.java:

Code: Alles auswählen

List<String> list = scopeStack.lastElement();
attr.duplicated = list.contains(id);
list.add(id);
Hier wird also auf alle Fälle ein neuer Eintrag für jeden eingelesenen Identifier gemacht.
Meine Frage: verstößt dies nicht gegen die in der Vorlesung eingeführte Konvention (Jeder Identifier max. 1mal in einem Scopelevel, vgl. Vorlesung 3 Folie 15)?
Hier wird jedoch nirgends ein neues Scope geöffnet, also könnte es doch sehr wohl sein, dass auf einem Level ein Identifier mehrfach deklariert wird.

Sollte die Methode an der Stelle nicht eine Exception werfen?

MfG

Erich

Re: Übungsblatt 2

Verfasst: 17. Dez 2013 16:39
von Julian Oppermann
Die Fehlerbehandlung wird vom Aufrufer gemacht, in diesem Falle von den Methoden in der Klasse Triangle.ContextualAnalyzer.Checker. Schauen Sie da mal rein, dort wird das 'duplicated'-Flag ausgewertet und ein Fehler gemeldet. Ob man die fehlerhaften Identifier mehrfach einträgt, ist eigentlich egal (weil das Programm bereits als inkorrekt erkannt wurde).

Das Werfen einer Exception wäre natürlich auch denkbar (und vielleicht auch eine etwas schönere Lösung).