Faktiskt innehåll i 2D1375, Programspråksimplementation 1996
Tid
Kursen gick i period 1-2 1996/1997, dvs september-december 1996 och
tentades 24 oktober. Tentan var rättad den 25 oktober.
Elever
Kursen är valfri inom fördjupningsblocket programsystemkonstruktion
i D4. Artificiella språk och syntaxanalys är obligatoriskt förkunskapskrav.
17 elever från D, 1 från F, 4 från SU och 2 doktorander följde kursen.
Lärare
Kursledare och föreläsare var Viggo Kann,
lektor på Nada, datorpost viggo@nada.kth.se.
Labbkursen utformades och handleddes av Joachim Hollman,
datorpost joachim@nada.kth.se.
Kurslitteratur
Charles N. Fischer, Richard J. LeBlanc: Crafting a compiler with C.
Läsanvisning
Kapitel/avsnitt Nivå
====================
1 3
2 2
3-6 1
7-13 3
14 1
15.1-15.7 3
15.8 2
16.1-16.3 3
16.4 2
16.5 3
17 0
Appendix A 2
Appendix B-F 0
0. Ingår inte alls.
1. Ingick i Artificiella språk och syntaxanalys, inga direkta tentafrågor.
2. Läs översiktligt, inga tentafrågor.
3. Ingår i detalj.
Kursbunt
- Kursprogram.
- Laborationer.
- Lektionsanteckningar (delades ut under kursens gång).
- Specifikation av Javas virtuella maskin.
- En exempeltenta.
Kursinnehåll
Kursen bestod av 14 lektioner och 12 terminalövningar.
Labbkursen bestod av sex obligatoriska
laborationer och tre frivilliga för den som ville ha överbetyg.
Labbarna gjordes i grupper om högst två personer.
Alla labbarna hängde ihop och
resultatet efter den sjunde labben var en färdig kompilator (för
större delen av språket ADA/CS som definieras i appendix A i kursboken)
som genererar kod för Javas virtuella maskin.
Följande tabell visar vad som behandlades
under lektionerna och terminalövningarna.
- vecka 36
- L1 hur en kompilator fungerar, olika typer av kompilatorer (kapitel 1)
L2 repetition av syntaxanalys, en enkel kompilator (kapitel 2-7)
TÖ1 labb 1: anpassning av ADA/CS-grammatiken till Yacc/Bison
- vecka 37
- L3 minneshantering vid kompilering och körning (kapitel 8-9)
L4 deklarationer (kapitel 10)
TÖ2 labb 2: implementation av en symboltabellsmodul i C
- vecka 38
- L5 uttryck, datastrukturer och styrstrukturer (kapitel 11-12.5)
L6 särfall, procedurer och funktioner (kapitel 12.6-13)
TÖ3 labb 3: deklarationer
- vecka 39
- L7 exempel på funktioner, attributgrammatik, intermediär representation
(kapitel 14)
L8 kodgenerering (kapitel 15)
TÖ4 labb 4: uttrycksträd
- vecka 40
- L9 Javas virtuella maskin
L10 optimering (kapitel 16)
TÖ5 labb 5: intermediär kod för styrstrukturer
- vecka 41
- L11 mer om optimering, länkning, runtimebibliotek, avlusning
L12 repetition, projektkompilatorn
TÖ6 labb 6: intermediär kod för funktioner
- vecka 43
- tenta
- vecka 44
- L13 automatisk skräpsamling
TÖ7 labb 7: kodgenerering
- vecka 45
- L14 kompilatorer för objektorienterade språk
TÖ8 arbete med labb 7
- vecka 46
- TÖ9 arbete med labb 7 och eventuell utvidgning
- vecka 47
- TÖ10 arbete med labb 7 och eventuell utvidgning
- vecka 48
- TÖ11 redovisning
- vecka 49
- TÖ12 redovisning
Upp till kursomgångar.
Sidansvarig: <viggo@nada.kth.se>
Senast ändrad 28 maj 1997
Tekniskt stöd: <webmaster@nada.kth.se>