Dit is de samenvatting van het tweede hoofdstuk van het vak Interpretatie van Computerprogramma's I. In deze samenvatting werd zowel alle informatie uit de slides als bijkomende informatie uit eigen notities opgenomen. Aan het einde van de samenvatting werden ook de herhalingsvragen opgelost.
E...
Hoofdstuk 2: Scheiden van evaluatie en
syntactische analyse
1 Syntactische analyse in M-Eval
Voorbeeld: berekenen van faculteit → recursieve procedure → syntax van de procedure wordt bij
elke recursieve stap opnieuw geanalyseerd door de meta-circulaire evaluator → veel werk → weinig
performant
Oplossing: we scheiden de syntactische analyse van de te evalueren expressie van de eigenlijke
evaluatie.
2 Scheiden van syntactische analyse en evaluatie
• versnelt evaluatie van expressies
o vermijdt repetitief analyseren van de syntax van dezelfde expressie
o waarden van eenvoudige expressies kunnen op voorhand berekend worden
• herkent syntactische fouten voordat expressie geëvalueerd wordt
o preventie van fouten voor de eigenlijke evaluatie
2.1 Het scheiden geïmplementeerd
Gegeven een te evalueren expressie
• syntactische analyse (procedure analyze) van de expressie en omvorming tot 1
evaluatieprocedure
• toepassing van de evaluatieprocedure in de omgeving waarbinnen de expressie geëvalueerd
moest worden tot een waarde
1
, Nieuwe definitie van eval:
(define (eval exp env)
((analyze exp)env))
Uitgevoerd tijdens de syntactische analyse van de expressie
Uitgevoerd tijdens de evaluatie van de expressie
3 Syntactische analyse van expressies
(define (analyze exp)
Neemt geen omgeving meer als argument → alleen omvormen naar een
procedure die dan zelf geëvalueerd zal worden t.o.v. een omgeving
tot een waarde
(cond ((self-evaluating? exp)
(analyze-self-evaluating exp))
((quoted? exp) (analyze-quoted exp))
((variable? exp) (analyze-variable exp))
((assignment? exp) (analyze-assignment exp))
geeft procedure terug die weet hoe een assignment in een gegeven
omgeving te evalueren
((definition? exp) (analyze-definition exp))
((if? exp) (analyze-if exp))
((lambda? exp) (analyze-lambda exp))
Delegeert nu ook naar een gespecialiseerde procedure.
((begin? exp) (analyze-sequence (begin-actions exp)))
((cond? exp) (analyze (cond->if exp)))
((application? exp) (analyze-application exp))
Delegeert nu ook naar een gespecialiseerde procedure.
(else
(error "Unknown expression type -- ANALYZE" exp))))
3.1 Analyse van enkelvoudige expressies
(define (analyze-variable exp)
(lambda (env) (lookup-variable-value exp env)))
Geeft procedure die een omgeving als invoer neemt en de waarde van
een variabele t.o.v. die omgeving opzoekt. Kan alleen tijdens
evaluatie omdat waarde van variabele mogelijk door eerdere
neveneffecten van de procedure veranderd.
(define (analyze-quoted exp)
(let ((qval (text-of-quotation exp)))
Kan al gedaan worden voor de evaluatie van de expressie
(lambda (env) qval)))
2
Voordelen van het kopen van samenvattingen bij Stuvia op een rij:
√ Verzekerd van kwaliteit door reviews
Stuvia-klanten hebben meer dan 700.000 samenvattingen beoordeeld. Zo weet je zeker dat je de beste documenten koopt!
Snel en makkelijk kopen
Je betaalt supersnel en eenmalig met iDeal, Bancontact of creditcard voor de samenvatting. Zonder lidmaatschap.
Focus op de essentie
Samenvattingen worden geschreven voor en door anderen. Daarom zijn de samenvattingen altijd betrouwbaar en actueel. Zo kom je snel tot de kern!
Veelgestelde vragen
Wat krijg ik als ik dit document koop?
Je krijgt een PDF, die direct beschikbaar is na je aankoop. Het gekochte document is altijd, overal en oneindig toegankelijk via je profiel.
Tevredenheidsgarantie: hoe werkt dat?
Onze tevredenheidsgarantie zorgt ervoor dat je altijd een studiedocument vindt dat goed bij je past. Je vult een formulier in en onze klantenservice regelt de rest.
Van wie koop ik deze samenvatting?
Stuvia is een marktplaats, je koop dit document dus niet van ons, maar van verkoper lennyS. Stuvia faciliteert de betaling aan de verkoper.
Zit ik meteen vast aan een abonnement?
Nee, je koopt alleen deze samenvatting voor €3,48. Je zit daarna nergens aan vast.