Grundläggande behörighet, avancerad nivå
Kurser om minst 90 hp på grundnivå varav följande kunskaper/kurser ingår. Goda kunskaper i imperativ programmering (D0009E) samt objekt-orienterade programmering och design (D0010E). Funktioner och relationer, mängdlära, tillståndsautomater (M0009M). Sökning och sortering, vanligt förkommande datastrukturer som köer, stackar, listor, träd och grafer (D0012E). Stackbaserad assemblerprogrammering (D0013E).
Studenten ska kunna
- Visa förmåga att identifiera och formulera kompilering av ett högnivåspråk till exekverbar maskinkod som en översättningsprocess i flera steg.
- Visa förmåga att med adekvata metoder implementera en kompilator för ett icke-trivialt språk.
- Visa förmåga att skriftligt och på engelska klart redogöra för de tekniska lösningar som valts för en sådan implementation.
- Visa fördjupade kunskaper inom de teoretiska grunderna för kompilatortekniken.
- Visa färdighet och förmåga att systematiskt använda beprövade verktyg för kompilatorkonstruktion.
- Analysera och kritisktutvärdera olika aspekterav moderna högnivåspråkutifrån deras underliggandeimplementationsteknik.
Grunderna för uppbyggnaden av en kompilator som en översättningsprocess i flera steg. Lexikalanalys, syntaxanalys och översättning till abstrakt syntax. Reguljära uttryck och grammatiker, lexikalanalys- och parser-generatorer. Hantering av identifierare och utformning av symboltabeller. Typkontroll, logiska inferenssystem. Intermediära representationer och transformationer för olika språk. Kodoptimering och registerallokering. Generering av maskinkod för vanliga datorarkitekturer.
Undervisningen består av föreläsningar, lektioner och laborationer. Laborationerna redovisas skriftligt eller muntligt och kan vara försedda med sista inlämningsdag. Under tiden kursen ges kan det också förekomma hemuppgifter som ger bonuspoäng på den tentamen som följer direkt efter kursen.
Skriftlig tentamen samt skriftliga eller muntliga laborationsredogörelser. För godkänt på kurserns laborationsdel krävs att alla laborationer redovisats med godkänt resultat.
Kursen kan ej ingå i examen tillsammans med SMD002.