ГОСТ Р 53556.5—2013
число формальных параметров вопределении кода операции. Для базовых кодов операции без перемен
ных списков параметров, число фактически требуемых параметров изменяется от кода операции до кода
операции. Если определенный формальный параметр в определении кода операции будет массивом, то
соответствующий фактический параметрдолжен быть введенным массивом выражением равной ширины.
Если определенный формальный параметр вопределении кода операции будеттаблицей, то соответству>о-
щий фактический параметрдолжен быть табличной ссылкой.
Если определенный формальный параметр в определении кода операции будет на определенном
уровне, то соответствующее фактическое выражение параметра нодолжно быть на более высоком уровне.
Ширина выражения вызова кода операции является числом каналов, обеспеченных операторами
return
в блоке кода операции.
Для вызова базовых кодов операции, это — синтаксическая ошибка, если какой-либо из следующих
операторов применяется:
-фактических параметров в обращении кода операции меньше, чем необходимыхформальные пара
метры:
- фактических параметров вобращении кода операции больше, чем необходимые и дополнительные
формальные параметры, и определение кода операции не включает
varargs
"...’ пункт;
-определенное фактическое выражение параметра имеет более высокий уровень, чем соответствухь
щий формальный параметр, или чем varargsформальный параметр, если это - корреспонденция.
- определенное фактическое выражение параметра не является единичным, или не является таблич
ным. когда соответствующий формальный параметропределяет таблицу.
Контекст вызова кода операции ограничивается больше, чем другие выражения. В пределах блока
с оператором защиты
(if, else
или в
while)
у вызовов кода операции не должно быть уровня ниже чем
уровень выражения защиты. Вызов кода операции с определенным именем недолжен происходить ни
в пределах блока кода определения этого кода операции, ни в пределах блоков кода ни одного из кодов
операции, вызванных этим кодом операции, ни одним из кодов операции, вызванных ими. и т.д. Таким
образом, запрещаются рекурсивные и взаимно рекурсивные коды операции.
Если
kopcode
вызов кода операции происходит в выражении, которое работает в
a-rate.
в первый раз.
когда это выражение выполняется в
к
цикле кода операции,
kopcode
вызывают после семантики, описан
ной в этом подпункте. Для всех последующих оценок выражения в том же самом
к
цикле не выполняется
kopcode.
Вместо этого исходное значение от первого выполнения используется в оценке выражения.
Если
iopcode
вызов кода операции происходит в выражении, которое работает в
a-rate
или
k-rate
.
в первый раз. когда код операции выполняет это выражение,
iopcode
вызывают после семантики, описан
ной в этом подпункте. Для всех последующих оценок выражения не выполняется
iopcode.
а вместо этого
исходное значение от первого выполнения используется в оценке выражения.
Если
specialop
вызов кода операции происходит в выражении, которое работает в
a-rate.
семантика
к-rate specialop
вызова кода операции следует по правилам для вызовов
kopcode.
вто время когда семан
тика
a-rate specialop
вызова кода операции происходит в каждом цикле.
Чтобы вычислитьзначение выражения вызова кодаоперации, ссылающегося на определяемый пользо
вателем код операции на определенном уровне, значения фактического выражения параметра должны
быть вычислены в порядке их появления в списке выражения. Значения формальных параметров в преде
лах контекста кода операциидолжны быть установлены в значения соответствующих фактических выраже
ний параметра. Если это будет первым выражением вызова кода операции, ссылающимся на этот контекст
кода операции, то местодля хранения кода операции должно создаваться так. чтобы сохранить локальные
сигнальные переменные и звуковые таблицы. Любые глобальные переменные, импортированные кодом
операции на этом уровне, должны быть скопированы в место для хранения кода операции. Блок оператора
кода операции должен выполняться подействующему значению. Значение выражения вызова кода опера
ции является значением первого оператора
return, с
которым встречаются выполняя код операции. Значе
ние выражения вызова кода операции может быть оценоно массивом. После выполнения кода операции
любые глобальные переменные, экспортируемые кодом операции, должны бытьскопированы в глобальное
место для хранения.
Если определенное фактическое выражение параметра ввыражении вызова кода операции является
идентификатором или ссылочным массивом выражения, то этот параметр является ссылочным парамет
ром в этом обращении кода операции. Когда блокоператора кода операции будет выполнен, заключитель
ное значение формального параметра, связанного с этим фактическим параметром, должно быть
скопировано впеременное значение, обозначенное идентификатором или ссылкой массива, если параметр
не является стандартным именем, которое не может использоваться в качестве
lvalue.
Эта модификация
29