ГОСТ Р 53556.5—2013
ется значением массива, сформированным, упорядочивая значения параметров выражения. В случае,
когда есть только один параметр выражения, который является однозначным выражением, тогда исходное
значение кода операции является единственным значением этого выражения. У обратного значения, обо
значенного оператором
return
в пределах кода операции, должна быть та же самая ширина.
После того, каквстречаются с оператором
return,
никакиедальнейшие операторы в коде операции но
оцениваются и сразу управляют возвратами к инструменту вызова или коду операции.
8.7.7 Уровень кода операции
8.7.7.1 Введение
Уровень вызова кода операции зависит от типа кода операции, следующим образом:
1. Если тип кода операции является
aopcode.
говорят о коде операции
a-rate.
2. Если тип кода операции является
kopcode.
говорят о коде операции,
k-rate.
3. Если тип кода операции является
iopcode.
говорят о коде операции
i-rate.
4. Если тип кода операции является
opcode,
код операции является полиморфным уровнем.
87.7.2 Коды операции полиморфного уровня
Коды операции полиморфного уровня берут из контекста, в котором их создают. Это позволяет тому
же самому блоку оператора кода операции применяться к многократным контекстам. Без такой конструкции
три версии каждого кода операции этого вида должны быть созданы и использоваться, в зависимости от
контекста.
Уровень кода операции
opcode
для определенного вызова является уровнем самого первого факти
ческого выражения параметра вэтом обращении или уровнем самого первого формального параметра в
определении кода операции, или уровнем самой первой защиты
if. while,
или
else
выражения, окружаю
щей вызов кода операции, или уровенем кода операции, включающего вызов кода операции. Если код
операции
opcode
не имеет никаких
non-table
параметров, и не включается в защищенный блок или вызов
кода операции, то это
kopcode
по умолчанию.
Коды операции полиморфного уровня могутсодержать переменныеобъявления, и формальныеобъяв
ления параметра, используя тег
xsig.
У формального параметра типа
х&д
тот же самый уровень, как факти
ческое выражение параметра в выражении вызова, которому он соответствует. У переменной типа
xsig
тот
же самый уровень, как код операции.
Коды операции полиморфного уровня не должны содержать переменные объявления и операторы
выше, чем самый первый формальный параметр в объявлении кода операции. Код операции со всеми
xsig
формальными параметрами недолжен содержать переменные объявления кроме
xsigurvar,
и это недол
жно содержать операторы на определенном уровне раньше, чем уровень инициализации.
8.7.7.3 Совместно используемые переменные и операторы ниже, чем уровень кода операции
В
kopcode
операторы на уровне инициализации выполняются при первом обращении в код операции.
В этом обращении
imports, exports, imports exports ivars
и таблицы обновляются, как описано в 8.6.5.3 и
8.6.5.4, и любые поколения звуковой таблицы выполняются, какописано в 8 6.5.2.
В
aopcode
операторы на уровне инициализации выполняются при первом обращении в код операции.
В этом обращении
imports, exports, imports exports ivars
и таблицы обновляются, как описано в 8.6.5.3 и
8.6.5.4. и любые поколения звуковой таблицы выполняются, как описано в 8.6.5.2. Операторы на
уровне управления выполняются при первом обращении каждого
к
цикла к коду операции. В этом
обращении
imports, exports, imports exports ksigs
и таблицы обновляются, как описано в 8.6.5.3 и
8.6.5.4. Операторы, которые содержат выражения типа
specialop.
выполняются в
к
уровне.
8.8 Шаблонное объявление
8.8.1 Синтаксическая форма
template dedaration> -> template < <identtist> > [preset <maplist>] ( <identlist>)
map { <identtist> } with { <map!ist> }
{ <instr variable declarations> <block> }
<maphst> ->
<
<expr list>
> ,
<maplist>
<maplist>
-> <
<exprlist> >
Шаблонное объявление позволяет краткоеобъявление многократных инструментов, которые одинако
вы вобработке структуры и синтаксисе, но отличаются только по нескольким ключевым выражениям или
именам звуковой таблицы.
8.8.2 Семантика
Первый список идентификаторов содержит имена для инструментов, объявленных с шаблоном. В
этом списке должен быть по крайней мере один идентификатор. Первый дополнительный
maplist
содержит
38