<cyfra1_9> ::= 1|2|3|4|5|6|7|8|9 <zero> ::= 0 <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} <typ_zm> ::= real | integer <op_arytm> :: = + | - | * | / | div <op_por> ::= < | > |= | >= | <= <nawias_p> :: = ( <nawias_k> ::= ) <jesli> ::= if <to> ::= then <inaczej> ::= else <dopoki> ::= while <wykonaj> ::= do <sep_dek> ::= : <blok_p> ::= begin <blok_k> ::= end <czytaj> ::= readln <pisz> ::= writeln <separator> ::= ; <dek_zm> ::= var <op_przyp> ::= := <prog> ::= program
<cyfra> ::= <zero> | <cyfra1_9> <nazwa> ::= <litera> { <litera> | <cyfra> }*
<liczba_nat_bez_0> ::= <cyfra1_9>{<cyfra>}* <liczba_naturalna> ::= <zero> | {"-"<liczba_nat_bez_0>} |<liczba_nat_bez_0> <liczba_zmiennoprzecinkowa> ::= <liczba_naturalna>"."{<cyfra>}* <liczba> ::= {<liczba_naturalna> | <liczba_zmiennoprzecinkowa>}
<deklaracja_zm_gl> ::= <nazwa> <sep_dek> <typ_zm> <separator> <zm_gl> ::= <nazwa> <wartosc> ::= <zm_gl >| <liczba> <operacja_arytm> ::= <wartosc>{<op_arytm> <wartosc>}* <operacja_arytm_w_nawias> ::={ <operacja_arytm> |"(" <operacja_arytm> ")"} <operacja_arytm_z_nawias> ::= < operacja_arytm_w_nawias > { <op_arytm> < operacja_arytm_w_nawias >}*
<wyrazenie_mat> ::={ "("{<operacja_mat_z_nawias>|<wyrazenie_mat>} {<operator_matematyczny><wyrazenie_mat>}*")" | {<operacja_mat_z_nawias>|<wyrazenie_mat>} {<operator_matematyczny><wyrazenie_mat>}* }
<porownanie>:: = <zm_gl> <op_por> <wartosc> <przypisanie> ::= <zm_gl> <op_przyp> {< wyrazenie_mat > | <wartosc>} <separator> <blok> ::= <blok_p> {<operacje>}* <blok_k> <separator>
<op_if> ::= {<jesli> <porownanie> <to> <blok>} | {<jesli> <porownanie> <to> <blok> <inaczej> <blok>} <petla> ::= <dopoki> <porownanie> <wykonaj> <blok> <czyt_pis> ::= {{<czytaj> <nawais_p> <zm_gl> <nawias_k>} | {<pisz> <nawais_p> <zm_gl> <nawias_k>} } <separator> <operacje> ::= <czyt_pis> | <petla> | <op_if> | <przypisanie> <def_prog> ::= <prog> <nazwa> <separator> <dek_zm> {<deklaracja_zm_gl> }* <blok> |