Netypovaný jazyk NBL

Ciele

  1. Syntaktická analýza termov
  2. Overenie syntaktickej korektnosti termov
  3. Vlastnosti termov
  4. 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$.