Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007

Relaterede dokumenter
Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 18. april 2007

Oversættere Skriftlig eksamen onsdag d. 20. april 2005

Oversættere / Datalogi 1E

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 25. januar 2006

Eksamensopgaver i DM17, Januar 2003

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 28. maj min min min min.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Sproget Rascal (v. 2)

Skriftlig Eksamen Beregnelighed (DM517)

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Noter til DM517 Beregnelighed

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Danmarks Tekniske Universitet

Regulære udtryk og endelige automater

Danmarks Tekniske Universitet

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen torsdag den 16. januar 2003

Regulære udtryk og endelige automater. Ugens emner

MIPS, registerallokering og MARS

Oversættere, ugeopgave 3

Danmarks Tekniske Universitet

Løsningsforslag Skriftlig eksamen 9. januar 2012

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Danmarks Tekniske Universitet

Regularitet & Automater Eksamensnotater

Ja! det beviste vi uge 16+17

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Differential- regning

Dynamisk programmering

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Klasse 1.4 Michael Jokil

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Dynamisk programmering

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Dynamisk programmering

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Rettelser til Pilen ved træets rod

Regularitet og Automater. Tobias Brixen Q4-2012

matematik Demo excel trin 2 bernitt-matematik.dk 1 excel by bernitt-matematik.dk

Grafer og graf-gennemløb

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Løsning af møntproblemet

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Variabel- sammenhænge

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober Jonas Christiansen Voss

DM517:Supplerende noter om uafgørlighedsbeviser:

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag d. 16. januar 2004

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

En karakteristik af de regulære sprog. Ugens emner. FA minimering [ ] MyHill-Nerode-sætningen en algoritme til minimering af FA er

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Start i cirklen med nummer 1 - følg derefter pilene:

Algoritmedesign med internetanvendelser ved Keld Helsgaun

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

matematik Demo excel trin 1 preben bernitt bernitt-matematik.dk 1 excel by bernitt-matematik.dk

Grafer og graf-gennemløb

Integralregning med TI-Interactive! Stamfunktioner Integraler Arealer Jan Leffers (2005)

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Sommeren 2001, opgave 1

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Vejledning i udtræk af input-output data fra Statistikbanken

Opgave 1 Regning med rest

Mircobit Kursus Lektion 2

Introduktion til TI-Nspire 1. Dokumentformat

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Kontrol-strukturer i PHP

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Transkript:

Københavns Universitet Naturvidenskabelig Embedseksamen Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007 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. lle de sædvanlige hjælpemidler må benyttes, herunder også lydløse elektroniske lommeregnere og PD ere (f.eks. Palm Pilot), dog ikke hvis disse har trådløs netadgang eller telefoni. En almindelig bærbar P 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.

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 1 af 5 Opgave 1: Syntaksanalyse (32%) Betragt følgende grammatik: Spørgsmål 1.1 (5%) a B B b B B Vis at grammatikken er tvetydig ved at vise to forskellige syntakstræer for samme tegnfølge. a B a Spørgsmål 1.2 (8%) Beregn FIRST for hver højreside i grammatikken og FOLLOW for hver nonterminal. Husk at medtage $ i beregningen af FOLLOW. Vink: Der er ingen tomme produktioner, så du behøver ikke beregne Nullable (den kan antages falsk for alle nonterminaler). FIRST (a) = {a} FIRST (B) = {a, b} FIRST (b B) = {b} FIRST () = {a, b} FOLLOW() = {$} FOLLOW(B) = {$}

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 2 af 5 Spørgsmål 1.3 (10%) Lav en LL(1) syntaksanalysetabel for grammatikken. B a b $ a B B B B b B B Spørgsmål 1.4 (9%) Da grammatikken er tvetydig, har LL(1) tabellen konflikter. Fjern konflikterne (uden at ændre på det sprog, der genkendes) ved at fjerne produktioner fra tabellen. Vis den konfliktfri tabel. a b $ a B B B B b B Opgave 2: Regulære udtryk (5%) Spørgsmål 2.1 (5%) Lav en funktion minlength, der givet et regulært udtryk finder størrelsen af den korteste tegnfølge, som det regulære udtryk genererer (genkender). Lav funktionen, så den er rekursiv over strukturen af det regulære udtryk, dvs. på formen minlength(a) =... minlength(ε) =... minlength(s t) =...minlength(s)...minlength(t)... minlength(st) =...minlength(s)...minlength(t)... minlength(s ) =...minlength(s)...

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 3 af 5 minlength(a) = 1 minlength(ε) = 0 minlength(s t) = min(minlength(s), minlength(t)) minlength(st) = minlength(s) + minlength(t) minlength(s ) = 0 Opgave 3: Regulære udtryk (6%) Heltalskonstanter i kan være oktale, decimale eller hexadecimale. En følge af cifre, der starter med 0, betragtes som en oktal konstant, og kan følgelig kun indeholde cifre under 8. En følge af decimale cifre, som ikke starter med 0, er en almindelig decimal konstant. Tegnfølgen 0x efterfulgt af hexadecimale cifre er en hexadecimal konstant. Hexadecimale cifre er 0 9 samt F. Spørgsmål 3.1 (6%) Opskriv et regulært udtryk for heltalskonstanter i, sådan som de er beskrevet herover. 0[0 7] [1 9][0 9] 0x[0 9 F] + Opgave 4: Endelige automater (9%) Man kan udvide NFer, så man tillader mere end en starttilstand. I stedet for en starttilstand s 0 er der altså en mængde S 0 af starttilstande (ligesom der er en mængde F af accepterende tilstande). Man kan ved genkendelse af en tegnfølge vælge en vilkårlig starttilstand, ligesom man kan vælge frit mellem overgange med samme symbol. Spørgsmål 4.1 (3%) ngiv en metode, der kan konvertere en sådan NF til en NF med kun en starttilstand.

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 4 af 5 Tilføj en ny tilstand s 0 og lad der være epsilonovergange til alle starttilstandende fra NFen. Gør s 0 til den eneste starttilstand. Spørgsmål 4.2 (3%) ngiv, hvordan delmængdekonstruktionen (algoritme 2.3 i Basics of ompiler Design) 1 skal modificeres, så den kan konvertere en NF med flere startilstande til en DF (der som sædvanligt kun har en starttilstand). I stedet for får vi s 0 = ε-closure({s 0 }) s 0 = ε-closure(s 0 ) lt andet er uændret. Spørgsmål 4.3 (3%) Kom med et eksempel (evt. flere) på situationer, hvor det bliver (en smule) lettere, når man kan have flere starttilstande i en NF. I afsnit 2.9 i Basics of ompiler Design, bliver konstruktionen af den kombinerede NF lettere, da man ikke behøver at tilføje en ny starttilstand. Endvidere bliver konstruktionen af NFer for præfiks og omvendte sprog i opgave 2.11 fra Basics of ompiler Design lettere, da disse begge tilføjer en ny starttilstand, som udelukkende har epsilonovergange til andre tilstande. Ved at gøre disse andre tilstande til starttilstande, kan man undvære den nye starttilstand. Opgave 5: Bootstrapping (16%) En kildetekstoptimisator (source code optimizer) er et program, der kan optimere programmer på kildetekstniveau, dvs. at det tager et program P i kildetekst og 1 Side 37 i 2006 udgaven og side 35 i 2004 og 2005 udgaverne

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 5 af 5 returnerer et program P i samme sprog, hvor P er ækvivalent med P, men er mere optimeret. En kildetekstoptimisator kan betragtes som en oversætter, hvor kildesprog og målsprog er ens. En kildetekstoptimisator, der er skrevet i og som optimerer -programmer kan f.eks. beskrives med T-diagrammet Spørgsmål 5.1 (4%) Udover ovenstående kildetekstoptimisator har du følgende komponenter: En oversætter fra til RM-kode, skrevet i RM-kode. En RM maskine (der kan afvikle RM-kode). Et uspecificeret program skrevet i. Vis disse komponenter som Bratman diagrammer. Brug bogstavet til at indikere RM-kode. Spørgsmål 5.1 (12%) Vis med Bratman diagrammer, hvordan man givet disse komponenter kan optimere og afvikle det uspecificerede program. Vi skal først have oversat optimisatoren:

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 6 af 5 Dernæst skal vi optimere og oversætte programmet, og afvikle det oversatte program på RM maskinen. Opgave 6: Registerallokering (32%) Spill-metoden i Basics of ompiler Design gør to ting: 1. Omdøber hver forekomst af den spill ede variabel ved at tilføje et løbenummer (som subscript). 2. Indsætter lagerflytninger før og efter instruktioner, der bruger de nye variabler. Nedenstående figur viser programmet fra figur 8.2 i Basics of ompiler Design efter omdøbning af forekomsterne af variablen a, men inden indsættelsen af lagerflytninger.

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 7 af 5 1: a 1 := 0 2: b := 1 3: z := 0 4: LBEL loop 5: IF n = z THEN end ELSE body 6: LBEL body 7: t := a 2 + b 8: a 3 := b 9: b := t 10: n := n 1 11: z := 0 12: GOTO loop 13: LBEL end I stedet for at indsætte lagerflytninger, kan man på passende steder indsætte tildelinger, der kopierer en af de nye variabler over i en anden af de nye variabler, sådan at værdien af den oprindelige a hele tiden ligger i en af de nye variabler. Da a er levende ved udgangen af programmet, skal værdien til slut kopieres fra en af de nye variabler over i den oprindelige. Ideen er, at hver af de nye variabler vil have kortere levetid end den oprindelige, så de vil hver især interferere med færre andre variabler, og det kan (måske) gøre det muligt at registerallokere de nye variabler. Spørgsmål 6.1 (8%) Indsæt kopisætninger af formen a i := a j eller a := a i (hvor i og j er 1, 2 eller 3), sådan at ovenstående program er ækvivalent med programmet i figur 8.2 (dvs. før omdøbning af forekomsterne af a). Brug kun a := a i til sidst i programmet (efter sætning 13). Giv de nye sætninger numre, der er 0.5 større end de foregående sætninger, f.eks. vil kopieringen a := a i have nummer 13.5.

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 8 af 5 1: a 1 := 0 2: b := 1 3: z := 0 3.5: a 2 := a 1 4: LBEL loop 5: IF n = z THEN end ELSE body 6: LBEL body 7: t := a 2 + b 8: a 3 := b 9: b := t 10: n := n 1 11: z := 0 11.5: a 2 := a 3 12: GOTO loop 13: LBEL end 13.5: a := a 2 Spørgsmål 6.2 (12%) ngiv for hver af variablerne a, a 1, a 2 og a 3 numrene på de instruktioner, hvor den pagældende variabel er levende ved udgangen af instruktionen. Se sidste kolonne i figur 8.4 i Basics of ompiler Design for levendehed for alle de oprindelige variabler. Vink: Når a er levende i det oprindelige program, er præcis en af a, a 1, a 2 eller a 3 levende i det nye program. a : 13.5 a 1 : 1, 2, 3 a 2 : 3.5, 4, 5, 6, 11.5, 12, 13 a 3 : 8, 9, 10, 11 Spørgsmål 6.3 (12%) ngiv for alle tildelingssætninger, hvori a, a 1, a 2 eller a 3 forekommer på enten venstre- eller højresiden, hvilken interferens disse sætninger genererer (jvf. definition 8.2 i Basics of ompiler Design) 2. Vis det på samme måde som tabellen 2 side 180 i 2006 udgaven og 178 i 2004 og 2005 udgaverne

Vejledende løsning til skriftlig eksamen januar 2007 i Oversættere side 9 af 5 sidst i afsnit 8.4 i Basics of ompiler Design). Vink: De andre variabler (dvs. n, z, b og t) er levende ved udgangen af en af de nye kopisætninger, netop hvis de er levende ved udgangen af den foregående sætning. Instruction Left-hand side Interferes with 1 a 1 n 2 b n,a 1 3 z n,a 1,b 3.5 a 2 z,n,b 8 a 3 t,n 9 b n,a 3 10 n a 3,b 11 z n,a 3,b 11,5 a 2 z,n,b 13,5 a