* Формальное БНФ описание языка программироования КОНЦЕПТ * 21.07.2014, www.gendoc.ru * Программа <программа>::={<начало_строки><пробелы><предложение>} <предложение>::=<строка_комментарий>|<печать_строки>|<команда>|<пусто> <строка_комментарий>::='*'<символы> <печать_строки>::='>'<шаблон_строки> <команда>::=<команда_управления_порядком_вычислений>|<команда_c_одним_ключевым_словом>|<вызов_метода_встроенного_класса>|<вызов_функции> * Команды <команда_управления_порядком_вычислений>::= |<команда_если>|<команда_выбор> |<команда_для>|<команда_пока> |<команда_функция>|<команда_вызвать> |<команда_вставить>|<команда_выполнить> |<команда_стоп> <команда_c_одним_ключевым_словом>::=<команда_присвоить>|<команда_увеличить>|<команда_печать>|<команда_отладка>|<команда_когда> <вызов_метода_встроенного_класса>::=<имя_класса><обязательные_пробелы><имя_метода><список_аргументов> <вызов_функции>::=<имя_функции><список_аргументов> <имя_класса>::=<слово> <имя_метода>::=<слово> <имя_функции>::=<слово>|<строковая_константа> * Список аргументов <список_аргументов>::={<обязательные_пробелы><аргумент>} <аргумент>::=<строковая_константа>|<подстановка>|<строка_с_подстановками>|<вложенная_команда>|<продолжение_списка_аргументов>|<слово> * Аргументы <строковая_константа>::="'"{<символ_не_апостроф>}"'" <подстановка>::='['<вложенная_подстановка>']' <строка_с_подстановками>::='"'<шаблон_строки_без_апострофов>'"' <вложенная_команда>::='('<пробелы><вызов_вложенной_команды><обязательные_пробелы>')' <продолжение_списка_аргументов>::='\'<символы><незначащие_строки><начало_строки><пробелы><аргумент> <слово>::=<символ_не_пробел_апостроф_скобка_слеш>{<символ_не_пробел>} <вызов_вложенной_команды>::=<вызов_метода_встроенного_класса>|<вызов_функции> * Шаблоны строк и подстановки <шаблон_строки>::=<вложенная_подстановка>|<пусто> <вложенная_подстановка>::=<символ_не_квадратная_скобка>{<символ_не_квадратная_скобка>} |{<символ_не_квадратная_скобка>}<подстановка>{<символ_не_квадратная_скобка>} <шаблон_строки_без_апостофов>::={<символ_не_квадратная_скобка_апостроф>} |{<символ_не_квадратная_скобка_апостроф>}<подстановка>{<символ_не_квадратная_скобка_апостроф>} <незначащие_строки>::={<начало_строки><пробелы>(<пустое_предложение>|<строка_комментарий>})} * Цепочки символов <символы>::={<символ>} <пробелы>::={<пробел>} <обязательные_пробелы>::=<пробел>{<пробел>} * Множества символов <пробел>::=' ' <символ_не_пробел>::=<символ>-<пробел> <символ_не_апостроф>::=<символ>-"'" <символ_не_квадратная_скобка>::=<символ>-'['-']' <символ_не_квадратная_скобка_апостроф>::=<символ>-'['-']'-'"' <символ_не_пробел_апостроф_скобка_слеш>::=<символ>-<пробел>-'"'-"'"-'['-'('-'\' * Предопределенные терминальные понятия <символ> <пусто> <начало_строки>