MED SVARFORSLAG UNIVERSITETET I OSLO

Like dokumenter
MED SVARFORSLAG UNIVERSITETET I OSLO

Pensumoversikt - kodegenerering. Maskinen det oversettes til. Kodegenerering del 2: tilleggsnotat, INF5110 v2006

UNIVERSITETET I OSLO

INF Noen oppgaver til kap. 8

INF Noen oppgaver til kap. 8

Løsningsforslag til avsluttende eksamen i HUMIT1750 høsten 2003.

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 13. desember HINDA / 98HINDB / 98HINEA ( 2DA / 2DB / 2EA ) TID:

Løsningsforslag til Obligatorisk oppgave 2

Matematikk Øvingsoppgaver i numerikk leksjon 8 Numerisk integrasjon

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

UNIVERSITETET I OSLO

Sensorveiledning Oppgaveverksted 4, høst 2013 (basert på eksamen vår 2011)

Oppgaver til INF 5110, kapittel 5

UNIVERSITETET I OSLO

Løsningsforslag til ukeoppgaver i INF3110/4110

Integrasjon Skoleprosjekt MAT4010

Læringsmål og pensum. Forberdring vha preallokering. Oversikt

Matematikk Øvingsoppgaver i numerikk leksjon 9 Numerisk integrasjon

Oversikt II. Innhold. INF1000 (Uke 12) Oversikt I. Sortering. Lære å lage proff programvare ved å lage. en generell klasse for sortering

Brøkregning og likninger med teskje

UNIVERSITETET I OSLO

Innhold. INF1000 (Uke 12) Sortering og eksamensoppgaver. Oversikt II. Oversikt I. Om sortering. Litt om dokumentasjon av kode. Deler av eksamen H03

Oppgaver til INF 5110, kapittel 5, med svarforslag Gjennomgått torsdag 26. febr Dette er versjon fra 28/7

UNIVERSITETET I OSLO

Oppgaver til INF 5110, kapittel 5 Fullt svar på oppgave 5.4, og en del andre oppgaver med svar

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

Bottom up parsering (nedenfra-og-opp) Kap. 5 del 1 Intro til parsering nedenfra-og-opp samt LR(0) og SLR(1) grammatikker INF5110 v2006

INF april, 2015 Kap. 8 kodegenerering. Del 2

INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) 21/ Stein Krogdahl Ifi, UiO. Angående Oblig 1:

Numerisk derivasjon og integrasjon utledning av feilestimater

INF-5110 Oppgaver kodegenerering etc. INF-5110, vår 2011

Eneboerspillet. Håvard Johnsbråten

x 1, x 2,..., x n. En lineær funksjon i n variable er en funksjon f(x 1, x 2,..., x n ) = a 1 x 1 + a 2 x a n x n,

Vår 2004 Ordinær eksamen

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

5: Algebra. Oppgaver Innhold Dato

Kvalitetssikring av elektronisk pasientjournal - Skjema 1

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

M2, vår 2008 Funksjonslære Integrasjon

R1 kapittel 7 Sannsynlighet. Kapitteltest. Oppgave 1. Oppgave 2. Oppgave 3. Del 1 Uten hjelpemidler. Løsninger til oppgavene i boka

1 dx cos 1 x =, 1 x 2 sammen med kjerneregelen for derivasjon. For å forenkle utregningen lar vi u = Vi regner først ut den deriverte til u,

INF Forelesning 10

1 Mandag 1. mars 2010

Årsprøve trinn Del 2

Institutt for elektroteknikk og databehandling

Temahefte nr. 1. Hvordan du regner med hele tall

Løsningsforslag til Eksamen i fag MA1103 Flerdimensjonal analyse

Løsningsforslag til obligatorisk oppgave i ECON 2130

RAMMER FOR SKRIFTLIG EKSAMEN I MATEMATIKK 1P-Y OG 1T-Y ELEVER 2015

UNIVERSITETET I OSLO

Løsningsforslag Kollokvium 6

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF /2-2011

Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

Kap. 5, Del 2: INF / (og 2/3 og 3/3)

MAT 100A: Mappeeksamen 4

1 k 2 + 1, k= 5. i=1. i = k + 6 eller k = i 6. m+6. (i 6) i=1

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

UNIVERSITETET I OSLO

Leger. A. Om din stilling. Klinisk stilling: Turnuslege Assistentlege Overlege. B. Om din erfaring med bruk av datamaskin. 1 Eier du en datamaskin?

Eksamen R2, Va ren 2014, løsning

INF /2, 2015 Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

S1 kapittel 8 Eksamenstrening Løsninger til oppgavene i læreboka

Terminprøve Matematikk Påbygging høsten 2014

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgått torsdag 14. febr Disse foilene er justert 15/2, kl. 11

Nøtterøy videregående skole

TFY4104 Fysikk. Institutt for fysikk, NTNU. Lsningsforslag til ving 8. a =

Kapittel 8 TUTORIALS-CASES

Terminprøve Matematikk for 1P 1NA høsten 2014

Feilestimeringer. i MAT-INF1100

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

S1 kapittel 6 Derivasjon Løsninger til oppgavene i boka

DELPRØVE 2 (35 poeng)

Kap. 5, Del 3: INF5110, fra 1/3-2011

NORGES LANDBRUKSHØGSKOLE Institutt for matematiske realfag og teknologi EKSAMEN I FYS135 - ELEKTROMAGNETISME

1 Mandag 25. januar 2010

R1 kapittel 1 Algebra

1 Tallregning og algebra

Get filmleie. Brukerveiledning

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

Oppgave 2. INF5110 oppgave 2 på eksamen v04 med teori. FirstMengder. Arne Maus Ifi. Eks. 4.9 Beregning av First-mengde. terminal

Fasit til utvalgte oppgaver MAT1100, uka 20-24/9

1 Mandag 18. januar 2010

Løsningsforslag TFE4120 Elektromagnetisme 24. mai = 2πrlɛE(r) = Q innenfor S =

9.6 Tilnærminger til deriverte og integraler

Stein Krogdahl, Ifi UiO

Nytt skoleår, nye bøker, nye muligheter!

Numerisk Integrasjon

Kom i gang med Tett på Smartbok! Vi veileder deg steg for steg!

6 Brøk. Matematisk innhold Brøk i praktiske situasjoner Brøk som del av en mengde. Utstyr Eventuelt ulike konkreter, som brikker og knapper

LØSNINGSFORSLAG(Sensor) I TMA4140 og MA0302

TFY4104 Fysikk. Institutt for fysikk, NTNU. Høsten Løsningsforslag til øving 8. a = e m E

EKSAMEN. ANTALL SIDER UTLEVERT: 7 (innkl. forside og 2 sider formelark)

Kapittel 4 Tall og algebra Mer øving

Kapittel 5 Verb. 5.4 For å få tak i en engelsk avis. For å finne utenlandske varer. For å treffe venninna si. For å invitere henne med til lunsj.

Eksamen våren 2018 Løsninger

R2 - Heldagsprøve våren 2013

Transkript:

Eksmen i : MED SVARFORSLAG UNIVERSITETET I OSLO Det mtemtisk-nturvitenskpelige fkultet INF5110 - Kompiltorteknikk Eksmensdg : Onsdg 6. juni 2012 Tid for eksmen : 14.30-18.30 Oppgvesettet er på : Vedlegg : Tilltte hjelpemidler : 6 sider (pluss vedlegg) 1 side (side 7 rives ut, fylles ut og leveres i hvit besvrelse) Alle trykte og skrevne Les gjennom hele oppgvesettet før du begynner å løse oppgvene. Dersom du svner opplysninger i oppgvene, kn du selv legge dine egne forutsetninger til grunn og gjøre rimelige ntgelser, så lenge de ikke bryter med oppgvens "ånd". Gjør i så tilfelle rede for disse forutsetningene og ntgelsene. Deler v oppgve 3 besvres ved bruk v vedlegg. Oppgve 1 (25%) Vi skl se på følgende grmmtikk G1: S S S S S Her er S strtsymbol og eneste ikke-terminl, mens, og (smt vslutnings-symbolet $) er teminlsymboler. 1. Gi en konkret begrunnelse for t G1 er flertydig. Svr 1. Definisjonen v t en grmmtikk er flertydig er t det finnes en setning generert v grmmtikken (ltså i L(G1)) som hr minst to konkrete syntkstrær (prseringstrær). Vi legger legger merketil t denne likner veldig på flertydig utgve v uttrykk med + og *, og vi kn her se på setningen:, som hr de to syntkstrærne under. Mn kunne like gjerne brukt f.eks.: S S S S S S S S S S S S S S S

1.b Ant t: - Opersjonen hr lv presedens, og er høyressositiv - Opersjonen hr høy presedens, og er venstressositiv Angi en ny grmmtikk G2 som er entydig, som beskriver smme språket som G1 og som gir et syntks-tre som følger de to reglene over. Du kn innføre nye ikke-terminler, og du behøver ikke rgumentere for t G2 er entydig ut over å vise til t den likner tilsvrende entydige grmmtikker i pensum. Svr 1.b Det er to rimelige svr, som er like gode: S -> T S T T -> T F F F -> S -> T S T T -> T Disse, og spesielt det til venstre, er stt opp etter smme prinsipp som på side 119 i lærebok 1.c Vi ser på grmmtikkene G1, G2, smt følgende grmmtikk G3 (der + er et nytt terminl-symbol): S S S S S + S + Angi for hver v språkene L(G1), L(G2) og L(G3) om de er eller ikke er regulære. Forklr, og ngi et regulært uttrykk for de som eventuelt er regulære. Svr 1.c G1 og G2 er jo smme språket, og det er regulært og kn beskrives f.eks. slik: ( ( ) )* For G3 er lle setninger som kn dnnes med bre «+» og følgende: ++ ++++ ++++++ Det må her ltså være like mnge «+»-er både forn og bk -en. Det er kjent fr pensum t et slikt språk ikke er regulært. Ser mn på hele språket til G3 vil setningene også inneholde og, men «+»-ene vil komme inn på en liknende måte som over, så språket er ikke regulært. 1.d Tegn opp LR(0)-DFA en til den flertydige grmmtikken G1 (med vnlig bruk v S ). 2

Svr 1.d 0 S ->.S S ->. S 3 1 S -> S.S S ->. S -> S. 4 S -> S.S S ->. G1: S S S S S S S 2 S ->. 5 S S 6 S -> S S. S -> S S. 1.e Beregn First og Follow til S i G1 (med vnlig bruk v $). Angi så hvilke tilstnder i DFA en fr 1.d som hr: A. konflikter som ikke kn løses med LR(0)-betrkninger, men som kn løses med SLR(1)- betrkninger. Forklr. B. konflikter som ikke kn løses med SLR(1)-betrkninger. Forklr. Svr 1.e First(S) = { First(S ) = First(S) Follow (S) = { $ Follow(S ) = { $ A. Det er en LR(0)-konflikt i tilstnd 1, som kn løses i SLR(1) ved t mn reduserer ( ccept er reduksjon med S -> S) ved $, og skifter ved og B. Det er LR(0)-konflikter både i tilstnd 5 og 6. Disse kn ikke løses med SLR-betrkninger siden det er ktuelt både å skifte og redusere for og (men om det kommer $ vet vi t det skl reduseres). Kommentr: Vi visste t det her ville bli konflikter som ikke er løselige v noen type LRbetrktninger, siden grmmtikken er flertydig. 1.f For tilstndene under punkt B i spørsmål 1.e, ngi hvordn du ville løse konfliktene i disse «for hånd», om du skl få den presedensen og ssositiviteten som er ngitt i 1.b? Svr 1.e Gjelder lltid for S Tilsnd 5: Her ligger nå S S på toppen v stkken. Derfor: For : Reduser, siden binder sterkere enn For : Reduser, fordi er venstressositiv For $: Reduser (ingen konflikt) 3 G1: S S S S S S S

Tilsnd 6: Her ligger nå S S på toppen v stkken. Derfor: For : Skift, siden er høyressossitiv For : Skift, fordi binder sterkere enn For $: Reduser (ingen konflikt) 1.g Sett opp en SLR(1)-prseringstbell for L(G1) ut fr svret på spørsmålene 1.d og 1.f. Tbellen skl ltså h mks én ksjon i hver rute, og den resulterende syntksnlysen skl ltså følge reglene fr 1.b. Svr 1.g Her er LR(0)-DFA en fr 1.d: 0 2 S ->.S S ->. S ->. S 3 5 1 S -> S.S S ->. S -> S S. S -> S. 4 S -> S.S S ->. S S 6 S -> S S. G1: S S S S S S S $ S 0 s2 1 1 s4 s3 cc. 2 r(s -> ) r(s -> ) r(s -> ) 3 s2 5 4 s2 6 5 r(s->s S) r(s->s S) r(s->ss) 6 s4 s3 r(s->s S) Oppgve 2 (25%) Oppgve 3 (25%) 4

Oppgve 4 (25%) En metode med to vlue-prmetere er overstt til følgende sekvens v TA-instruksjoner. Den eneste typen i språket er heltll. x = <verdien v første ktuelle prmeter> (Du kn skrive dette slik: «x = pr1») y = <verdien v ndre ktuelle prmeter> (Tilsvrende) z = x + y lbel L1 u = x + 1 if (y < x) goto L4 // Vi ntr t det finnes en TA-instruksjon v denne formen y = u + 1 u = y + x lbel L2 z = 5 if (x < u) goto L1 v = x + y u = v + 1 goto L5 lbel L4 v = z + 3 x = y + u lbel L5 z = v + 4 z = x + z return z 4. Del progrmmet opp i bsle blokker, og tegn opp flyt-grfen for progrmmet. Sett nvnene B0, B1, osv. på blokkene. Svr, se lenger ned. 4.b For hver bsl blokk, finn hvilke vrible som fktisk er i live både forn og etter blokk (ltså inlive og outlive for blokk). Du kn bruke metoden fr pensum til å finne svret, eller gjøre egne betrktninger. Det er greit å enten gi svret direkte på flytgrfen fr 4., eller du kn tegne opp flytgrfen en gng til (gjerne uten kode i nodene) med lle mengdene inlive og outlive stt på der de hører hjemme. Svr, se lenger ned. 4.c Ut fr informsjonen fr 4.b og detljene i TA-instruksjonene er det mulig å se (1) om noen v TA-instruksjonene i progrmmet kn fjernes uten t det forndrer sluttresulttet når progrmmet utføres. Angi i så fll disse (2) om det er vrible som, i en eller nnen eksekvering, kn bli brukt før de hr fått verdi. Angi i så fll disse. Om du ikke hr fått til 4.b kn du likevel forsøke å svre på denne oppgven enten direkte fr progrmmet, eller fr flyt-grfen. Svr, se lenger ned. 5

Svr 4., 4.b og 4.c 4.c.1: Siden u ikke er med i outlive(b3), så er denne tre-dressesetningen helt uten virkning på resulttet B3 { u y v = x + y u = v + 1 goto L5 { v x 4.b: Det er også OK om mn sier t denne er tom B0 B1 B2 { TOM! x = pr1 y = pr2 z = x + y { x y z { x y z lbel L1 u = x + 1 if (y < x) goto L4 y = u + 1 u = y + x lbel L2 z = 5 if (x < u) goto L1 B5 { u x y z { u x { u x y z { v x z = v + 4 z = x + z return z { z B4 4.c.2: Siden denne, ltså inlive(b0), er tom er det ingen vrible som kn tenkes å bli brukt før de hr fått verdi { u y z lbel L4 v = z + 3 x = y + u { v x 4.b: Denne mengden, ltså outlive(b2), blir i første omgng bre { u y, men etter t også inlive(b1) er beregnet og blir tilbkeført, får den også x og z 4.d (Er uvhengig v det over) I pensum er det diskutert hvordn mn kn lge TA-kode for kortsluttede boolske uttrykk som står som betingelser i if- eller while-setninger. Dette gjøres rekursivt, og den rekursive kodegenererings-metoden hr to lbel-prmetere som koden skl hoppe til når mn vet t det lokle uttrykket er h.h.v. true eller flse. Progrmmet for dette er gjengitt under. Vi overstte i pensum til TA-kode og ikke til P-kode bl.. for å slippe å tenke på t det under beregning v uttykket kn være noe på stkken ved hopp, som knskje ikke stemmer med det stedet det hoppes til. Vi skl her se nærmere på hvor stort dette problemet blir, og hvordn vi eventuelt kn korrigere for det. Som svr forklr først i detlj hvordn ting vil forholde seg med stkkdybder under uttrykksberegningen, og skissér så hvordn dette kn håndteres under kodegenereringen, gjerne ved å henvise til koden under. Merk: Vi ntr t P-koden skl lges slik t stkken under kjøring er tom mellom setninger, og t den derved er tom når beregningen v det boolske uttrykket strter. Hint: Det er sikkert lurt å se på hvordn P-koden blir for noen konkrete boolske uttrykk. 6

Progrm fr pensum. Det genererer TA-kode for logiske uttrykk i if- og while-setninger: void genboolcode(string lbt, lbf) { cse : { String lbx = genlbel(); left.genboolcode(lbt, lbx); emit2( lbel, lbx); right.genboolcode(lbt, lbf); cse && : { String lbx = genlbel(); left.genboolcode(lbx, lbf); emit2( lbel, lbx); right.genboolcode(lbt, lbf); cse not : { // Hr bre left -subtre left.genboolcode(lbf, lbt); cse < : { String temp1, temp2, temp3; temp1 = left.genintcode(); temp2 = right.genintcode(); temp3 = genlbel(); emit4(temp3, temp1, «lt», temp2); // Lger instruksjonen: temp3 = temp1 < temp2 emit3(«jmp-flse», temp3, lbf); emit2(«ujp», lbt); Svr 4.d Sken her er t så lenge mn skl generere kode som kortslutter de boolske uttrykkene så blir det ingen problemer med stkkdybden i det hele ttt. Det kommer v t mn, så fort det er en boolsk verdi på stkken, kommer til å teste om denne er true/flse, og ut fr svret enten hoppe eller fortsette rett til neste instruksjon. Teste-instruksjonen er slik t den i begge tilfelle vil t bort det som er på toppen v stkken, og dermed vil det ldri bygge seg opp noe på stkken. Vi kn se på følgende eksempel, der, b c og d er boolske vrible. Beregningen vil d følge pilene, ut fr t lle grener som ligger over teksten er true-grener, og de under er flse-grener: if ( nd b ) or ( c nd d ) then else... Vi ntr ltså t stkken er tom når vi strter på if-setningen. Ved hver vribel blir verdien v denne vribelen pushet på stkken, men forsvinner igjen i og med true/flse-testen. Dermed vil skken lltid være tom når kontrollen går lngs en knt. Dette betyr t en kodegenererings-prosedyre som skl lge P-kode kn lges etter nøyktig smme ml som den ngitt i oppgven som lger TA-kode. Vi behøver ikke tenke på stkkdybden i det hele ttt. 7