Kompilatorteori, cdt301

Mål:

Studenten ska efter kursen kunna konstruera kompilatorer som översätter program skrivna i ett högnivåspråk till assemblerprogram.
Detta innebär att studenten specifikt ska kunna:

Kurstillfällen:

Varför "grotta sig" i kompilatorer?

Det är väl ändå lite udda?! Kanske tänker du: "Men jag ska inte börja på Microsoft och utveckla kompilatorer..." - OK, men den här kursen är antagligen för dig ändå! Teorierna som ligger till grund för en kompilator är generella och kan tillämpas i de mest skilda sammanhang där någon form av översättning behövs, och tillämpningarna blir allt fler.
Exempel på översättare: Användningsområdet är alltså betydligt bredare än vad namnet "Kompilatorteori" antyder. Under kursen kommer vi dock att fokusera på just "vanliga kompilatorer" då detta ger en stor täckning av problemen (t.ex. så inrymmer en pre-processor bara en delmängd av de problem som en kompilator får tackla).
Vi jobbar med konstruktioner från ett C-liknande programmeringsspråk som input och översättning till en "abstrakt maskinkod", men för att förstå det senare måste du vara familjär med någon processormodell (kunna de enklare instruktionerna som move, push, pop, call och att använda stacken för parameteröverföring).
Kursen har ett stort inslag av labbar. Labbarna är direkt kopplade till teorin.
Du får lära dig jobba med utvecklingsverktygen Bison och Flex (Yacc och Lex), som är vanliga vid utveckling av kompilatorer. Du får också lära dig teorin bakom dessa verktyg. Bison och flex är fria program, det finns gott om fria C-kompilatorer. Du kan alltså göra alla dina labbar hemma om du vill.
Förkunskaper: Helst "auber" i nödfall: God uppfattning om DFA:er och reguljära språk från diskmatten.
Vardaglig beskrivning av kursen:
Massor av häftiga och kluriga algoritmer, svåra men roliga labbar.
Har du inte hunnit vänja dig vid rekursion i tanke och programmering? - Nu kommer du att bli van!

Kurslitteratur

Den i sammanhanget klassiska "drake"-boken: "Compilers: Principles, Techniques and Tools",
av Alfred V. Aho, Monica S. Lam, Ravi Sethi och Jeffery D. Ullman, (Addison-Wesley). ISBN: 978-0-321-49169-5
Valid HTML 4.0! [Senast uppdaterad 10-03-21] [506 accesser]