109 lines
4.1 KiB
Plaintext
109 lines
4.1 KiB
Plaintext
|
(X) Typannahme f<>r lokale Variablen
|
|||
|
==> Eindeutige Bezeichnung
|
|||
|
|
|||
|
BL<42>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 <20>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<65>hrt hat?
|
|||
|
==> Lokale Variablen und R<>ckgabetyp von Methoden?
|
|||
|
==> Shift-Reduce-Konflikte
|
|||
|
JA, JAY-FILE IST UNVOLLST<53>NDIG, DIE SHIFT-REDUCE-KONFLIKTE K<>NNEN ABER VORERST NICHT GEL<45>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<45>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 <20>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 <20>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<75>ckgegeben?
|
|||
|
Liefert TRStatement f<>r die Zuweisung "x = 5" Integer als ReturnType zur<75>ck?
|
|||
|
|
|||
|
NEIN! Alle Statements au<61>er return geben "void" zur<75>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<65>berdeckung funktioniert noch nicht richtig! ==> TRExp() f<>r Local Variables Alg. 5.37
|
|||
|
|
|||
|
|