<���Описание цикла с фиксированным числом шагов>::= Loop<���Имя блока> [ ( <���Список формальных аргументов блока> ) ] <���Число повторов цикла>
<���Число повторов цикла>::= <���Константное выражение типа Long >
<���Описание цикла по условию>::= Until<���Имя блока> [ ( <���Список формальных аргументов блока> ) ]: <���Выражение типа Logic >
<���Описание состава>::= Contents<���Список имен подсетей>
<���Список имен подсетей>::= <���Имя подсети> [,<���Список имен подсетей>]
<���Имя подсети>::= <���Псевдоним>: {<���Имя ранее описанной подсети> [ ( <���Список фактических аргументов блока> ) ] [ [ <���Число экземпляров> ] ] | <���Имя аргумента — подсети> [ [ <���Число экземпляров > ] ]}
<���Псевдоним>::= <���Идентификатор>
<���Число экземпляров >::= <���Константное выражение типа Long >
<���Имя ранее описанной подсети>::= <���Идентификатор>
<���Список фактических аргументов блока>::= <���Фактический аргумент блока> [,<���Список фактических аргументов блока>]
<���Фактический аргумент блока>::= {<���Фактический аргумент> | <���Имя аргумента — подсети>}
<���Описание связей>::= {<���Описание распределения Входных сигналов, Блока, Подсети, InSignals > | <���Описание распределения Выходных сигналов, Блока, Подсети, OutSignals > | <���Описание распределения Параметров, Блока, Подсети, Parameters >}
<���Конец описания блока>::= End<���Имя блока>
<���Конец описания библиотеки>::= End NetLib
<���Описание сети>::= <���Заголовок описания сети> <���Описание подсетей> <���Описание главной сети> <���Массивы параметров и масок сети> <���Конец описания сети>
<���Заголовок описания сети>::= NetWork<���Имя сети> [ Used<���Список имен библиотек>]
<���Имя сети>::= <���Идентификатор>
<���Описание главной сети>::= MainNet<���Имя ранее описанной подсети> [ ( <���Список фактических аргументов блока> ) ]
<���Массивы параметров и масок сети>::= <���Массив параметров> <���Массив маски обучаемости параметров>
<���Массив параметров>::= Parameters<���Значения параметров>;
<���Значения параметров>::= <���Действительное число> [, <���Значения параметров>]
<���Массив маски обучаемости параметров>::= ParamMask<���Значения маски>;
<���Значения маски>::= <���Константа типа Logic > [,<���Значения маски>]
<���Конец описания сети>::= End NetWork
Описание языка описания сетей
В этом разделе приводится детальное описание языка описания сетей, дополняющее БНФ, приведенную в предыдущем разделе и описание общих конструкций, приведенное в разделе «Общий стандарт».
Описание и область действия переменных
Вспомогательные переменные могут потребоваться при описании прямого и обратного функционирования элементов. Переменная действует только в пределах той процедуры, в которой она описана. Кроме явно описанных переменных, в методе Forw доступны также сигналы прямого функционирования и параметры элемента, а в методе Back — входные и выходные сигналы прямого функционирования, выходные сигналы обратного функционирования, параметры элемента и градиент по параметрам элемента. Во всех методах доступны аргументы элемента.
Статические переменные, описываемые после ключевого слова Static, уникальны для каждого экземпляра элемента или блока, и доступны только в пределах блока. Эти переменные могут потребоваться для вычисления условий в цикле типа Until. Возможно использование таких переменных в элементах, например, для хранения предыдущего состояния элемента. Кроме того, в статической переменной можно хранить значения не обучаемых параметров.
Методы Forw и Back для блоков
Методы Forw и Back для блоков не описываются в языке описания сетей. Это связано с тем, что при выполнении метода Forw блоком происходит вызов метода Forw составляющих блок подсетей (для элементов — метода Forw) в порядке их описания в разделе описания состава блока. При выполнении метода Back происходит вызов методов Back составляющих блок подсетей в порядке обратном порядку их описания в разделе описания состава блока.
Читать дальше