1. «СсылкаНаМодуль», присутствующая в продукции «Опре- делениеМодуля», называется именем модуля. Имена модулей вы­бираются таким образом, чтобы обеспечить полноту и согласован­ность всех последовательностей вида «Присвоение», присутству­ющих в составных частях «ТелоМодуля» всех последовательнос­тей вида «ОпределениеМодуля», в которых используется данное имя модуля. Множество последовательностей вида «Присвоение» считается полным и согласованным, если каждой содержащейся в ней последовательности вида «СсылкаНаТип» или «СсылкаНа Значение» соответствует в точности одна последовательность ви­да «ПрисвоениеТипа» или «ПрисвоениеЗначения» соответствен­но, которые устанавливают связь между именем и соответствен­но типом или значением.

  2. Имена модулей должны использоваться только один раз в сфере применения определения модуля, за исключением случаев, определенных в п. 9.4.

Примечание. Рекомендуется следующая форма имен модулей, опре­деленных в стандартах:

ISOxxxx = yyyy,

где хххх — номер стандарта, а уууу — аббревиатура для названия этого стандарта (например JTM, FT АМ или CCR). Аналогичное соглашение может применяться в других стандартах.

  1. Для обращения к элементам «СсылкаНаТип» и «Ссылка­НаЗначение» в модулях, отличных от тех, где вышеупомянутые элементы были определены, используются последовательности вида «ВнешняяСсылкаНаТип» и «ВнешняяСсылкаНаЗначение», определяемые следующими продукциями:

ВнешняяСсылкаНаТип : : = СсылкаНаМодуль

СсылкаНаТип

ВнешняяСсылкаНаЗначение : : = СсылкаНаМодуль

СсылкаНаЗначение

  1. ССЫЛКИ НА ОПРЕДЕЛЕНИЯ ТИПОВ И ЗНАЧЕНИЙ

    1. Для задания ссылок на определения типов и значений ис­пользуются последовательности, определяемые следующими про­дукциями:

ОпределенныйТип : : = ВнешняяСсылкаНаТип |

СсылкаНаТип

ОпределенноеЗначение : : = ВнешняяСсылкаНаЗначение | СсылкаНаЗначение

    1. Варианты «СсылкаНаТип» и «СсылкаНаЗначение» в при­веденных выше продукциях должны использоваться только в тех же модулях, в которых данной ссылке на тип или значение соот­ветственно был присвоен некоторый тип или некоторое значение (пп. 11.1 и 11.2).

    2. «ВнешняяСсылкаНаТип» и «ВнешняяСсылкаНаЗначение» должны использоваться только в тех случаях, когда в модуле, оп­ределяемом элементом «СсылкаНаМодуль» данной, ссылке на тип или значение был присвоен соответственно некоторый тип или не­которое значение (пп. 11.1 и 11.2).

  1. ПРИСВОЕНИЕ ТИПОВ И ЗНАЧЕНИИ

    1. Присвоение ссылке на тип некоторого типа описывается продукцией «ПрисвоениеТипа»:

ПрисвоениеТипа : : = СсылкаНаТип

«: : =»

Тип

Элемент «СсылкаНаТип» не должен совпадать с каким-либо именем, используемым для ссылки на один из типов «строка зна­ков», определенных в разд. 2, а также не должен совпадать с ка­ким-либо именем, используемым для ссылки на типы, определен­ные в разд. 3.

  1. Присвоение ссылке на значение некоторого значения опи­сывается продукцией «ПрисвоениеЗначения»:

ПрисвоениеЗначения : : = СсылкаНаЗначение

Тип

«: : = »

Значение

Последовательность «Значение», присваиваемая ссылке на значение, должна быть допустимым выражением (п. 12.6), описы­вающем некоторое значение, имеющее тип, определяемый после­довательностью «Тип».

  1. ОПРЕДЕЛЕНИЕ ТИПОВ) И ЗНАЧЕНИЙ

    1. Тип определяется одной из последовательностей вида «Тип»:

Тип : : = ВстроенныйТип : ОпределенныйТип (п. 10.1)

ВстроенныйТип : : = БулевскийТип |

ЦелочисленныйТип I

Тип-СтрокаБитов |

Тип-СтрокаОктетов |

ВырожденныйТип I

Тип-Последовательность |

Тип-ПоследовательностьИз |

Тип-Множество I

Тип-МножествоИз |

ВыборочныйТип I

СелективныйТип I

ТегированныйТип |

ПроизвольныйТип I

Тип-ИдентификаторОбъекта |

Тип-СтрокаЗнаков |

ОбщеупотребительныйТип I

Примечания:

  1. В качестве последовательности вида «Тип» также может использоваться обозначение типа, определенное с помощью макронотации.

  2. В дополнениях к настоящему, стандарту могут быть определены другие встроенные типы.

  1. Обозначение «ВстроенныйТип» определяется в последую­щих разделах.

  2. Тип, на который осуществляется ссылка, либо определен обозначением «ВстроенныйТип», либо присвоен ссылке «Опреде- ленныйТип».

  3. В некоторых обозначениях нотации, в которых имеется ссылка на какой-либо тип, этот тип может быть поименован. В этих случаях настоящий стандарт предписывает использование обозначения вида «ПоименованныйТип»:

ПоименованныйТип : : = Идентификатор Тип |

Тип I

СелективныйТип

Обозначения вида «СелективныйТип» и обозначения для запи­си значений селективного типа определены в разд. 23.

Примечание. Обозначение вида «СелективныйТип» содержит «Иден­тификатор». Если в качестве «ПоименованногоТипа» используется «Селективный­Тип» (и. 23.1), то этот идентификатор может быть частью обозначения для за­писи значения.

  1. «Идентификатор» не является составной частью типа и никак не влияет на тип. Тип, на который дается ссылка пос­ледовательностью «ПоименованныйТип», является тем же са­мым, что и тип, на который дается ссылка последовательностью «Тип», вложенной в последовательность «ПоименованныйТип».

  2. Значение какого-либо типа должно определяться одной из последовательностей вида «Значение»:

Значение : : = ВстроенноеЗначение | ОпределенноеЗначение ВстроенноеЗначение : : = БулевскоеЗначение |

ЦелочисленноеЗначение Значение-СтрокаБитов Значение-СтрокаОктетов ВырожденноеЗначение Значение-Последовательность Значение-ПоследовательностьИз Значение-Множество Значение-МножествоИз ВыборочноеЗначение СелективноеЗначение ТегированноеЗначение ПроизвольноеЗначение Значение-ИдентификаторОбъекта Значение-СтрокаЗнаков

Примечание. В качестве последовательности вида «Значение» так­же может использоваться обозначение значения, определенное с помощью мак­ронотации (приложение 1).



12.7. Если тип определяется с использованием одного из обозна­чений, приведенных слева в приведенном ниже перечне, то значе­ние должно задаваться с использованием обозначения, приведен-

ного справа.

Обозначение типа БулевскийТип ЦелочисленныйТип Тип-СтрокаБитов Тип-СтрокаОктетов ВырожденныйТип Тип-Последовательность Т ип-Последов ательностьИз

Обозначение значения БулевскоеЗначение ЦелочисленноеЗначение Значение-СтрокаБитов Значение-СтрокаОктетов ВырожденноеЗначение Значение-Последовательность Значение-Последователь- ностьИз

Тип-Множество Т ип-МножествоИз ВыборочныйТип ТегированныйТип ПроизвольныйТип Тип-ИдентификаторОбъ- екта

Тип-СтрокаЗнаков

Значение-Множество

Значенпе-МножествоИз ВыборочноеЗначение ТегированноеЗначение ПроизвольноеЗначение Значение-Идентификатор-

Объекта

Значение-СтрокаЗнаков

Примечание. В дополнениях к настоящему стандарту могут быть оп­ределены дополнительные обозначения для записи значений.



В тех случаях, когда тип является «ОпределеннымТипом», обозначения, используемые для записи значения, должны соот­ветствовать обозначениям, используемым для типа, породившего «ОпределенныйТип».

  1. Обозначения для записи значений типов, определяемых обозначением «ОбщеупотребительныйТип», приведены в разд. 30, 31, 32, 33.

  2. Обозначение «ВстроенноеЗначение» определяется в пос­ледующих пунктах.

  3. Значение типа, ссылка на который задается обозначени­ем вида «ПоименованныйТип», определяется обозначением вида «ПоименованноеЗначение»:

ПоименованноеЗначение : : = Идентификатор Значение: Значение,

где «Идентификатор» (если он задан) — тот же самый идентифи­катор, который использовался в обозначении «Поименованный- Тип». В п. 23.2 указаны дополнительные ограничения на «Поиме­нованноеЗначение» для случая, когда «ПоименованныйТип» яв­ляется «СелективнымТипом».

Примечание. «Идентификатор» является составной частью обозначе­ния, но не является составной частью значения.

  1. «Идентификатор» является составной частью последо­вательности «ПоименованноеЗначение» только в том случае, ког­да он является составной частью последовательности «Поимено- ванныйТип».

Примечание. В том случае, когда используется вариант «Селектив- ныйТип», «Идентификатор» всегда включается в запись значения.

  1. ОБОЗНАЧЕНИЯ БУЛЕВСКОГО ТИПА

,13.1. Для ссылки на булевский тип (п. 3.13) должно использо­ваться обозначение «БулевскийТип»:

БулевскийТип : : = BOOLEAN

  1. Типы, определенные с помощью этого обозначения, имеют тег универсального класса с номером 1.

  2. Значение булевского типа (пп. 3.14 и 3.15) должно опре­деляться обозначением «БулевскоеЗначение»:

БулевскоеЗначение : : = TRUE | FALSE

  1. ОБОЗНАЧЕНИЯ ЦЕЛОЧИСЛЕННОГО ТИПА

    1. Для ссылки на целочисленный тип (п. 3.16) должно ис­пользоваться обозначение «ЦелочисленныйТип»:

ЦелочисленныйТип : : = INTEGER | ШТЕОЕЕ{СписокПоименованных- Чисел}

СписокПоименованныхЧисел : : = ПоименованноеЧисло | СписокПоименованныхЧисел, ПоименованноеЧисло

ПоименованноеЧисло : : =

Идентификатор (ЧислоСоЗна- ком) I

Идентификатор (Определенное- Значение)

ЧислоСоЗнаком : : = Число | —Число

  1. Вариант «—Число» не должен использоваться, если «Чис­ло» является нулем.

  2. «СписокПоименованныхЧисел» не является существенной составной частью определения типа. Эта последовательность ис­пользуется только в обозначениях для записи значений, описанных в п. 14.9.

  3. «ОпределенноеЗначение» является ссылкой на значение целочисленного типа или тегированного типа, производного от це­лочисленного типа.

  4. Значения каждой из последовательностей «ЧислоСоЗна- ком» и «ОпределенноеЗначение» входящих в «СписокПоиме- нованныхЧисел», должны быть попарно различными и выделен­ными значениями целочисленного типа.

  5. Элементы «Идентификатор», входящие в «СписокПои- менованныхЧисел», должны быть различными.

  6. Порядок следования последовательностей «Поименован- ноеЧисло» в последовательности «СписокПоименованныхЧисел» несуществен.

  7. Типы, определенные с помощью этого обозначения, име­ют тег универсального класса с номером 2.

  8. Значение целочисленного типа должно определяться обо­значением вида «ЦелочисленноеЗначение»:

ЦелочисленноеЗначение : : = ЧислоСоЗнааком | Идентификатор

  1. «Идентификатор» в продукции «ЦелочисленноеЗначе­ние» должен совпадать с одной из последовательностей «Иден­тификатор», входящих в состав последовательности «Целочислен- ныйТип», которая определяет тип данного значения; «Целочис­ленноеЗначение» в этом случае определяется числом, соответству­ющим заданному идентификатору в описании целочисленного типа.

Примечание. При определении целочисленного значения, для которо­го был задан «Идентификатор» в определении типа, задание «Целочисленного- Значения» в форме «Идентификатор» является предпочтительным.

  1. ОБОЗНАЧЕНИЯ ДЛЯ «СТРОКА БИТОВ»

    1. Для ссылки на тип «строка битов» должно использоваться обозначение «Тип-СтрокаБитов»:

Тип-СтрокаБитов : : =

BIT STRING I

BIT 5ТК1ЫО{СписокПоименованныхБитов}

СписокПоименованныхБитов : : =

ПоименованныйБит |

СписокПоименованныхБитов, Поименован­ныйБит

ПоименованныйБит : : = Идентификатор (Число) |

Идентификатор (ОпределенноеЗна- чение)

  1. «СписокПоименованныхБитов» не является существенной составной частью определения типа. Эта последовательность ис­пользуется только в обозначениях для записи значений, определен­ных в п. 15.8.

  2. Первый бит в строке битов имеет нулевой номер. Замы­кающим битом называется бит, который заканчивает строку битов.

Примечание. Термины «первый бит» и «замыкающий бит» используются ■как при описании обозначений для задания значений, так и при описании пра­вил кодирования.

  1. «ОпределенноеЗначение» должно представлять собой ссылку на некоторое неотрицательное значение целочисленного типа или помеченного типа, производного от целочисленного типа.

  2. Значения последовательностей «Число» и «Определен­ноеЗначение», входящих в состав последовательности «СписокПо- именованныхБитов», должны быть попарно различными; каждое из этих значений используется в качестве номера выделенного бита при задании значения строки битов.

  3. Все элементы «Идентификатор», входящие в «Список- ПоименованныхБитов», должны быть различными.

Примечание. Порядок следования последовательностей «Поименован- ныйБит» в последовательности «СписокПоименованныхБитов» несуществен.

  1. Этот тип имеет тег универсального класса с номером 3.

  2. Значение типа «строка битов» задается нижеследующим обозначением «Значение-СтрокаБитов»:

Значение-СтрокаБитов : : = b-строка |

h-строка I

{СписокИдентификаторов} | {}

СписокИдентификаторов : : =

Идентификатор |

СписокИдентификаторов, Идентификатор

  1. Каждый элемент «Идентификатор», входящий в последо­вательность «Значение-СтрокаБитов», должен совпадать с неко­торым элементом «Идентификатор» в составе последовательности «Тип-СтрокаБитов», определяющей тип, к которому относится данное значение.

  2. Пользователь нотации определяет (и может указать это в комментарии), является ли существенным наличие или отсутст­вие последних нулевых битов.