Nada

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

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>