Ciele
- Syntaktická analýza termov
- Overenie syntaktickej korektnosti termov
- Vlastnosti termov
- Vyhodnotenie termov
Úvod
V rámci tohto cvičenia je Vašou úlohou zoznámiť sa s jednoduchým funkcionálnym jazykom NBL. Je dôležité porozumieť základom syntaxe a sémantiky programovacích jazykov predtým, ako sa pustíme do zložitejších typových systémov. S týmto malým a jednoduchým jazykom začneme postupne zavádzať koncepty, ktoré budú neskôr užitočné pri práci s pokročilejšími jazykmi, ako je $\lambda$-kalkul.
Poznámka
Riešený vzorový príklad je zverejnený v prvej prednáške.
Postup
Krok 1
Majme dané nasledujúce termy jazyka NBL.
$$ \begin{array}{lcl} t_1 & = & if\ iszero\ 0\ then\ true\ else\ false \\ t_2 & = & if\ iszero\ (pred\ (succ\ 0))\ then\ true\ else\ false \\ t_3 & = & succ(\ if\ iszero\ (succ\ (succ\ 0))\ then\ false\ else\ (pred\ (succ\ (succ\ 0)))) \\ t_4 & = & pred(\ iszero(\ if\ iszero\ (pred\ (succ\ (succ\ (succ\ 0))))\ then\ true\ else\ (succ\ (succ\ 0)))) \\ t_5 & = & succ(\ if\ iszero\ (succ\ (succ\ (pred\ (succ\ (succ\ (succ\ 0)))))) \\ & & \quad \quad \quad then\ (succ\ (succ\ (pred\ (succ\ 0))))\ else\ (pred\ (succ\ (succ\ 0)))) \\ & & \quad \quad \quad else\ (pred\ (succ\ (succ\ 0)))) \\ \end{array} $$
Úloha 1.1
Konštruujte abstraktný syntaktický strom termov $t_1,t_2,t_3,t_4,t_5$.
Úloha 1.2
Overte či termy $t_1,t_2,t_3,t_4,t_5 \in Term$ sú termami jazyka NBL.
Úloha 1.3
Vypočítajte veľkosť každého z termov $t_1,t_2,t_3,t_4,t_5$.
Úloha 1.4
Vypočítajte hĺbku každého z termov $t_1,t_2,t_3,t_4,t_5$.
Úloha 1.5
Vypočítajte množinu konštánt termov $t_1,t_2,t_3,t_4,t_5$.
Úloha 1.6
Vyhodnoťte termy $t_1,t_2,t_3,t_4,t_5$.