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