Forslag til eksamensspørgsmål i SPO - F00
Eksamensform
Mundtlig eksamen uden forberedelse (20 min). Der holdes et oplæg på
basis af et trukket spørgsmål fra en delmængde af nedenstående liste.
Ved 75% af kursets indhold som eksamenspensum, så skal der udvælges
ca. 11 spørgsmål.
En del af spørgsmålene er ret omfangsrige, der er naturligvis jeres
opgave af vælge en passende delmængde ud som I vil tale om.
Mulige eksamensspørgsmål
1. Struktur af en compiler - moduler og interfaces.
Beskrive de forskellige dele som en compiler er opbygget af og hvad
deres opgave er, husk af komme ind på hvilke mellemformater der
binder de forskellige dele sammen.
2. Leksikalsk analyse.
Beskriv (kort) formålet med den leksiskalske analyse, regulære
udtryk og endelige automatker. Beskriv
hvordan vi konstruerer en endelig automat udfra regulære udtryk,
og hvordan vi konverterer en NFA til en DFA (der er ikke tid til
at gå i dybden med begge delspørgsmål, så vælg ét).
3. LL(k) (top-down, predikativ) parsing.
Beskriv (kort) princippet og implementation af en top-down
parser. Beregning af first og follow mængder og
hvad de bruges til. Kom eventuelt ind på problemer for top-down
parsere (venstre rekursion og venstre faktorisering) og hvad man gør
ved dem.
4. LR(k) (bottom-up) parsing.
Beskriv (kort) princippet i en bottom-up parser, herunder hvordan en
skift-reduce parser virker og forholdet mellem derivationer og
reduktioner. Kom eventuelt ind på hvordan en LL(1) parsetabel opbygges.
5. Statisk semantisk analyse.
Hvad er formålet med statisk semantisk analyse og hvordan udføres
den? Hvad bruge
symboltabellen til (også efter den statisk semantiske analyse)?
Diskuter eventuelt effektiv implementation af symboltabeller.
6. Realisering af rekrusive funktioner og procedurer
Forklar hvordan vi vha. køretids stakken kan implementere rekursive
funktioner og procedurer med lokale variable. Gennemgå parameter
overførsel og adgang til variable i yderliggende scopes.
7. Mellemformater
Hvorfor bruger vi mellemformater istedetfor at generere maskinkode
direkte udfra det abstrakte parsetræ? Giv en kort introduktiontion
til mellemformatet IR-træer og forklar hvordan man genererer
IR-træer udfra det abstrakte parsetræ (eventuelt vha. et eksempel).
8. Kodegenerering fra mellemformat
Forklar princippet i tiling, hvad er forskellen mellem optimum og
optimal tiling. For enten virkemåden af Maximum munc eller
dynamisk programmerings algoritmen til kodegenering.
9. Liveness analyse
Hvad er liveness analyse, hvad er formålet, og hvordan
foregår det?
10. Registertildeling
Beskriv kort hvorfor vi ønsker så god en register tildeling som
muligt, og forklar derefter virkemåden af simplifikations
algoritmen og gennemgå udvalgte dele i detaljer.
11. Garbage collection
Der ønskes en kort motivation for hvorfor garbage collection er
ønskværdigt, en gennemgang af en udvalgt garbage collection teknik
og en diskussion af inkrementel garbage collection.
12. Oversættelse af objekt-orienterede sprog
Hvad er det, der gør oversættelse af objekt-orienterede sprog til
noget særligt og hvad gør man ved det?
13. Sprogdesign - Statements.
Der ønskes en gennemgang af designprincipperne bag forskellige
typer statements og eksempler på eksisterende statements og deres
relation til design principperne.
14. Sprogdesign - Data og Typer
Hvad er ideen bag typer? Beskrive de forskellige slags typer
vi har i imperative sprog og hvordan deres layout er i hukommelsen.
15. Sprogdesign - Procedurer og Funktioner
Der ønskes en gennemgang af designprincipperne bag
abstraktionsmekansimer som procedurer og funktioner. Husk at medtage
de spørgsmål som sprogdesigneren skal tage stilling (
hvordan parameter mekanismen skal fungere, scoperegler etc.) til.
Til SPO hjemmesiden |
Til DAT2 hjemmesiden
Josva Kleist
<kleist@cs.auc.dk>
Last modified: Thu Apr 8 14:35:32 1999