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>.