Расширенная форма Бэкуса — Наура РБНФ EBNF – Extended Backus–Naur Form - Терминал или терминальный символ = алфавит языка - Нетерминал или нетерминальный символ имена переменных имена функций выражения s = w + (1 - x) f(t, s,t, y) Определяемый_символ = выражение; Определяемый_символ ::= выражение; Определяемый_символ = выражение1 , выражение2; A = "1", "2", "3"; /// "12" Определяемый_символ = выражение1 | выражение2; B = "1" | "2"| "3"; /// "1" /// "2" /// "3" C = "2",["3"] /// "2" /// "23" D = "2",{"3"} /// "2" /// "23" /// "233333333" char = "a" | "b" | "c" | .... | "z"; digit = "0" | "1" | "2" | .... | "9"; varname = char , { ( char | digit ) }; цифра_не_ноль = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; цифра = "0" | цифра_не_ноль ; натуральное = цифра_не_ноль, { цифра } ; целое = "0" | ( [ "-" ], натуральное ); char = "a" | "b" | "c" | ... | "z"; char = "a" / "b" / "c" / ... / "z"; varname = char , { ( char | digit ) }; varname = char , *( char | digit ) ; varname = char , ( char | digit )* ; varname = char , ( char | digit )+ ; varname = char , [char | digit]; varname = char , ( char | digit )? ; varname = char , n*( char | digit ) ; varname = char , n*m( char | digit ) ;