• Hinweis zu TestPrintWriter:
    Der TestPrintWriter wurde so erweitert, dass die Ausgabe nicht nur für den Vergleich gespeichert wird, sondern zusätzlich auf der Konsole ausgegeben wird.
  • geändert am 12.11.2002
    Änderung der Testfälle:
    Da in der UE 4 bereits für alle Kontextbedingungen, die anhand der Informationen aus der Symbolliste geprüft werden können, Fehlermeldungen ausgegeben werden sollen, sind zwei Testmethoden aus ParserTest fehlerhaft (testShortestProgram, testUndefName). Sie erwarten keine Fehlerausgabe, obwohl in den MicroJava-Programmen die void main ()-Methode fehlt. Daher gibt es hier ein Update der Datei ssw/mj/test/ParserTest.java.
  • hinzugefügt am 18.11.2002
    Anmerkung zur Folgefehlerbehandlung::
    Die Fehlermeldung für die fehlende main-Methode wird, wie oben erwähnt, nur in den beiden Testfällen testShortestProgram und testUndefName tatsächlich ausgegeben. In den Testfällen testNoProgName und testWrongStart fehlt die main-Methode zwar auch, aber die entsprechende Fehlermeldung wird "geschluckt", weil sie weniger als 3 Symbole vom letzten Fehler entfernt ist (= Unterdrückung von Folgefehlern).
  • hinzugefügt am 18.11.2002
    Korrektur Methode Parser.parse:
    Falls beim Parsen gleich im allerersten Symbol ein Scannerfehler auftritt, greift Parser.Errors.synError (das aus Scanner.error aufgerufen wird) auf Parser.la zu. Das ist aber noch gleich null, wodurch ein NullPointerException geworfen wird. Um das zu vermeiden, sollte man in der Methode Parser.parse vor dem ersten Aufruf von scan() folgende Zeile einfügen:
    ...
    la = new Token(1, 1);
    scan();
    Program();
    ...
  • hinzugefügt am 18.11.2002
    Semantische Fehler bei Aufgabe 2:
    Hier sollen nur jene semantischen Fehler gemeldet werden, die man alleine mittels der Symbolliste feststellen kann. Es sollen keine Änderungen an Methodensignaturen (= Rückgabewert, Methodenname und Parameter) vorgenommen werden, die nur zur Überprüfung von Kontextbedingungen notwendig sind, aber nicht bereits mit der Symbolliste implementiert wurden.
    Insbesondere sollen die Methoden Expr, Term, Factor und Designator vorläufig noch keine Rückgabe liefern (= void), sowie Statement keine Parameter erwarten.
  • hinzugefügt am 19.11.2002
    Fehlende Tab.closeScope()-Aufrufe in SymTabTest:
    In SymTabTest gibt es eine Methode setUp, die von JUnit VOR JEDEM Testfall ausgeführt wird. Dort wird Tab.init aufgerufen und somit sichergestellt, dass jeder Testfall mit genau der gleichen, frisch initialisierten Symbolliste arbeitet. Daher kann man die closeScope-Aufrufe am Ende von testInsertGlobal sowie testInsertLocal auch weglassen. In Tab.init soll, wie in der UE-Stunde besprochen, Tab.level mit -1 initialisiert werden.