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
Les avantages d'acheter des résumés chez Stuvia:
Qualité garantie par les avis des clients
Les clients de Stuvia ont évalués plus de 700 000 résumés. C'est comme ça que vous savez que vous achetez les meilleurs documents.
L’achat facile et rapide
Vous pouvez payer rapidement avec iDeal, carte de crédit ou Stuvia-crédit pour les résumés. Il n'y a pas d'adhésion nécessaire.
Focus sur l’essentiel
Vos camarades écrivent eux-mêmes les notes d’étude, c’est pourquoi les documents sont toujours fiables et à jour. Cela garantit que vous arrivez rapidement au coeur du matériel.
Foire aux questions
Qu'est-ce que j'obtiens en achetant ce document ?
Vous obtenez un PDF, disponible immédiatement après votre achat. Le document acheté est accessible à tout moment, n'importe où et indéfiniment via votre profil.
Garantie de remboursement : comment ça marche ?
Notre garantie de satisfaction garantit que vous trouverez toujours un document d'étude qui vous convient. Vous remplissez un formulaire et notre équipe du service client s'occupe du reste.
Auprès de qui est-ce que j'achète ce résumé ?
Stuvia est une place de marché. Alors, vous n'achetez donc pas ce document chez nous, mais auprès du vendeur lennyS. Stuvia facilite les paiements au vendeur.
Est-ce que j'aurai un abonnement?
Non, vous n'achetez ce résumé que pour €3,48. Vous n'êtes lié à rien après votre achat.