Notacja BNF:
Notacja Backusa-Naura (ang. Backus Naur Form (BNF)) została napisana w kryteriach wymogów projektu w celu przedstawienia tekstowej definicji podzbioru języka Pascal. Przyjęto następujące symbole metajęzykowe (alfabetu pomocniczego):
<> - służące do nazywania jednostek składniowych definiowanego języka umieszcza się w nawiasach kątowych;
= - czytany "jest równe z definicji", łączy strony produkcji. Po lewej tronie symbolu podaje się nazwę definiowanego pojęcia, po prawej - definicję;
[] - selekcja. Oznacza opcjonalne, czyli nieobowiązkowe wystąpienie;
{} - iteracja. Oznacza dowolną liczbę powtórzeń (także zerową) elementów definicji objętych nawiasami;
| - rozdzielanie alternatyw na liście. Oznacza w produkcjach spójnik logiczny "albo" (alternatywę) i pozwala na zmniejszenie ich liczby. Po obu stronach tego symbolu występują różne, ale równoprawne człony definicji, których jednocześnie można wybrać tylko jeden;
() - opcjonalność. Oznacza jeden z alternatywnych zapisów alternatywy albo alternatyw objętych tymi nawiasami;
. - oznacza koniec definicji;
*...* - komentarz;
@ - oznaczenie elementu identyfikującego;
Słowa kluczowe
<Begin>::="BEGIN",
<End>::="END",
<Var>::="VAR",
<Integer>::="INTEGER",
<real>::="REAL",
<Boolean>::="BOOLEAN",
<For>::="FOR",
<to>::="TO",
<downto>::="DOWNTO",
<do>::="DO",
<if>::="IF",
<then>::="THEN",
<else>::="ELSE",
<write>::="WRITE",
<writeln>::="WRITELN",
<read>::="READ",
<readln>::="READLN".
Operatory, typy, zmienne
<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|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,
<cyfra> ::= 0|1|2|3|4|5|6|7|8|9
<slowo_kluczowe> ::= begin|end|var|integer|real|for|to|do|if|then|Ele
<separator> ::= ;
<przecinek> ::= ,
<kropka> ::= .
<dwukropek> ::=:
<operator_przypisania> ::= :=
<operatory_arytmetyczne> ::= + | - | * | /
<opareatory_relacyjne> ::= = | <> | < | <= | > | >=
<nawias_lewy> ::= (
<nawias_prawy> ::= )
<cudzysłów>::='
<tekst>:=<cudzysłów>{<litera>|<cyfra>|<znak_specjalny>}<cudzysłów>
<liczba_calkowita > ::= [-]<cyfra>{<cyfra>}
<liczba_rzeczywista>::=[-]<cyfra>{<cyfra>}[<kropka>{<liczba_calkowita>}]
<wartosc_boolean_> ::=true | false
<wartosc> ::= <liczba_calkowita>|<liczba_rzeczywista>|<wartosc_boolean>
< nazwa_zmiennej > ::= <litera>{<litera>}
Deklaracje i operacje
<deklaracja_zmiennej> ::= <identyfikator><dwukropek><typ>< separator >
<deklaracja_zmiennych> ::= <slowo_klucz_deklaracja_zmiennych><deklaracja_zmiennej> |
<deklaracja_zmiennych><deklaracja_zmiennej>
<deklaracja_stalej> ::= <identyfikator><operator_ini_stalej><wartosc>
< separator ><identyfikator><dwukropek><typ><operator_ini_stalej><wartosc>< separator >
<deklaracja_stalych> ::= <slowo_klucz_deklaracja_stalych><deklaracja_stalej> | <deklaracja_stalych><deklaracja_stalej>
<operacja_arytmetyczna> ::= <wartosc><operator_arytmetyczny><wartosc>
<operacja_relacyjna>::=<wartosc><operator_porownania><wartosc>
<operacja_przypisania> ::= <identyfikator><operator_przypisania><wartosc> | <identyfikator><operator_przypisania><operacja_binarna>
<operacja_wyjscia> ::= <rodzaj_operacji_wyjscia><nawias_otwarty><wartosc><nawias_zamkniety>< separator >
<operacja_wejscia> ::= <rodzaj_operacji_wejscia><nawias_otwarty><identyfikator><nawias_zamkniety>< separator >
<operacja_wejscia_wyjscia> ::= <operacja_ wejscia > | <operacja_ wyjscia >
<tresc_bloku> ::= <polecenie> | <tresc_bloku><polecenie>
<blok> ::= <Begin><tresc_bloku><End>
<polecenie> ::= <operacja> | <instrukcja_warunkowa> | <petla_for> |
< operacja_wejscia_wyjscia >
<instrucja_warunkowa> := <jezeli><operacja_relacji><wtedy><polecenie> |
<jezeli><operacja_relacji><wtedy><blok> |
<jezeli><operacja_relacji><wtedy><polecenie><albo><polecenie>
<jezeli><operacja_relacji><wtedy><blok><albo><polecenie> |
<jezeli><operacja_relacji><wtedy><polecenie><albo><blok> |
<jezeli><operacja_relacji><wtedy><blok><albo><blok>
<petla_for> ::= <dla><identyfikator><operator_przypisania><wartosc><do><wartosc><wykonuj><polecenie> | <dla><identyfikator><operator_przypisania><wartosc><do><wartosc><wykonuj><blok>
<instrukcja_zlozona>::=<begin>{<instrukcja>|< instrucja_warunkowa >}*<end><separator>.