Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Skriftlig eksamen onsdag d. 20. april 2005 Eksamenstiden er to timer. Opgavernes vægt i procent er angivet ved hver opgave. Den skriftlige eksamen i Oversættere er bestået, hvis minimum 50% af opgaven er besvaret tilfredsstillende, eller en proportionalt større del er løst delvist tilfredsstillende. Hver opgaves vægt i procent er angivet ved opgavens start. Ligeledes er de enkelte spørgsmåls andel i denne vægt angivet. Alle de sædvanlige hjælpemidler må benyttes, herunder også lydløse elektroniske lommeregnere og PDA ere (f.eks. Palm Pilot), dog ikke hvis disse har trådløs netadgang eller telefoni. En almindelig bærbar PC vil ikke være tilstrækkelig lydløs p.g.a. blæser, harddisk og støjende tastatur. I tvivlstilfælde gælder eksamensvagtens afgørelse. Det er tilladt at bruge blyant til besvarelsen, såfremt denne er tydeligt læselig.
Skriftlig eksamen onsdag d. 20. april 2005 i Oversættere side 1 af 4 Opgave 1: Grammatikker og regulære udtryk (23%) Betragt følgende grammatik G: Spørgsmål 1.1 (5%) A B A C B B B C C C Vis at G er tvetydig ved at finde en tegnfølge med to forskellige syntakstræer. Vis syntakstræerne. Spørgsmål 1.2 (8%) Find Nullable, FIRST og FOLLOW for hver nonterminal i G. Husk at behandle $ (EOF). Spørgsmål 1.3 (5%) Eliminer venstrerekursion fra G. Spørgsmål 1.4 (5%) Lav et regulært udtryk, der genkender samme sprog som G.
Skriftlig eksamen onsdag d. 20. april 2005 i Oversættere side 2 af 4 Opgave 2: Endelige automater (15%) Vi betragter følgende sprog L: mængden af tegnfølger over alfabetet {a, b, c}, hvor der ikke er gentagne tegn (dvs. at hvert af tegnene a, b og c forekommer højst én gang hver). Spørgsmål 2.1 (3%) Vis fire eksempler på tegnfølger i L. Spørgsmål 2.2 (12%) Lav en minimal DFA for sproget L, og argumenter for at den er minimal. Vink: Hold styr på brugte tegn. Opgave 3: Regulære sprog og udtryk (12%) Klassen af regulære sprog er afsluttet under fællesmængde og mængdedifferens, dvs. at fællesmængden af to regulære sprog er regulært og mængdedifferensen mellem to regulære sprog er regulært. Man kan derfor udvide regulære udtryk med operatorer for fællesmængde og mængdedifferens. Angiv fordele og ulemper ved at udvide regulære udtryk med disse konstruktioner. Læg vægt på konsekvenser for brug af regulære udtryk til lexergenerering.
Skriftlig eksamen onsdag d. 20. april 2005 i Oversættere side 3 af 4 Opgave 4: Mellemkodegenerering (35%) Vi udvider Grammar 6.7 fra Basics of Compiler Design med følgende produktioner: Cond orderedby relop IdList IdList id IdList id, IdList Semantikken er, at betingelsen er sand, hvis hvert par af to efterfølgende variabler i listen af variabler er ordnede med den angivne relationelle operator. For eksempel er orderedby < x,y,z sand, hvis x<y og y<z. Sammenligningerne foretages fra venstre mod højre (så i eksemplet ovenfor skal sammenligningen x<y foretages før y<z). Sammenligningerne skal stoppes, så snart en af dem er falsk (idet den samlede betingelse dermed bliver falsk). I eksemplet ovenfor skal sammenligningen y<z altså ikke foretages, hvis x<y er falsk. Hvis der kun er én variabel i listen, er betingelsen altid sand. Spørgsmål 4.1 (10%) Vis (håndgenereret) mellemkode for orderedby < x,y,z, så den ved sand betingelse hopper til Ltrue og ved falsk betingelse hopper til Lfalse. Brug mellemkodevariabler med samme navne som de oprindelige variabler (dvs. x, y og z) plus eventuelt ekstra temporære variabler. Spørgsmål 4.2 (25%) Udvid funktionen Trans Cond fra Figure 6.8 i Basics of Compiler Design, så den kan generere kode for den nye konstruktion. Vink: Tilføj en eller flere oversætterfunktioner for IdList og lav nedarvede attributter for bl.a. den relationelle operator og den foregående variabel.
Skriftlig eksamen onsdag d. 20. april 2005 i Oversættere side 4 af 4 Opgave 5: Graffarvning (15%) Betragt følgende interferensgraf: a e b c d Spørgsmål 5.1 (10%) Lav en farvning af grafen med tre forskellige farver (registre). Det er muligt, så hvis du får spill, så prøv at træffe andre valg. Vis stakken som i figur 8.6 og 8.9 i Basics of Compiler Design. Spørgsmål 5.2 (5%) Hvis du kun har to farver (registre), hvilken variabel vil du helst spille, og hvorfor?