Opis podzbioru języka
Pascal, który jest interpretowany przez zaimplementowany interpreter.
1. Akceptowane znaki ::= - przypisanie [] - element może wystąpić 0 lub 1 raz (co najwyżej 1 raz) {} - wybierz jeden z elementów występujących (dokładnie 1 raz) {}+ - element musi wystąpić co najmniej 1 raz (1 lub więcej razy) {}* - element może wystąpić 0 lub więcej razy (0 lub więcej razy) <> - zostało zdefiniowane wcześniej cyfra::={0|1|2|3|4|5|6|7|8|9} liczba_calk::=<cyfra>{<cyfra>}* liczba_nat::={0|1|2|3|4|5|6|7|8|9}+ liczba_zmiennop::={<cyfra>}+< separator_dzies>{<cyfra>}* liczba::={< liczba_calk>|< liczba_zmiennop>} mala_litera::={a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z} duza_litera::={A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z} litera::={<mala_litera>|<duza_litera>} znak::={<cyfra>|<litera>|_} nazwa::=<litera>{<znak>}* spacja::={" "} cudzyslow::={"} ciapek::={'} znak_inny::={~|!|@|#|$|%|^|&|*|(|)|-|+|=|[|]|{|}|;|:|<|>|,|.|/|?|\|"|"|<spacja>} wszystkie::={<znak>|{<znak_inny>}*} 2. Operatory i symbole operator::={ +|-|*|/ } operator_relacji::={ <|>|=|>=|<=|<> } nawias::={ (|)|[|] } klamra_l::={ { } klamra_p::={ } } separator_dzies::={ .} inne_symbole::= { ,| : } 3. Słowa kluczowe s_and::={and} s_begin::={begin} s_const::={const} s_do::={do} s_else::={else} s_end::={end} s_for::={for} s_if::={if} s_or::={or} s_program::={program} s_then={then} s_to::={to} s_var::={var} 4. Deklaracje zmiennych i operacji nazwa::=<litera>{<znak>}* nazwa_zmiennej::=<nazwa> typ::={string|integer|real|boolean} separator::={ ; } zmienna::=<nazwa_zmiennej>{','[<nazwa_zmiennej>]}*':'<typ><separator> wartosc::={<liczba>|<zmienna>} operacja_matem::=<wartosc>{<operator><wartosc>}* operacja_matem_w_nawias::={<operacja_matem>|'('<operacja_matem>')'} operacja_matem_z_nawias::=<operacja_matem_w_nawias>{<operator><operacja_matem_w_nawias>}* wyrazenie_mat::={'('{<operacja_mat_z_nawias>|<wyrazenie_mat>}{<operator_matematyczny> przypisanie::={:=} operacja_przypisania::=<zmienna><przypisanie>{<liczba>|<zmienna>|<tekst>|<wyrazenie_mat>} wynik::=<zmienna><operator><zmienna><separator> instrukcja_prosta::={<zmienna><przypisanie><zmienna><separator> |<zmienna><przypisanie><wynik><separator>} instrukcja_zlozona::=<s_begin>{<instrukcja_prosta>}*<s_end><separator> warunek::=
{{<wartosc><operator_relacji><wartosc>}|{<zmienna><s_and><zmienna>}|{<zmienna><s_or>< petla_for::=<s_for><zmienna>':='{<liczba_nat>|<zmienna>|<wyrazenie_mat>}<s_to> komentarz::= <klamra_l>{ <nazwa><spacja>}*<klamra_p> 5. Operacje we/wy o_read::={read} o_readln::={readln} o_write::={write} o_writeln::={writeln} tekst::={<ciapek><wszystkie><ciapek>} output::={<liczba>|<zmienna>|<tekst>|<wyrazenie_mat>} wczytywanie_zmiennych::={<o_read><nazwa_zmiennej><separator>|<o_readln><nazwa_zmiennej> wypisywanie::={<o_write><wszystkie><separator>|<o_writeln><wszystkie><separator>} 6. Struktura programu def_programu::=
{<s_program><nazwa><separator>}
[<s_const>{<nazwa><przypisanie>{<liczba>|<tekst><separator>}}+]
[<s_var>{<zmienna>}+] <s_begin>
{<operacja_przypisania>|<wypisywanie>|<wczytywanie_zmiennych>|<instrukcja_prosta>
|