PF:Moduł Podstawy: Różnice pomiędzy wersjami
Linia 48: | Linia 48: | ||
Ponieważ kompilator nie musi generować całego kodu od razu, | Ponieważ kompilator nie musi generować całego kodu od razu, | ||
dlatego też taki tryb pracy nazywamy przyrostowym. | dlatego też taki tryb pracy nazywamy przyrostowym. | ||
<program> <math>::= \{ <jednostka kompilacji> ;; \}^*</math> | <program> <math>::= \{ <jednostka kompilacji> ;; \}^*</math> | ||
</p> | </p> |
Wersja z 09:20, 17 lip 2006
W każdym języku programowania mamy trzy rodzaje konstrukcji językowych:
- podstawowe symbole (typy, wartości, operacje, relacje, itp.) --- pochodzące z dziedziny algorytmicznej,
- sposoby konstrukcji --- czyli jak z prostszych całości budować bardziej skomplikowane,
- sposoby abstrakcji --- czyli jak złożone konstrukcje mogą być nazwane i dalej wykorzystywane tak, jak podstawowe elementy.
Nasza dziedzina algorytmiczna zawiera m.inn.:
- typy: \codeline{bool}, \codeline{int}, \codeline{float}, \codeline{char}, \codeline{string},
- stałe: logiczne (\codeline{true} i \codeline{false}), całkowite (np.: 0, 1, -2), rzeczywiste (np.: 2.3, -3.4, 4.5e-7), znakowe (np.: \codeline{'a'}, napisy (np. \codeline{"ala ma kota"}).
- procedury: \codeline{+}, \codeline{-}, \codeline{*}, \codeline{/}, \codeline{mod}, \codeline{+.}, \codeline{-.}, \codeline{*.}, \codeline{/.}, \codeline{||}, \codeline{&&}, \codeline{not}, , , , , , , \codeline{^}.
Powtórka: rozróżnienie symboli od ich interpretacji.
BNF
Gramatyka bezkontekstowa jako sposób opisu związku między zapisem, a drzewem rozbioru gramatycznego. Opisując składnię języka będziemy się posługiwać notacją BNF (rozszerzenie gramatyk bezkontekstowych), ale bez przesadnego formalizmu. Opis notacji:
- <konstrukcja>,
- ,
- słowo kluczowe,
- ,
- ,
- ,
- ,
- .
Tego formalizmu będziemy używać do opisu składni.
Przyrostowy tryb pracy
Kompilator Ocamla działa w sposób inkrementacyjny, tzn. działa w cyklu powtarzając następujące czynności:
- wczytuje fragment programu,
- kompiluje go, dołączając do już skompilowanych fragmentów,
- wykonuje wprowadzony fragment.
Taki fragment programu będziemy nazywać jednostką kompilacji.Wykonanie jednostki kompilacji może zarówno powodować obliczenia wartości, jak i definiowanie nowych pojęć. Każda jednostka kompilacji musi być w Ocamlu zakończona przez \codeline{;;}. Ponieważ kompilator nie musi generować całego kodu od razu, dlatego też taki tryb pracy nazywamy przyrostowym. <program>