Projekt będzie obejmował stworzenie interpretera języka Pascal. Zakres jaki będzie on obejmował ograniczony zostanie do podstawowych instrukcji języka oraz pętli While. Zastosowane będą instrukcje logiczne If - Then oraz If - Then - Else.
Notacja Backhusa-Naura dopuszcza stosowanie następujących symboli:
<> - w nawiasach ostrych podaje się definiowanej składni,
::= - oznacza przypisanie do definiowanej nazwy jej składni,
| - lub
[ ] - nawiasy kwadratowe oznaczają opcjonalne wystąpienie,
{} - 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),
Notacja BNF
<operacja_przypisania>::= “:=”
<cz_deklaracji>::= var
<deklaracja>::= <nazwa> ”: ” <typ_zmiennej>
<nazwa>::= <litera> | <litery_cyfry>
<litery_cyfry>::= <litera> | <litery_cyfry><literaz_cyfra>
<litera_cyfra>::=<litera> | <cyfra>
<litera>::= ”a” | ”b” | ”c” |…| ”z” | ”A” |…| ”Z” | ”_”
<cyfra>::= ”0” | ”1” | ”2” | … | ”9”
<typ_zmiennej>::= integer | real | bool
<wart_bool>::= ”true” | ”false”
<zmienna>::=<nazwa>
<operacja_arytmetyczna>::= + | - | * | /
<operacja_porownania> ::= < | > | = | <= | >=
<koniec_instrukcji>::= ;
<operacja_wejscia>::=read | readln
<operacja_wyjscia>::=write | writeln
<instrukcja>::= <zmienna> <operacja_przypisania> <zmienna> <operacja_arytmetyczna>
<cyfra><koniec_instrukcji> |
<zmienna><cyfra> <operacja_arytmetyczna><zmienna>
<koniec_instrukcji> |
<zmienna><operacja_przypisania><cyfra> <operacja_arytmetyczna><zmienna>
<koniec_instrukcji> |
<instrukcja_warunkowa>
<blok_instrukcji>::= ”begin” <instrukcja> ”end” <koniec_instrukcji>
<warunek>::= <zmienna><operacja_porownania><zmienna> |
<zmienna><operacja_porownania><cyfra> |
<zmienna><operacja_porownania><wart_bool>
<instrukcja_warunkowa>::= ”if” <warunek> ”then” <blok_instrukcji> |
”if” <warunek> ”then” <instrukcja>
<petla>::= ”while” <warunek> ”do” <blok_instrukcji>
|