SYBSc Datavitenskap - Teoretisk kompilatorkonstruksjon - Spørsmål
År: 2022
Varighet: 3 timer
Instruksjoner:
Alle spørsmål er obligatoriske.
Alle spørsmål har like karakterer.
Del 1:
Beskriv Chomsky-hierarkiet med referanse til endelige automater, pushdown-automater og turingmaskiner.
Gi en kort oversikt over hovedfunksjonene og komponentene til en leksikalsk analysator.
Diskuter de ulike analyseteknikkene som brukes i kompilatorer, og vær spesielt oppmerksom på ovenfra og ned og nedenfra og opp.
Forklar med relevante eksempler begrepet L-attribuert og S-attribuert grammatikk.
Illustrer hvordan mellomrepresentasjon spiller en avgjørende rolle i kompileringsprosessen.
Del 2:
Design en leksikalsk analysator for å identifisere identifikatorer og nøkkelord i et programmeringsspråk.
Skriv et regulært uttrykk for å se etter gyldige e-postadresser.
Forklar hvordan en kompilator utfører typekontroll og datatypekonverteringer.
Konstruer en LR(0)-parsetabell for en gitt grammatikk.
Utvikle en algoritme for å konstruere kontrollflytgrafer for en mellomrepresentasjon.
Del 3:
Gi en oversikt over de ulike typene kodeoptimaliseringsteknikker som utføres under kompilering.
Diskuter viktigheten og utfordringene ved å generere effektiv maskinkode.
Forklar begrepene lokal variabel allokering, spillkode og registerallokering i sammenheng med kodegenerering.
Fremhev avveiningene mellom optimalisering for plass eller hastighet under kodegenerering.
Skriv korte notater om følgende:
Kodefolding
Kontroller utflatningen av flyten
Fjerning av død kode
Løkkeutrulling
Registrer tildeling
Lykke til!