Samenvatting hoofdstuk 2: Scheiden van Evaluatie en Syntactische Analyse
23 views 0 purchase
Course
Interpretatie van computerprogramma\'s I
Institution
Vrije Universiteit Brussel (VUB)
Book
Structure & Interpretation Computer
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
The benefits of buying summaries with Stuvia:
Guaranteed quality through customer reviews
Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.
Quick and easy check-out
You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.
Focus on what matters
Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!
Frequently asked questions
What do I get when I buy this document?
You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.
Satisfaction guarantee: how does it work?
Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.
Who am I buying these notes from?
Stuvia is a marketplace, so you are not buying this document from us, but from seller lennyS. Stuvia facilitates payment to the seller.
Will I be stuck with a subscription?
No, you only buy these notes for $3.70. You're not tied to anything after your purchase.