You are on page 1of 1

SEMANTYKA I WERYFIKACJA - ĆW.

9
Kontynuujemy semantykę denotacyjną.

1. Dodajmy bloki i deklaracje zmiennych:

I ::= · · · | begin d; I end


d ::= var x = e | d1 ; d2

2. Teraz dodajmy procedury, z widocznością statyczną i przekazywaniem


przez zmienną:

I ::= · · · | begin d; I end | call P (x)


d ::= var x = e | proc P (x) I | d1 ; d2

3. Teraz przeróbmy to na przekazywanie przez wartość, nadal z widocznością


statyczną. (Rozszerzamy składnię o dowolne wyrażenia jako parametry
aktualne.)

I ::= · · · | begin d; I end | call P (x)


d ::= var x = e | proc P (e) I | d1 ; d2

4. Dorobić rekurencję.

5. Jeśli starczy czasu:


• przerobić na dynamiczne wiązanie (zmienić typ Proc, żeby przyjmo-
wała także PEnv i Env)
• zamiast procedur dodać do języka funkcje:

e ::= x | n | e1 + e2 | · · · | F (x)
I ::= · · · | begin d; I end | return (x)
d ::= var x = e | fun F (x) I | d1 ; d2

You might also like