cyfra = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" wielka_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" znak = "+" | "-" slowo_kluczowe = main|int|float|bool|cout|cin|while|if|else|true|false|char|string|endl|break liczba_naturalna = {cyfra} liczba_calkowita = [znak]{cyfra} liczba_rzeczywista = [znak]{cyfra}["."{cyfra}] liczba_logiczna = ("true" | "false") | ("0" | "1") liczba = liczba_naturalna | liczba_calkowita | liczba_rzeczywista identyfikator = "_" | wielka_litera | mala_litera {"_" | wielka_litera | mala_litera | cyfra} typ = "int" | "float" | "char" | "bool" | "string" | "void" cudzyslow = " nawias_lewy = "(" nawias_prawy = ")" nawias_lewy_ostry = "[" nawias_prawy_ostry = "]" nawias_lewy_klamrowy = "{" nawias_prawy_klamrowy = "}" operator_zaprzeczenia = "!" operator_logiczny = "||" | "&&" | "and" | "or" operator_arytmetyczny = "+" | "-" | "/" | "*" | "%" operator_porownania = ">" | "<" | ">=" | "<=" | "!=" | "==" operator_przypisania = "=" operator_przyp_aryt = "+=" | "-=" | "*=" | "%=" | "/=" operator_jednarg = "++" | "--" srednik = ";" instrukcja_pusta = instrukcja_arytmetyczna = [typ] identyfikator {operator_arytmetyczny (identyfikator | liczba )} srednik instrukcja_bezarg = identyfikator operator_jednarg srednik deklaracja_zmiennej = typ identyfikator [instrukcja_przypisania{(identyfikator|liczba)[operator_arytmetyczny(identyfikator|liczba)]}] srednik instrukcja_wypisania = "cout<<"{cudzyslow identyfikator cudzyslow)|identyfikator|liczba|"<<"|"endl"srednik}srednik instrukcja_wczytania = "cin>>"identyfikator srednik instrukcja_prosta = instrukcja_pusta | instrukcja_arytmetyczna | instrukcja_bezarg | deklaracja_zmiennej | instrukcja_wypisania |instrukcja_wczytania | instrukcja_pusta instrukcja_zlozona = {instrukcja_prosta} warunek = nawias_lewy([operator_zaprzeczenia]identyfikator)|liczba[{(operator_logiczny|operator_porownania)(identyfikator|liczba)}] nawias_prawy instrukcja_warunkowa = "if" warunek (instrukcja_prosta | nawias_lewy_klamrowy instrukcja_zlozona nawias_prawy_klamrowy | instrukcja_pusta)[{"else if" warunek(instrukcja_prosta|nawias_lewy_klamrowy instrukcja_zlozona nawias_prawy_klamrowy|instrukcja_pusta)}] ["else" warunek (instrukcja_prosta|nawias_lewy_klamrowy instrukcja_zlozona nawias_prawy_klamrowy| instrukcja_pusta)] petla = "while" ((warunek nawias_klamrowy_lewy (instrukcja_zlozona|instrukcja_prosta) nawias_klamrowy_prawy)|instrukcja_prosta) instrukcja = instrukcja_prosta | instrukcja_zlozona | instrukcja_warunkowa | petla blok = {instrukcja} program = "main()" nawias_klamrowy_prawy blok nawias_klamrowy_lewy