Leertaak 3
Procedure-semantiek
Achtergrond
Met behulp van een administratie van proceduredeclaraties
is het mogelijk om dynamische en statische scope voor procedures te beschrijven.
Het onderscheid is uit te drukken via een verschil in het mechanisme om nieuwe
procedure-declaraties in de administratie te verwerken. In compilers kunnen
we deze mechanismen terugvinden. Soms is er een speciale ingreep nodig om aan
recursieve procedures de juiste semantiek toe te kennen.
De beschrijvingsmethode die we hier bekijken, leent zich
goed als basis om andere proceduremechanismen te karakteriseren.
Leerdoel
Na het voltooien van deze taak kunt u
- onderstaande kernbegrippen (zie 'Instructie') verklaren;
- het effect van verschillende keuzen voor scope-mechanismen vergelijken
aan de hand van de betreffende semantiekregels;
- evaluatiemechanismen voor recursieve aanroepen van procedures vergelijken;
- aangeven hoe de semantiekbeschrijving aangepast kan worden voor het modelleren
van varianten van proceduremechanismen.
Instructie
- Lees p. 56-57. Kernbegrippen:
- Bekijk het programma in Exercise 2.39 (p. 55). Bepaal de waarde van y na
uitvoering van het programma in het geval van
- dynamische scope voor variabelen en procedures,
- dynamische scope voor variabelen en statische scope voor procedures
Beredeneer de resultaten aan de hand van de semantiekregels.
- Construeer een statement dat het verschil tussen de twee regels in Tabel
2.6 (p. 56) illustreert. Motiveer het antwoord aan de hand van de semantiekregels.
Wellicht lukt het ook zónder de gehele afleidingsbomen te tekenen (vgl.
Exercise 2.40, p. 57) om een overtuigende redenering te geven.
- Bespreek (zonder de details uit te werken) hoe de semantiekbeschrijving
aangepast kan worden voor het beschrijven van
- procedures met parameters,
- wederzijdse recursie,
- procedures die waarden opleveren.
Bekijk eventueel Exercise 2.45 en Exercise 2.46 (p. 60) ter inspiratie.
Product
- Analyse van de semantiek van het programma in Exercise 2.39, toegespitst
op de waarde van y.
- Programma-voorbeelden (met semantiek-analyse) die het verschil tussen de
alternatieve call-regels aangeven.
- Schets voor de aanpassingen van de semantiekbeschrijvingen voor het modelleren
van de genoemde varianten.
Reflectie
- Maken uw redeneringen gebruik van de juiste technische semantische begrippen?
- Zijn uw beweringen en redeneerstappen duidelijk aangegeven?
- Zijn de programma-voorbeelden 'minimaal', dat wil zeggen: bevatten ze de
essentie van een verschilpunt, zonder overbodige ballast? Is het verschil
in effect concreet gemaakt met behulp van semantische begrippen?
- Is het voor een medestudent duidelijk wat er gedaan moet worden om de varianten
te modelleren?