Använda reguljära uttryck för att definiera ett programmeringsspråks lexikala struktur, förklara hur ändliga automata fungerar, och implementera lexikala analysverktyg;
definiera syntaxen för programmeringsspråk med hjälp av kontextfria grammatiker, förklara principerna för LL och LR-parsning, samt implementera parsers med hjälp av standardverktyg;
definiera och implementera abstrakt syntax;
behärska tekniken för syntaxstyrd översättning och hur man implementerar för ett valfritt programmeringsspråk;
formulera typinferensregler och implementera typkontrollerare;
utforma regler för operativ semantisk och implementera interpreters (tolkar);
skriva enkla kodgeneratorer;
känna till grundläggande implementationsproblematik för både imperativa och funktionella språk;
Implementera polymorfa typkontroll med hjälp av unifiering;
Använda "closures" för att implementera funktionella programmeringsspråk.
Kursinnehåll
Genom att implementera interpretatorer och kompilatorer lär du dig lösa praktiska implementationsproblem men även teori för formell semantik.
Du kommer att lära dig om programspråkens grammatik när du implementerar syntaxanalys och om typsystem vid implementering av typkontrollerare.
Genom att experimentera med språkutvidgningar får du en inblick i bra och dåliga sätt att konstruera programmeringsspråk.
Förutsättningar
Grundläggande behörighet för avancerad nivå
Litteratur
Information om litteratur ges på kursens hemsida före kursstart.