Læringsmål: | Gennemførelse af kurset skal give dig disse kvalifikationer:
- Du skal kunne læse og konstruere leksikalske og syntaktiske beskrivelser af kildesprog. Du skal kende til regulære udtryk og grammatikker.
- Du skal kunne konstruere en syntaksanalysator ud fra en grammatik ved hjælp af givne værktøjer. Du skal kende til abstrakt syntaks (dvs. intern repræsentation af kildeteksten) og kunne udvide
syntaksanalysatorer til at konstruere abstrakte syntakstræer.
- Du skal kunne beskrive programudførelse (dynamisk semantik) ved hjælp af begreberne omgivelse, værdi, continuation og undtagelse (exception).
- Du skal kunne formalisere programudførelse ved konstruktion af en fortolker.
- Du skal kunne beskrive programmers velformethed (statisk semantik) ved hjælp af begreberne typesystem og typetjek.
- Du skal kunne beskrive simple abstrakte datamaskiner med begreberne instruktion, register, evalueringsstak, omvendt polsk notation, returstak og aktiveringsposter (kontekststak).
- Du skal kunne oversætte programmer til maskinkode for en simpel abstrakt datamaskine.
Kursets <A HREF="http://www.dina.kvl.dk/~sestoft/ppif2001/">hjemmeside er http://www.dina.kvl.dk/~sestoft/ppif2001/ |
Fagligt indhold: | I teknologisk innovative projekter skal man undertiden opfinde, beskrive og håndtere ikke-trivielle dataformater, f.eks. specialiserede web-skripts, konfigureringsdata og lignende. Jo mere betydning man lægger ind i sådan et dataformat, jo mere ligner det et specialiseret programmeringssprog, ofte kaldet et domæne-specifikt sprog. Første del af dette kursus forklarer hvordan man bruger grammatikker og syntaksanalyse til at beskrive og håndtere domæne-specifikke sprog.
Der findes forskellige paradigmer for programmeringssprog: imperative (f.eks. C), objekt-orienterede (f.eks. Java), funktionssprog (f.eks. Standard ML), logiksprog (f.eks. Prolog). Anden del af kurset belyser forskellene mellem disse paradigmer ved hjælp af såkaldte fortolkere.
Et program skrevet i f.eks. C, Java eller Standard ML skal oversættes til maskinkode før det kan udføres på datamaskinen. Oversættelsen har tre hovedfaser: syntaksanalyse, statiske tjek, og generering af maskinkode. Tredje del af kurset viser hvordan man kan foretage statiske tjek og generere maskinkode for en abstrakt maskine. |
Eksamensform og -beskrivelse: | X. experimental examination form (7-scale; external exam), 13-skala, Intern censur Opgaveløsning, mini-projekt, mundtlig eksamen
|