Übungsblatt 2

Julian Oppermann
Mausschubser
Mausschubser
Beiträge: 88
Registriert: 3. Mai 2013 19:32

Übungsblatt 2

Beitrag von Julian Oppermann » 21. Nov 2013 15:46

... ist jetzt auf der Website verfügbar.

Julian Oppermann
Mausschubser
Mausschubser
Beiträge: 88
Registriert: 3. Mai 2013 19:32

Re: Übungsblatt 2

Beitrag von Julian Oppermann » 4. Dez 2013 11:32

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.

Julian Oppermann
Mausschubser
Mausschubser
Beiträge: 88
Registriert: 3. Mai 2013 19:32

Re: Übungsblatt 2

Beitrag von Julian Oppermann » 14. Dez 2013 16:15

Die Musterlösung ist nun online.

Erich
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 17. Okt 2010 13:29

Re: Übungsblatt 2

Beitrag von Erich » 17. Dez 2013 15:29

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

Julian Oppermann
Mausschubser
Mausschubser
Beiträge: 88
Registriert: 3. Mai 2013 19:32

Re: Übungsblatt 2

Beitrag von Julian Oppermann » 17. Dez 2013 16:39

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).

Antworten

Zurück zu „Archiv“