«СсылкаНаМодуль», присутствующая в продукции «Опре- делениеМодуля», называется именем модуля. Имена модулей выбираются таким образом, чтобы обеспечить полноту и согласованность всех последовательностей вида «Присвоение», присутствующих в составных частях «ТелоМодуля» всех последовательностей вида «ОпределениеМодуля», в которых используется данное имя модуля. Множество последовательностей вида «Присвоение» считается полным и согласованным, если каждой содержащейся в ней последовательности вида «СсылкаНаТип» или «СсылкаНа Значение» соответствует в точности одна последовательность вида «ПрисвоениеТипа» или «ПрисвоениеЗначения» соответственно, которые устанавливают связь между именем и соответственно типом или значением.
Имена модулей должны использоваться только один раз в сфере применения определения модуля, за исключением случаев, определенных в п. 9.4.
Примечание. Рекомендуется следующая форма имен модулей, определенных в стандартах:
ISOxxxx = yyyy,
где хххх — номер стандарта, а уууу — аббревиатура для названия этого стандарта (например JTM, FT АМ или CCR). Аналогичное соглашение может применяться в других стандартах.
Для обращения к элементам «СсылкаНаТип» и «СсылкаНаЗначение» в модулях, отличных от тех, где вышеупомянутые элементы были определены, используются последовательности вида «ВнешняяСсылкаНаТип» и «ВнешняяСсылкаНаЗначение», определяемые следующими продукциями:
ВнешняяСсылкаНаТип : : = СсылкаНаМодуль
СсылкаНаТип
ВнешняяСсылкаНаЗначение : : = СсылкаНаМодуль
СсылкаНаЗначение
ССЫЛКИ НА ОПРЕДЕЛЕНИЯ ТИПОВ И ЗНАЧЕНИЙ
Для задания ссылок на определения типов и значений используются последовательности, определяемые следующими продукциями:
ОпределенныйТип : : = ВнешняяСсылкаНаТип |
СсылкаНаТип
ОпределенноеЗначение : : = ВнешняяСсылкаНаЗначение | СсылкаНаЗначение
Варианты «СсылкаНаТип» и «СсылкаНаЗначение» в приведенных выше продукциях должны использоваться только в тех же модулях, в которых данной ссылке на тип или значение соответственно был присвоен некоторый тип или некоторое значение (пп. 11.1 и 11.2).
«ВнешняяСсылкаНаТип» и «ВнешняяСсылкаНаЗначение» должны использоваться только в тех случаях, когда в модуле, определяемом элементом «СсылкаНаМодуль» данной, ссылке на тип или значение был присвоен соответственно некоторый тип или некоторое значение (пп. 11.1 и 11.2).
ПРИСВОЕНИЕ ТИПОВ И ЗНАЧЕНИИ
Присвоение ссылке на тип некоторого типа описывается продукцией «ПрисвоениеТипа»:
ПрисвоениеТипа : : = СсылкаНаТип
«: : =»
Тип
Элемент «СсылкаНаТип» не должен совпадать с каким-либо именем, используемым для ссылки на один из типов «строка знаков», определенных в разд. 2, а также не должен совпадать с каким-либо именем, используемым для ссылки на типы, определенные в разд. 3.
Присвоение ссылке на значение некоторого значения описывается продукцией «ПрисвоениеЗначения»:
ПрисвоениеЗначения : : = СсылкаНаЗначение
Тип
«: : = »
Значение
Последовательность «Значение», присваиваемая ссылке на значение, должна быть допустимым выражением (п. 12.6), описывающем некоторое значение, имеющее тип, определяемый последовательностью «Тип».
ОПРЕДЕЛЕНИЕ ТИПОВ) И ЗНАЧЕНИЙ
Тип определяется одной из последовательностей вида «Тип»:
Тип : : = ВстроенныйТип : ОпределенныйТип (п. 10.1)
ВстроенныйТип : : = БулевскийТип |
ЦелочисленныйТип I
Тип-СтрокаБитов |
Тип-СтрокаОктетов |
ВырожденныйТип I
Тип-Последовательность |
Тип-ПоследовательностьИз |
Тип-Множество I
Тип-МножествоИз |
ВыборочныйТип I
СелективныйТип I
ТегированныйТип |
ПроизвольныйТип I
Тип-ИдентификаторОбъекта |
Тип-СтрокаЗнаков |
ОбщеупотребительныйТип I
Примечания:
В качестве последовательности вида «Тип» также может использоваться обозначение типа, определенное с помощью макронотации.
В дополнениях к настоящему, стандарту могут быть определены другие встроенные типы.
Обозначение «ВстроенныйТип» определяется в последующих разделах.
Тип, на который осуществляется ссылка, либо определен обозначением «ВстроенныйТип», либо присвоен ссылке «Опреде- ленныйТип».
В некоторых обозначениях нотации, в которых имеется ссылка на какой-либо тип, этот тип может быть поименован. В этих случаях настоящий стандарт предписывает использование обозначения вида «ПоименованныйТип»:
ПоименованныйТип : : = Идентификатор Тип |
Тип I
СелективныйТип
Обозначения вида «СелективныйТип» и обозначения для записи значений селективного типа определены в разд. 23.
Примечание. Обозначение вида «СелективныйТип» содержит «Идентификатор». Если в качестве «ПоименованногоТипа» используется «СелективныйТип» (и. 23.1), то этот идентификатор может быть частью обозначения для записи значения.
«Идентификатор» не является составной частью типа и никак не влияет на тип. Тип, на который дается ссылка последовательностью «ПоименованныйТип», является тем же самым, что и тип, на который дается ссылка последовательностью «Тип», вложенной в последовательность «ПоименованныйТип».
Значение какого-либо типа должно определяться одной из последовательностей вида «Значение»:
Значение : : = ВстроенноеЗначение | ОпределенноеЗначение ВстроенноеЗначение : : = БулевскоеЗначение |
ЦелочисленноеЗначение Значение-СтрокаБитов Значение-СтрокаОктетов ВырожденноеЗначение Значение-Последовательность Значение-ПоследовательностьИз Значение-Множество Значение-МножествоИз ВыборочноеЗначение СелективноеЗначение ТегированноеЗначение ПроизвольноеЗначение Значение-ИдентификаторОбъекта Значение-СтрокаЗнаков
Примечание. В качестве последовательности вида «Значение» также может использоваться обозначение значения, определенное с помощью макронотации (приложение 1).
12.7. Если тип определяется с использованием одного из обозначений, приведенных слева в приведенном ниже перечне, то значение должно задаваться с использованием обозначения, приведен-
ного справа. Обозначение типа БулевскийТип ЦелочисленныйТип Тип-СтрокаБитов Тип-СтрокаОктетов ВырожденныйТип Тип-Последовательность Т ип-Последов ательностьИз |
Обозначение значения БулевскоеЗначение ЦелочисленноеЗначение Значение-СтрокаБитов Значение-СтрокаОктетов ВырожденноеЗначение Значение-Последовательность Значение-Последователь- ностьИз |
Тип-Множество Т ип-МножествоИз ВыборочныйТип ТегированныйТип ПроизвольныйТип Тип-ИдентификаторОбъ- екта Тип-СтрокаЗнаков |
Значение-Множество Значенпе-МножествоИз ВыборочноеЗначение ТегированноеЗначение ПроизвольноеЗначение Значение-Идентификатор- Объекта Значение-СтрокаЗнаков |
Примечание. В дополнениях к настоящему стандарту могут быть определены дополнительные обозначения для записи значений.
В тех случаях, когда тип является «ОпределеннымТипом», обозначения, используемые для записи значения, должны соответствовать обозначениям, используемым для типа, породившего «ОпределенныйТип».
Обозначения для записи значений типов, определяемых обозначением «ОбщеупотребительныйТип», приведены в разд. 30, 31, 32, 33.
Обозначение «ВстроенноеЗначение» определяется в последующих пунктах.
Значение типа, ссылка на который задается обозначением вида «ПоименованныйТип», определяется обозначением вида «ПоименованноеЗначение»:
ПоименованноеЗначение : : = Идентификатор Значение: Значение,
где «Идентификатор» (если он задан) — тот же самый идентификатор, который использовался в обозначении «Поименованный- Тип». В п. 23.2 указаны дополнительные ограничения на «ПоименованноеЗначение» для случая, когда «ПоименованныйТип» является «СелективнымТипом».
Примечание. «Идентификатор» является составной частью обозначения, но не является составной частью значения.
«Идентификатор» является составной частью последовательности «ПоименованноеЗначение» только в том случае, когда он является составной частью последовательности «Поимено- ванныйТип».
Примечание. В том случае, когда используется вариант «Селектив- ныйТип», «Идентификатор» всегда включается в запись значения.
ОБОЗНАЧЕНИЯ БУЛЕВСКОГО ТИПА
,13.1. Для ссылки на булевский тип (п. 3.13) должно использоваться обозначение «БулевскийТип»:
БулевскийТип : : = BOOLEAN
Типы, определенные с помощью этого обозначения, имеют тег универсального класса с номером 1.
Значение булевского типа (пп. 3.14 и 3.15) должно определяться обозначением «БулевскоеЗначение»:
БулевскоеЗначение : : = TRUE | FALSE
ОБОЗНАЧЕНИЯ ЦЕЛОЧИСЛЕННОГО ТИПА
Для ссылки на целочисленный тип (п. 3.16) должно использоваться обозначение «ЦелочисленныйТип»:
ЦелочисленныйТип : : = INTEGER | ШТЕОЕЕ{СписокПоименованных- Чисел}
СписокПоименованныхЧисел : : = ПоименованноеЧисло | СписокПоименованныхЧисел, ПоименованноеЧисло
ПоименованноеЧисло : : =
Идентификатор (ЧислоСоЗна- ком) I
Идентификатор (Определенное- Значение)
ЧислоСоЗнаком : : = Число | —Число
Вариант «—Число» не должен использоваться, если «Число» является нулем.
«СписокПоименованныхЧисел» не является существенной составной частью определения типа. Эта последовательность используется только в обозначениях для записи значений, описанных в п. 14.9.
«ОпределенноеЗначение» является ссылкой на значение целочисленного типа или тегированного типа, производного от целочисленного типа.
Значения каждой из последовательностей «ЧислоСоЗна- ком» и «ОпределенноеЗначение» входящих в «СписокПоиме- нованныхЧисел», должны быть попарно различными и выделенными значениями целочисленного типа.
Элементы «Идентификатор», входящие в «СписокПои- менованныхЧисел», должны быть различными.
Порядок следования последовательностей «Поименован- ноеЧисло» в последовательности «СписокПоименованныхЧисел» несуществен.
Типы, определенные с помощью этого обозначения, имеют тег универсального класса с номером 2.
Значение целочисленного типа должно определяться обозначением вида «ЦелочисленноеЗначение»:
ЦелочисленноеЗначение : : = ЧислоСоЗнааком | Идентификатор
«Идентификатор» в продукции «ЦелочисленноеЗначение» должен совпадать с одной из последовательностей «Идентификатор», входящих в состав последовательности «Целочислен- ныйТип», которая определяет тип данного значения; «ЦелочисленноеЗначение» в этом случае определяется числом, соответствующим заданному идентификатору в описании целочисленного типа.
Примечание. При определении целочисленного значения, для которого был задан «Идентификатор» в определении типа, задание «Целочисленного- Значения» в форме «Идентификатор» является предпочтительным.
ОБОЗНАЧЕНИЯ ДЛЯ «СТРОКА БИТОВ»
Для ссылки на тип «строка битов» должно использоваться обозначение «Тип-СтрокаБитов»:
Тип-СтрокаБитов : : =
BIT STRING I
BIT 5ТК1ЫО{СписокПоименованныхБитов}
СписокПоименованныхБитов : : =
ПоименованныйБит |
СписокПоименованныхБитов, ПоименованныйБит
ПоименованныйБит : : = Идентификатор (Число) |
Идентификатор (ОпределенноеЗна- чение)
«СписокПоименованныхБитов» не является существенной составной частью определения типа. Эта последовательность используется только в обозначениях для записи значений, определенных в п. 15.8.
Первый бит в строке битов имеет нулевой номер. Замыкающим битом называется бит, который заканчивает строку битов.
Примечание. Термины «первый бит» и «замыкающий бит» используются ■как при описании обозначений для задания значений, так и при описании правил кодирования.
«ОпределенноеЗначение» должно представлять собой ссылку на некоторое неотрицательное значение целочисленного типа или помеченного типа, производного от целочисленного типа.
Значения последовательностей «Число» и «ОпределенноеЗначение», входящих в состав последовательности «СписокПо- именованныхБитов», должны быть попарно различными; каждое из этих значений используется в качестве номера выделенного бита при задании значения строки битов.
Все элементы «Идентификатор», входящие в «Список- ПоименованныхБитов», должны быть различными.
Примечание. Порядок следования последовательностей «Поименован- ныйБит» в последовательности «СписокПоименованныхБитов» несуществен.
Этот тип имеет тег универсального класса с номером 3.
Значение типа «строка битов» задается нижеследующим обозначением «Значение-СтрокаБитов»:
Значение-СтрокаБитов : : = b-строка |
h-строка I
{СписокИдентификаторов} | {}
СписокИдентификаторов : : =
Идентификатор |
СписокИдентификаторов, Идентификатор
Каждый элемент «Идентификатор», входящий в последовательность «Значение-СтрокаБитов», должен совпадать с некоторым элементом «Идентификатор» в составе последовательности «Тип-СтрокаБитов», определяющей тип, к которому относится данное значение.
Пользователь нотации определяет (и может указать это в комментарии), является ли существенным наличие или отсутствие последних нулевых битов.