109 lines
4.1 KiB
Plaintext
Executable File
109 lines
4.1 KiB
Plaintext
Executable File
(X) Typannahme für lokale Variablen
|
|
==> Eindeutige Bezeichnung
|
|
|
|
BLÖCKE WERDEN DURCHNUMMERIERT. BSP.: Block 3.1.1
|
|
=====================
|
|
(X) Klasse Fresh und Bezeichnung für Typlose Variablen
|
|
==> Für was ist die Hashtable?
|
|
==> Brauchen wir die "Registry"
|
|
|
|
JA, ZENTRALE REGISTRY!
|
|
=====================
|
|
(X) Was macht Fresh.varSubst()?
|
|
|
|
|
|
=====================
|
|
(X) makeFC() statisch machen
|
|
==> Wie oft muss makeFC() eigentlich aufgerufen werden?
|
|
==> Reicht es die generierte FC statisch zu halten?
|
|
==> Kann SourceFile Singleton sein, d.h. darf es nur ein einziges Sourcefile geben?
|
|
|
|
MAKEFC() NICHT STATISCH MACHEN. EINMAL AUFRUFEN UND DANN ERGEBNIS DURCHREICHEN
|
|
=====================
|
|
(X) Kann ich davon ausgehen, dass beim Aufruf von unify() keine Seiteneffekte auftreten?
|
|
==> Manipuliert bspweise Fresh.varSubst() nichts?
|
|
|
|
WENN KEINE FEHLER DRIN SIND, DANN KEINE SEITENEFFEKTE.
|
|
=====================
|
|
(X) Was macht Algorithmus sub() in TRStart?
|
|
==> Darf nur auf Menge von Typannahmen arbeiten, noch nicht auf Syntaxbaum, oder?
|
|
|
|
JA, NUR AUF TYPANNAHMEN
|
|
=====================
|
|
( ) Wie kopiere ich V_j in TRStart so, dass es eine tiefe Kopie ist, aber dennoch die Referenz
|
|
auf dasselbe Typ-Objekt hat.
|
|
=====================
|
|
( ) Wie erzeuge ich einen Typ? Bsp. TRExp für IntLiteral.
|
|
Was ist der Name (Attribut) eines IntLiteral?
|
|
=====================
|
|
( ) Wo und wie wird eigentlich auf den TypeAssumptions gearbeitet?
|
|
=====================
|
|
(X) Wo kommen eigentlich die Typreferenzen in den CSubstitutions her?
|
|
==> Wo die von Pair?
|
|
==> Wie greife ich in den Syntaxbaum?
|
|
|
|
VERBINDUNG ZU SYNTAXBAUM ÜBER DIE EINDEUTIGEN INSTANZEN VON TYPLOSENVARIBALEN
|
|
=====================
|
|
( ) Was ist UsedID? Wo ist der Unterschied zwischen Type.name und Type.used.name?
|
|
=====================
|
|
(X) Kann es sein, dass Thomas im jay-File die TyplosenVariablen nur bei Methodenparametern eingeführt hat?
|
|
==> Lokale Variablen und Rückgabetyp von Methoden?
|
|
==> Shift-Reduce-Konflikte
|
|
JA, JAY-FILE IST UNVOLLSTÄNDIG, DIE SHIFT-REDUCE-KONFLIKTE KÖNNEN ABER VORERST NICHT GELÖST WERDEN.
|
|
=====================
|
|
(X) Müssen noch weitere TypeReplacementListener eingetragen werden?
|
|
|
|
JA
|
|
=====================
|
|
(X) In RefType.Equiv2Equal() wird TyploseVariable.setName() aufgerufen.
|
|
Was wird dort gemacht und wie soll ich das mit der Registry für die Typlosen Variablen machen?
|
|
|
|
KOMPLETT NEUE TYPLOSE VARIABLEN ERZEUGEN. SYNTAXBAUM WIRD LAUT MARTIN NICHT VERÄNDERT!!!
|
|
=====================
|
|
(X) Kann Type.setName() nicht in RefType verschoben werden? Macht doch mehr Sinn...
|
|
|
|
JAWOLL, WIRD VERSCHOBEN!
|
|
=====================
|
|
(X) Werden für Methodenparameter auch lokale Variablen im Syntaxbaum angelegt?
|
|
|
|
NEIN!
|
|
=====================
|
|
(X) Wie komme ich in NewClass.TRExp() an den Konstruktor des abstrakten Syntaxbaumes?
|
|
|
|
Gar nicht, es müssen nur die Argumententerme übergeben werden.
|
|
=====================
|
|
(X) Was bedeutet der Index in Alg. 5.37?
|
|
|
|
V ohne x
|
|
=====================
|
|
(X) Ist Epsilon in den Alg. 5.30 ff die leere Menge?
|
|
|
|
JA!
|
|
=====================
|
|
(X) Was ist mit TRStatement / TRExpr für Increment / Decrement? Wie AddOp, oder?
|
|
|
|
JAU!
|
|
=====================
|
|
(X) IfStmt.TRStatement(): Was ist mit den Sigmas der Conditional Expression im Fall void-void?
|
|
|
|
Martin überarbeitet den Alg.
|
|
=====================
|
|
(X) IfStmt.TRStatement(): Warum wird sigma und nicht sigma_i,j angewendet?
|
|
|
|
==> Implementierung von Martin
|
|
=====================
|
|
(X) Assign.TRExp(): Warum wird sigma und nicht sigma_i,j angewendet?
|
|
|
|
==> Implementierung von Martin
|
|
=====================
|
|
(X) Wann wird jetzt eigentlich void zurückgegeben?
|
|
Liefert TRStatement für die Zuweisung "x = 5" Integer als ReturnType zurück?
|
|
|
|
NEIN! Alle Statements außer return geben "void" zurück. Nur Expressions und return haben einen ReturnType!!!
|
|
=====================
|
|
( ) Der Ausdruck x = 5; wird immer als Zuweisung gesehen, niemals als Variablendeklaration! Muss das angepasst werden?
|
|
==> Unterscheidung beim Parsen zwischen LocalVarDecl und Assign???
|
|
=====================
|
|
( ) Variablenüberdeckung funktioniert noch nicht richtig! ==> TRExp() für Local Variables Alg. 5.37
|
|
|
|
|