Способ описания синтаксических конструкций - Функциональные модели универсального нейрокомпьютера
Для описания синтаксиса языков описаний компонентов использУется расширенная Бэкусова нормальная форма. Описание синтаксиса языка с помощью БНФ состоит в расшифровке понятий от более сложных к более простым. Каждое предложение БНФ состоит из двух частей, разделенных символами "::=" (два двоеточия, за которыми следует знак равенства). Наиболее подходящим названием для этого разделителя является слово "является" в отличие от "равно" или "присвоить" в языках программирования. Слева от разделителя находится объясняемое понятие, справа - конструкция разъясняющая это понятие. Например, предложение
<Имя переменной> ::= <Идентификатор>
Означает, что объясняемое понятие - <Имя переменной> является идентификатором. Заметим, что порядок предложений в БНФ описания синтаксиса языка не имеет значения. Однако традиционно сложилось так, что БНФ начинают с наиболее сложных понятий.
При описании синтаксиса языка с помощью БНФ используются следующие понятия и обозначения.
Нетерминальным символом называется понятие, которое должно быть раскрыто в пределах данной БНФ. Нетерминальным символом является произвольный набор символов, заключенный в угловые скобки, например <Имя>. Нетерминальный символ раскрыт, если в пределах БНФ встретилось предложение, в котором этот нетерминальный символ стоит в левой части.
Терминальным символом называется понятие, которое не требует раскрытия. Примерами терминальных символов являются буквы, цифры и ключевые слова описываемого языка. Терминальные символы не заключаются в угловые скобки и набраны курсивом, например Имя.
Подмножеством терминальных символов является набор ключевых слов языка. Для удобства ключевые слова набраны полужирным шрифтом, например, Имя.
В прямых квадратных скобках приводятся необязательные части синтаксических конструкций. Например предложение
<Целое число> ::= [-] <Положительное целое число>
Означает, что целым числом является положительное целое число (знак минус, стоящий в квадратных скобках, опущен как необязательный) или положительное целое число, перед которым стоит знак минус (знак минус, стоящий в квадратных скобках, задействован). Отметим, что квадратные скобки, набранные курсивом, являются терминальными символами.
Набор из нескольких синтаксических конструкций, разделенных символом "" и заключенных в прямые фигурные скобки задают конструкцию выбора одной и только одной из перечисленных в фигурных скобках конструкций. Например, предложение
<Буква> ::= { 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}
Означает, что понятие буква является одной из заглавных букв латинского алфавита. Отметим, что фигурные скобки, набранные курсивом, являются терминальными символами.
В целях сокращения описания в тех случаях, когда БНФ описание понятия сложно, а неформальное описание просто и однозначно, в БНФ описание включаются фрагменты неформального описания таких понятий.
Кроме того в данную модификацию БНФ включены нетерминальные символы с параметрами. В теле нетерминального символа параметры набраны полужирным курсивом. В качестве примера приведем набор предложений, описывающих формальные аргументы:
<Список формальных аргументов> ::= <Формальный аргумент> [; <Список формальных аргументов>]
<Формальный аргумент> ::= <Список имен аргументов> : <Скалярный тип>
<Список имен аргументов> ::= <Имя аргумента> [,<Список имен аргументов>]
<Имя аргумента> ::= <Идентификатор>
<Аргумент типа Тип> - одно из следующих понятий:
Имя аргумента, который при описании формальных аргументов имел тип Тип имя элемента аргумента-массива, если элементы массива имеют тип Тип результат приведения произвольного аргумента или элемента аргумента-массива к типу Тип.
В этом фрагменте содержится предложение, раскрывающее понятие <Аргумент типа Тип>, являющееся нетерминальным символом с параметром. Из последнего предложения легко понять, что представляет собой понятие <Аргумент типа Тип>. Для описания этого понятия в соответствии с требованиями стандартной БНФ пришлось бы описывать отдельно следующие понятия: <Аргумент типа Long>, <Аргумент типа Real>, <Аргумент типа Integer>, <Аргумент типа Color>, <Аргумент типа Logic>, <Аргумент типа String>, <Аргумент типа PRealArray>, <Аргумент типа PIntegerArray>, <Аргумент типа PLongArray>, <Аргумент типа PLogicArray>, <Аргумент типа PString>, <Аргумент типа Visual>, <Аргумент типа Pointer>, <Аргумент типа FuncType>. Кроме того, пришлось бы отказаться от простой и понятной конструкции описания формальных аргументов. Ниже приведена часть конструкции описания формальных аргументов, которую пришлось бы включить в БНФ. В данном фрагменте приведена расшифровка только одного понятия - <Аргумент типа Long>. Остальные нераскрытые понятия описываются аналогично. Понятия <Идентификатор> и <Номер элемента> считаются раскрытыми ранее.
<Список формальных аргументов> ::= <Формальный аргумент> [; <Список формальных аргументов>]
<Формальный аргумент> ::= {<Формальный аргумент типа Long> <Формальный аргумент типа Real> <Формальный аргумент типа Integer> <Формальный аргумент типа Color> <Формальный аргумент типа Logic> <Формальный аргумент типа String> <Формальный аргумент типа PRealArray> <Формальный аргумент типа PIntegerArray> <Формальный аргумент типа PLongArray> <Формальный аргумент типа PLogicArray> <Формальный аргумент типа PString> <Формальный аргумент типа Visual> <Формальный аргумент типа Pointer> <Формальный аргумент типа FuncType>}
<Формальный аргумент типа Long> ::= <Список имен аргументов типа Long> : Long;
<Список имен аргументов типа Long> ::= <Имя аргумента типа Long> [,<Список имен аргументов типа Long>]
<Имя аргумента типа Long> ::= <Идентификатор>
<Аргумент типа Long> ::= {<Имя аргумента типа Long> <Имя аргумента типа PLongArray>^[<Номер элемента>] TLong(<Имя произвольного аргумента>)}
<Имя произвольного аргумента> ::= <Имя аргумента типа Long>, <Имя аргумента типа Real>, <Имя аргумента типа Integer>, <Имя аргумента типа Color>, <Имя аргумента типа Logic>, <Имя аргумента типа String>, <Имя аргумента типа PRealArray>, <Имя аргумента типа PIntegerArray>, <Имя аргумента типа PLongArray>, <Имя аргумента типа PLogicArray>, <Имя аргумента типа PString>, <Имя аргумента типа Visual>, <Имя аргумента типа Pointer>, <Имя аргумента типа FuncType>
Третье четвертое и пятое предложения данного фрагмента пришлось бы повторить для каждого из остальных тринадцати типов аргументов. Поскольку приведенные в книге БНФ описания языков призваны задать и объяснить синтаксис языка, а не служить исходным кодом компилятора компиляторов, автор счел возможным отступить от канонов БНФ, тем более, что для профессионала в области языков программирования не составит большого труда заменить неформальные конструкции на точные формальные фрагменты.
Похожие статьи
-
В этом разделе описаны запросы, выполняемых всеми компонентами, а также типы данных, используемые при описании запросов. Стандарт типов данных При...
-
Нормализовать сеть (NormalizeNet) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function NormalizeNet(Net : PString) : Logic; C: Logic NormalizeNet(PString Net) Описание аргумента: Net - указатель на строку...
-
К этой группе запросов относятся два запроса, открывающие и закрывающие сеансы работы с задачником. Начало сеанса (InitSession) Описание запроса: Pascal:...
-
Компонент задачник является необходимой частью нейрокомпьютера вне зависимости от типа применяемых в нем нейронных сетей. Однако в зависимости от...
-
Запросы на изменение параметров - Функциональные модели универсального нейрокомпьютера
К группе запросов на изменение параметров относятся три запроса: XxGetData - получить параметры структурной единицы. xxGetName - получить названия...
-
Выполнить обратное Функционирование (Back) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Back( Net : PString; BackOutSignals : PRealArray) : Logic; C: Logic Back(PString Net, PRealArray BackOutSignals)...
-
Функции управления памятью - Функциональные модели универсального нейрокомпьютера
Для создания массивов и освобождения занимаемой ими памяти используются следующие фун Кции: Создание массива. Function NewArray( Type : Integer; Size :...
-
Во всех языках описания компонентов все параметры передаются по ссылке (передается не значение аргумента, а его адрес). Если в качестве фактического...
-
Язык описания нейронных сетей предназначен для хранения сетей на диске. Следует отметить, что в отличии от таких компонентов, как предобработчик входных...
-
Ниже приведен список запросов, исполнение которых описано в разделе "Запросы общие для всех компонентов": EsSetCurrent - Сделать оценку текущим EsAdd -...
-
Единственный запрос первой группы выполняет основную функцию компонента предобработчик - предобрабатывает входные данные, вычисляя вектор входных...
-
Установить параметры сети (nwSetData) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function nwSetData(Net : PString; DataType : Integer; Var Data : RealArray) : Logic; C: Logic nwSetData(PString Net, Integer...
-
Описание запроса: Pascal: Function RandomDirection( Net : PString; Range : Real ) : Logic; C: Logic RandomDirection(PString Net, Real Range) Описание...
-
Описание запроса: Pascal: Function ModifyMask( Net : PString; Tipe : Integer; NewMask: PLogicArray ) : Logic; C: Logic Modify(PString Net, Integer Tipe,...
-
Запросы, однотипные для всех компонентов - Функциональные модели универсального нейрокомпьютера
Таблица 5 Префиксы компонентов Префикс Компонент Запроса Ошибки Ex 0 Исполнитель Tb 1 Задачник Pr 2 Предобработчик Nn 3 Сеть Es 4 Оценка Ai 5...
-
Сокращение описания сети - Функциональные модели универсального нейрокомпьютера
Предложенный в предыдущих разделах язык описания многословен. В большинстве случаев за счет хорошей структуризации сети можно опу Стить все разделы...
-
Поля задачника - Функциональные модели универсального нейрокомпьютера
Далее будем полагать, что задачник является реляционной базой данных из одной таблицы или набора параллельных таблиц. Каждому примеру соответствует одна...
-
Описание запроса: Pascal: Function Last( Handle : Integer ) : Logic; C: Logic Last(Integer Handle) Описание аргументов: Handle - номер сеанса. Назначение...
-
Схема обработки ошибок достаточно проста по своей идее - каждый новый обработчик ошибок может обрабатывать только часть ошибок, а обработку остальных...
-
Сигналы и параметры - Функциональные модели универсального нейрокомпьютера
При использовании контрастирования для изменения структуры сети и значений обучаемых параметров другим компонентам бывает необходим прямой доступ к...
-
Оценить массив сигналов (Estimate) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Estimate( EstName : PString; Signals, Back, Answers, Reliability: PRealArray; Direv : Logic; Var Estim : Real ) :...
-
Единственный запрос первой группы выполняет основную функцию компонента интерпретатор ответа - интерпретирует массив сигналов. Интерпретировать массив...
-
Составные элементы - Функциональные модели универсального нейрокомпьютера
Название "составные элементы" противоречит определению элементов. Это противоречие объясняется соображениями удобства работы. Введение составных...
-
Впервые последовательное описание конструирования нейронных с Етей из элементов было предложено в книге А. Н. Горбаня [65]. Однако за прошедшее время...
-
Предопределенные константы - Функциональные модели универсального нейрокомпьютера
При описании различных компонентов возникает необходимость в использовании некоторого набора стандартизированных констант. Стандартность набора констант...
-
Составной предобработчик - Функциональные модели универсального нейрокомпьютера
Поскольку на вход нейронной сети обычно подается несколько входных сигналов, каждый из которых обрабатывается своим предобработчиком, то предобработчик...
-
Как уже отмечалось в разделе "Различимость входных данных" числовые сигналы рекомендуется масштабировать и сдвигать так, чтобы весь диапазон значений...
-
Введение - Функциональные модели универсального нейрокомпьютера
Общая характеристика работы Актуальность темы. В 80-е годы развитие информатики и средств вычислительной техники во многом определялось программой "Пятое...
-
Предыдущий (Prev) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Prev( Handle : Integer ): Logic; C: Logic Prev(Integer Handle) Описание аргументов: Handle - номер сеанса. Назначение...
-
Основные операторы - Функциональные модели универсального нейрокомпьютера
Оператор присваивания состоит из двух частей, разделенных знаком "=". В левой части оператора присваивания могут участвовать им Ена любых переменных. В...
-
Следующий (Next) - Функциональные модели универсального нейрокомпьютера
Описание запроса: Pascal: Function Next( Handle : Integer ) : Logic; C: Logic Next(Integer Handle) Описание аргументов: Handle - номер сеанса. Назначение...
-
Предобработчик сам никаких запросов не генерирует. Единственный запрос к предобработчику - "Предобработать пример" может быть выдан только задачником....
-
В этом разделе описаны все запросы, выполняемые компонентом задачник в виде процедур и функций. При описании используется синтаксис языков Object Pascal...
-
В этом разделе намеренно допущено отступление от общей методики - не смешивать разные компоненты. Это сделано для облегчения демонстрации построения...
-
Контрастирование и нормализация сети - Функциональные модели универсального нейрокомпьютера
В последние годы широкое распространение получили различные методы контрастирования или скелетонизации нейронных сетей. В ходе процедуры контрастирования...
-
Правила остановки работы сети - Функциональные модели универсального нейрокомпьютера
При использовании сетей прямого распространения (сетей без циклов) вопроса об остановке сети не возникает. Действительно, сигналы поступают на элементы...
-
Рис. 11. Прямое (а) и обратное (б) функционирование нелинейного сигмоидного преобразователя Нелинейный сигмоидный преобразователь или сигмоидный элемент...
-
Запросы к компоненту сеть - Функциональные модели универсального нейрокомпьютера
В данном разделе главы рассмотрены все запросы, исполняемые комп Онентом сеть. Прежде чем приступать к описанию стандарта запросов компонента сеть...
-
Классификация компонентов входных данных - Функциональные модели универсального нейрокомпьютера
Информация поступает к нейронной сети в виде набора ответов на некоторый список вопросов. Можно выделить три основных типа ответов (вопросов). Бинарный...
-
Предобработчик - Функциональные модели универсального нейрокомпьютера
Данная глава посвящена компоненту предобработчик [80, 150]. В ней рассматриваются различные аспекты предобработки входных данных для нейронных сетей....
Способ описания синтаксических конструкций - Функциональные модели универсального нейрокомпьютера