ГОСТ Р ИСО/МЭК 8824-1-2001
II р и м е ч а н н с - Вопрос. какие ивменения потребуются а модуле для новою "Definitivcldcniifier’’, не
рассматривается в настоящем стандарте.
12.Х Если присвоенный идентификатор “Assignedldentifier" не пуст, то альтернативы
"ObjectidentifierValue" и "DefinedValue" недвусмысленно и однозначно идентифицируют модуль, из
которого должны быть импортированы элементы. Когда в "Assignedldentifier" используется ачьтерна-
тива “DefinedValue", она должна быть значением идентификатора типа объекта. Каждая ссылка на
значение "valuereference". текстуально появляющаяся в "Assignedldentifier", должна удовлетворять
одному из следующих правил.
а) ссылка определена в "AssignmentList" определяемого модуля и все "valuereference", тексту
ально появляющиеся в правой части предложения присваивания, также удовлетворяют этому (пра
вило “а") или следующему (правило "б") правилу.
б) ссылка появляется как "Symbol" в “SymboIsFromModule". "Assignedldentifier" которого не
содержит текстуально никаких "valuereference".
П р и м е ч а н и е —Рекомендуется, чтобы идентификатор объекта был присвоен таким обратом, чтобы
можно было недвусмысленно ссылаться на модуль.
12.9 Глобальная ссылка на модуль "Global.ModuleReference" в “SymboIsFromModule" должна
появляться в "ModuleDefinition" другого модуля, и. за исключением случая, когда он содержит
непустой "DefinitiveIdentifier", "modulereference" может различаться в этих двух модулях.
П р и м е ч а н и е —Отличающаяся "modulereference" в другом модуле должна использоваться, только
когда импортируются символы с одним к тем же именем из двух разных модулей (модули были названы без
учета 12.6). Использование альтернативных различных имен делает эти имена доступными для
использования втеле модуля (см. 12.15).
12.10 Когда в ссылающемся модуле используются и "modulereference”, и непустой "Assigned -
Identilier". то последний должен рассматриваться как определяющий.
12.11 Когда указываемый модуль имеет непустой "Definitiveldentifier”, тогда "GlobalModule-
Reference", указывающая этот модуль, не должна иметь пустой "Assignedldentifier".
12.12 Когда в "Exports" выбрана альтернатива "SymbolsExported", тогда:
а) каждый "Symbol" в "SymbolsExported" должен удовлетворять в точности одному из следую
щих условий:
i) он является единственным, определенным в создаваемом модуле, или
ii) он появляется ровно один раз и только и альтернативе "Svmbolslmported" в “Imports";
б) каждый "Symbol", для которого предназначена ссылка из внешнего модуля, должен быть
включен в "Symbols Exported", и только эти "Symbol" могут быть указаны вне модуля, и
в) если нет таких “Symbol", тодолжна быть выбрана пустая альтернатива для "SymbolsExported"
(а не для "Exports").
12.13 Когда выбрана альтернатива “empty" для "Exports", каждый “Symbol", определенный в
модуле, может быть указан вне модуля.
П р и м е ч а н и е —Альтернатива "empty" для "Exports" включена для совместимости с предшествующи
ми версиями нотации.
12.14 Идентификаторы, которые появляются в "NamedNumberList", “Enumeration"^»!
"NamedBitList". экспортируются неявно, если определяющая их ссылка на тип экспортируется или
появляется как компонент (или подкомпонент) в экспортируемом типе.
12.15 Когда выбрана альтернатива "Svmbolslmported" в "Imports", тогда:
а) каждый "Symbol" в “SymboIsFromModule" должен быть либо определен в теле модуля, либо
представлен в разделе IMPORTS модуля, обозначенного "GlobalModuleReference" в "Symbols-
KromModule". Импорт символа "Symbol", присутствующего в разделе IMPORTS указываемого моду ля.
допустим, если имеется только одно появление “Symbol" в этом разделе и "Symbol" не определен в
указываемом модуле.
Г1р и м е ч а н и с 1—Нс запрещается одно и то же имя символа, определенное вдвух разных модулях,
импортировать в другой модуль. Однако саги одно и то же имя "Symbol* встречается несколько раз в разделе
IMPORTS модуля А то это имя "Symbol* нс может быть экспортировано из А вдругой модуль В:
б) если для "Exports" выбрана альтернатива "SymbolsExported" в определении модуля, обозна
ченного "GlobalModuleReference" в "SymbolsFromModule", то "Symbol" должен присутствовать в его
“SymbolsExported";
20