<cyfra>::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"

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

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

<litera>::={<duza_litera>,<mala_litera>}

<slowo>::=<litera>{<litera><cyfra>}+

<znak>::="+"|"-"

<znak_poczatka_bloku>::="{"

<znak_konca_bloku>::="}"

<lewa_klamra_tablicy>::="["

<prawa_klamra_tablicy>::="]"

<lewy_nawias>::="("

<prawy_nawias>::=")"

<znak_konca_instrukcji>::=";"

<separator_dziesietny>::="."

<operator_arytmetyczny>::="+"|"-"|"*"|"/"

<operator_logiczny>::="||"|"&&"|"<"|">"|"=="

<operator_przypisania>::="="

<operator_new>::="new"

<operacja_arytmetyczna>::={<zmienna>,<wartosc_int>,<wartosc_float>} <operator_arytmetyczny>{<zmienna>,<wartosc_int>,<wartosc_float>} | <lewy_nawias>{<zmienna>,<wartosc_int>,<wartosc_float>} <operator_arytmetyczny>{<zmienna>,<wartosc_int>,<wartosc_float>} <prawy_nawias>

<zlozone_operacje_arytmetyczne>::=<operacja_arytmetyczna> {<operator_arytmetyczny><operacja_arytmetyczna>}*

<wyrazenie_logiczne>::={<zmienna>,<wartosc>}<operator_logiczny> {<zmienna>,<wartosc>} | <lewy_nawias>{<zmienna>,<wartosc>} <operator_logiczny>{<zmienna>,<wartosc>}<prawy_nawias>

<zlozone_wyrazenie_logiczne>::=<wyrazenie_logiczne>{<operator_logiczny> <wyrazenie_logiczne>}*

<typ_liczbowy>::="int"|"float"

<typ_logiczny>::="boolean"

<typ>::={<typ_liczbowy>,<typ_logiczny>}

<wartosc_int>::=[<znak>]{<cyfra>}+

<wartosc_boolean>::="true"|"false"

<wartos_float>::={<wartosc_int>} [{<separator_dziesietny>}{cyfra}+]

<wartosc>::={<wartosc_int>,<wartosc_float>,<wartosc_boolean>}

<zmienna>::=<slowo>

<deklaracja_zmiennej>::=[<typ>] <zmienna>

<deklaracja_zmiennej_tablicowej>::=[<typ] <zmienna><lewa_klamra_tablicy> <prawa_klamra_tablicy>

<deklaracja>::={<deklaracja_typu_prostego>,<deklaracja_typu_tablicowego>}

<definicja_zmiennej_tablicowej::=<operator_new> <typ> <lewa_klamra_tablicy> {<cyfra>}+ <prawa_klamra_tablicy>

<post_dekrementacja>::=<zmienna> --

<post_inkrementacja>::=<zmienna> ++

<instrukcja_pusta>::=<znak_konca_instrukcji>

<instrukcja_przypisania>::=<zmienna><operator_przypisania>{<wartosc> ,<zmienna>,<definicja_zmiennej_tablicowej>}

<instrukcja_przypisania_elementu_tablicy>::=<zmienna> <lewa_klamra_tablicy> {<cyfra>}+ <prawa_klamra_tablicy> <operator_przypisania>{<wartosc> ,<zmienna>,<definicja_zmiennej_tablicowej>}

<instrukcja>::={<instrukcja_pusta>,<instrukcja_przypisana>,<blok_instrukcji> ,<instrukcja_if>,<instrukcja_while>,<post_dekrementacja>,<post_inkrementacja>} <znak_konca_instrukcji>

<blok_instrukcji>::=<znak_poczatku_bloku>{<instrukcja>}+<znak_konca_bloku>

<slowo_kluczowe_while>::="while"

<instrukcja_while>::=<slowo_kluczowe_while><lewy_nawias> <zlozone_wyrazenie_logiczne><prawy_nawias>{<blok_instrukcji>,<instrukcja>}

<slowo_kluczowe_if>::="if"

<instrukcja_if>::=<slowo_kluczowe_if><lewy_nawias><zlozone_wyrazenie_logiczne> <prawy_nawias>{<blok_instrukcji>,<instrukcja>}[else {<blok_instrukcji> ,<instrukcja>}]

<instrukcja_wypisania>::="System.out.println"<lewy_nawias>{<zmienna> ,<wartosc>}<prawy_nawias><znak_konca_instrukcji>