Uppgift 4: Träd (3 p)
Ett parse-träd (ibland kallat "konkret syntaxträd") innehåller noder för alla icke-terminaler.
I ett syntax-träd (ibland kallat "abstrakt syntaxträd") har man tagit bort alla "onödiga" inre noder,
och flyttat upp operatorerna.
Här är ett kortare exempel på inmatning till kartdatabasen:
ort Örebro
ort Karlstad
väg Örebro Karlskoga
slut
|
Rita upp ett parse-träd för denna inmatning,
med din grammatik från uppgiften ovan.
Uppgift 5: Parsning (6 p)
Skriv en prediktiv recursive-descent-parser för inmatningsspråket.
Gör detta i ett språk som åtminstone liknar något vanligt känt programmeringsspråk, till exempel C.
Du behöver inte skriva exakt korrekt programkod,
men det ska framgå vilka procedurer som finns,
hur de anropar varandra, och vilka jämförelser med tokentyper som görs.
Förklara gärna sådant som kan antas vara oklart för läraren.
Du kan anta att det redan finns en funktion som heter scan,
och att den returnerar typen på nästa token.
Uppgift 6: Några termer (4 p)
Förklara kort vad följande begrepp från kompilatortekniken innebär.
Ge gärna exempel.
- Aktiveringspost ("activation record")
- Döda data ("dead data")
- Död kod ("dead code")
- Referensräkning ("reference counting")