--> -->

ГОСТ Р ИСО/ТО 10303-12-2000
Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000

Группа П87

     
     
ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ


Системы автоматизации производства и их интеграция

ПРЕДСТАВЛЕНИЕ ДАННЫХ ОБ ИЗДЕЛИИ И ОБМЕН ЭТИМИ ДАННЫМИ

Часть 12

Методы описания. Справочное руководство по языку EXPRESS-I

Industrial automation systems and integration. Product data representation and exchange. Part 12. Description methods. The EXPRESS-I language reference manual


     
ОКС 25.040.40
ОКСТУ 4002

Дата введения 2002-01-01

     
     
Предисловие

1 РАЗРАБОТАН Всероссийским научно-исследовательским институтом стандартизации (ВНИИстандарт) при участии Научно-технического центра "ИНТЕГРО-Д"
     
     ВНЕСЕН Техническим комитетом по стандартизации ТК 431 "СALS-технологии"
     

2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 14 ноября 2000 г. N 292-ст
     

3 Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/ТО 10303-12-97 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-I"
     

4 ВВЕДЕН ВПЕРВЫЕ
     
     

Введение

Введение


     Стандарты серии ГОСТ Р ИСО 10303 распространяются на машинно-ориентированное представление данных об изделии и обмен этими данными. Целью является создание механизма, позволяющего описывать данные об изделии на протяжении всего жизненного цикла изделия независимо от конкретной системы. Характер такого описания делает его пригодным не только для обмена инвариантными файлами, но также и для создания баз данных об изделиях, коллективного пользования этими базами и архивации соответствующих данных.
     
     Стандарты серии ГОСТ Р ИСО 10303 представляют собой набор отдельно издаваемых стандартов (частей). Части данной серии стандартов относятся к одной из следующих тематических групп: методы описания, интегрированные ресурсы, прикладные протоколы, комплекты абстрактных тестов, методы реализации и аттестационное тестирование. Группы стандартов данной серии описаны в ГОСТ Р ИСО 10303-1. Настоящий стандарт входит в группу методов описания.
     
     Настоящий стандарт определяет элементы языка EXPRESS-I. Каждый элемент языка представляется в своем собственном контексте с примерами. Сначала вводятся простые элементы, а затем представляются более комплексные идеи в порядке нарастания их сложности.
     
     

Обзор языка


     EXPRESS-I - это название языка формального представления данных и спецификации абстрактных тестовых (контрольных) примеров. Он может быть использован для описания информационных требований других стандартов серии ГОСТ Р ИСО 10303 и родственен языкам EXPRESS и EXPRESS-G. Язык базируется на целом ряде целей проектирования, в частности:
     
     - размеры и сложность стандартов серии ГОСТ Р ИСО 10303 требуют обеспечить читабельность языка как для компьютера, так и для человека. Выразительные средства стандартов данной серии призваны облегчить формальное выявление несоответствий в представлениях или спецификациях при использовании средств автоматизации;
     
     - следует обратить внимание на отображение реализацией свойств объектов, представляющих предмет интереса. Обеспечить определение объекта в терминах его свойств, которые характеризуются установлением области их значений (домена) и ограничениями на эту область;
     
     - обойтись, насколько это возможно, без рассмотрения конкретной реализации;
     
     - обеспечить средства отображения малых совокупностей EXPRESS-схем;
     
     - обеспечить средства поддержки спецификации комплектов абстрактных тестов для процессоров информационных моделей.
     
     В EXPRESS-I экземпляры объектов представляются в терминах значений атрибутов: особенностей либо характеристик, считающихся важными для использования и понимания. Эти атрибуты имеют представление, которое может быть простым типом данных (таким, как целочисленный) либо типом другого объекта. Геометрическая точка может быть определена в терминах трех вещественных (действительных) чисел. Атрибутам, образующим определение объекта, даются имена. Так, для геометрической точки три вещественных числа могут иметь имена х, у и z. Устанавливается отношение между определяемым объектом и определяющими его атрибутами и, аналогичным образом, между атрибутом и его представлением.
     
     Язык EXPRESS-I обеспечивает средства для отображения реализацией элементов данных языка EXPRESS. Язык разработан, в основном, для восприятия человеком и для облегчения отображения экземпляров EXPRESS-I на определении в EXPRESS-схеме. В некоторых стандартах серии ГОСТ Р ИСО 10303, например в ГОСТ Р ИСО 10303-21, установлены требования к рациональным машинным реализациям схем. EXPRESS-I не предназначен для замены этих методов.
     
     Основные элементы языка показаны на рисунке 1. Язык имеет две главные части. Первая часть служит для отображения экземпляров данных. Данные могут быть отображены на основе объект-объект, на основе схемы либо как набор экземпляров схем, предназначенный для отображения некоторой информационной модели рассматриваемой предметной области. В языке EXPRESS-I эти данные называются экземплярами предмета (object instances), экземплярами данных схемы (schema data instances) и моделью (model). На рисунке 1 предполагается, что информационная модель определена с помощью языка EXPRESS.
     

Рисунок 1 - Главные элементы языка EXPRESS-I

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

Рисунок 1 - Главные элементы языка EXPRESS-I


     
     Вторая часть языка служит для специфицирования абстрактных тестовых (контрольных) примеров с целью формального описания тестов, выполняемых над реализацией информационной модели, заданной на языке EXPRESS. Конструкциями языка, предназначенными для этой цели, являются контрольный пример (test case) и контекст (context). Данный раздел языка использует также процедурные аспекты языка EXPRESS. Экземпляры данных могут быть параметризованы и сохранены в контексте. Многие различные контрольные примеры могут присваивать значения параметризованным данным в контексте и использовать эти данные как часть спецификации данного теста.
     
     Экземпляры данных, полученные в результате применения контрольного примера, могут отображаться с помощью конструкций, определенных в первой части языка.
     
     Примечание - Примеры использования EXPRESS-I в настоящем стандарте не согласованы с правилами какого-либо конкретного стиля. В самом деле, иногда примеры используют не лучший стиль, чтобы достичь краткости либо показать гибкость. Примеры не претендуют на отражение содержания информационных моделей, определяемых в других стандартах серии ГОСТ Р ИСО 10303. Их функция - показать конкретные особенности EXPRESS-I. Любую аналогию между этими примерами и обязательными информационными моделями или абстрактными контрольными примерами, определенными в других стандартах серии ГОСТ Р ИСО 10303, следует игнорировать.
     
     

1 Область применения


     Настоящий стандарт определяет язык, на котором может быть описан (отображен) экземпляр (часть) рассматриваемой предметной области. Стандарт также определяет метод формального описания для поддержки спецификаций абстрактных тестовых (контрольных) примеров. Данный язык называется EXPRESS-I. Этот язык родственен языку EXPRESS, определенному в ГОСТ Р ИСО 10303-11.
     
     EXPRESS-I является языком реализации для языка концептуальной схемы, как определено в ИСО/ТО 9007 [1], а конкретным языком концептуальной схемы, послужившим отправной точкой для EXPRESS-I, является EXPRESS. Язык EXPRESS-I позволяет отображать состояние предметов, принадлежащих к рассматриваемой предметной области, и блоки информации, относящиеся к этим предметам.
     
     В область применения настоящего стандарта входят:
     
     - отображение экземпляров схем;
     
     - отображение экземпляров типов и объектов (сущностей);
     
     - данные абстрактного тестового (контрольного) примера;
     
     - преобразование EXPRESS-схем и типов данных в экземпляры EXPRESS-I.
     
     В область применения настоящего стандарта не входят:
     
     - преобразование из других языков (концептуальных схем) в EXPRESS-I;
     
     - определение форматов базы данных;
     
     - определение форматов файла;
     
     - определение форматов передачи данных;
     
     - управление процессом;
     
     - обработка информации;
     
     - обработка исключительных ситуаций.
     
     EXPRESS-I не является языком программирования.
     
     

2 Нормативные ссылки


     В настоящем стандарте использованы ссылки на следующие стандарты:
     
     ГОСТ Р ИСО 10303-1-99 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы
     
     ГОСТ Р ИСО 10303-11-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS
     
     ГОСТ Р ИСО 10303-21-99 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 21. Методы реализации. Кодирование открытым текстом структуры обмена
     
     ИСО/МЭК 8824-1-95* Информационная технология. Взаимосвязь открытых систем. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 1. Спецификация основной нотации
___________
     * Оригиналы стандартов ИСО (ИСО/МЭК) - во ВНИИКИ Госстандарта России.
     
     ИСО 10303-31-94* Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 31. Методология и основы аттестационного тестирования. Общие положения
___________
     * Оригиналы стандартов ИСО (ИСО/МЭК) - во ВНИИКИ Госстандарта России.
     
     ИСО/МЭК 10646-1-93* Информационная технология. Универсальный многобайтно-кодированный набор символов. Часть 1. Архитектура и основной многоязычный уровень
___________
     * Оригиналы стандартов ИСО (ИСО/МЭК) - во ВНИИКИ Госстандарта России.
     
     

3 Определения


     3.1 Термины, определенные в ГОСТ Р ИСО 10303-1
     
     В настоящем стандарте использованы следующие термины, определенные в ГОСТ Р ИСО 10303-1:
     
     - данные;
     
     - информация;
     
     - информационная модель.
     
     3.2 Термины, определенные в ГОСТ Р ИСО 10303-11
     
     В настоящем стандарте использованы следующие термины, определенные в ГОСТ Р ИСО 10303-11:
     
     - граф подтип/супертип; ;
     
     - значение;
     
     - константа;
     
     - лексема;
     
     - объект;
     
     - совокупность;
     
     - тип данных сложного объекта;
     
     - тип данных;
     
     - экземпляр сложного объекта;
     
     - экземпляр объекта;
     
     - экземпляр простого объекта;
     
     - экземпляр.
     
     3.3 Термины, определенные в ИСО 10303-31
     
     В настоящем стандарте использованы следующие термины, определенные в ИСО 10303-31:
     
     - абстрактный тестовый (контрольный) пример;
     
     - критерий вердикта;
     
     - цель теста.
      

3.4 Другие определения
     
     В настоящем стандарте использованы следующие термины с соответствующими определениями:
     

3.4.1 атрибут (attribute): Особенность, качество или свойство, характеризующее объект.
     

3.4.2 информационная база (information base): Набор экземпляров типов, соответствующих друг другу и информационной модели, принадлежащий экземпляру рассматриваемой предметной области.
     
     Примечание - Информационная база может либо не может быть пригодной для компьютерной обработки. Например, ее не следует считать пригодной для компьютерной обработки, если она имеет форму рукописного документа. С другой стороны, если она задана в виде базы данных или компьютерного файла, то ее следует считать пригодной для компьютерной обработки и, следовательно, ее можно также называть объектной базой.
     
     

3.4.3 объектная база (object base): Информационная база, пригодная для компьютерной обработки.
     

3.4.4 схема (schema): Набор тесно связанных элементов, образующий информационную модель либо ее часть.
     

3.4.5 тип (type): Представление области (домена) допустимых значений.
     

3.4.6 рассматриваемая предметная область (universe of discourse): Все те объекты (предметы) реального мира, которые представляют потенциальный интерес. Они являются подмножеством всех предметов (объектов) реального мира.
     
     

4 Требования соответствия

4.1 Формальные спецификации, записанные на EXPRESS-I
     
     Формальная спецификация, записанная на EXPRESS-I, должна быть согласована с заданным уровнем соответствия, как определено ниже. Формальная спецификация соответствует данному уровню, когда для нее успешно выполнены все проверки, предусмотренные для данного и всех нижележащих уровней.
     

4.1.1 Уровни соответствия
     
     Уровень 1. Проверка ссылок.
     
     Этот уровень включает проверку формальной спецификации на корректность синтаксиса и ссылок. Формальная спецификация синтаксиса верна, если она соответствует синтаксису, образованному расширением первичных синтаксических правил, приведенных в приложении А. Формальная спецификация верна по ссылкам, если все ссылки на элементы EXPRESS-I соответствуют области действия и правилам видимости, определенным в разделе 11.
     
     Уровень 2. Проверка типов.
     
     Данный уровень включает проверку формальной спецификации на совместимость типов в выражениях и операторах присваивания, как определено для проверок уровня 2 в ГОСТ Р ИСО 10303-11.
     
     Уровень 3. Проверка значений.
     
     Данный уровень включает проверку формальной спецификации на соответствие условиям, определяемым проверками уровня 3 по ГОСТ Р ИСО 10303-11.
     
     Уровень 4. Полная проверка.
     
     Данный уровень включает проверку формальной спецификации на соответствие всем формулировкам требований, установленным в настоящем стандарте.
     

4.2 Реализации EXPRESS-I
     
     Реализация синтаксического анализатора языка EXPRESS-I должна обеспечивать синтаксический разбор любой формальной спецификации, записанной на EXPRESS-I, в соответствии с ограничениями, связанными с данной реализацией, которые определены в ЗСРП (приложение В). Синтаксический анализатор языка EXPRESS-I должен быть продекларирован на соответствие конкретному уровню (как это определено в 4.1.1), если он может реализовать все проверки, предусмотренные для данного уровня (и всех нижележащих уровней) для формальной спецификации, записанной на EXPRESS-I.
     
     Разработчик синтаксического анализатора языка EXPRESS-I должен указать все ограничения, которые реализация накладывает на число и длину идентификаторов, диапазон обрабатываемых чисел и максимальную точность вещественных чисел. Такие ограничения должны документироваться для аттестационного тестирования в виде, определенном в приложении В.
     

5 Основные принципы


     Предполагается, что читатель настоящего стандарта знаком с языком EXPRESS, описанным в ГОСТ Р ИСО 10303-11.
     
     Использование EXPRESS-I для отображения экземпляров не требует и не предполагает наличия соответствующего набора объектов или других определений. Это означает, что EXPRESS-I может использоваться как язык со своими собственными правилами. Однако обычно вводится сопутствующий набор определений, описанных формальным образом на основе языка типа EXPRESS.
     
     EXPRESS-I не описывает среду реализации. В частности, EXPRESS-I не определяет:
     
     - как организован доступ или вывод данных экземпляра;
     
     - как организовано хранение или обслуживание данных экземпляра;
     
     - как разрешены ссылки на EXPRESS-схемы;
     
     - как и когда проверяются ограничения или о них сообщается.
     
     

6 Элементы языка


     В данном разделе установлены основные элементы, из которых формируют предложения языка EXPRESS-I: набор символов, примечания, знаки, зарезервированные слова и идентификаторы.
     
     Определения синтаксиса, приведенные в настоящем стандарте в прямоугольных рамках, являются выдержками из синтаксиса языка EXPRESS-I, установленного в приложении А, которое определяет полный синтаксис языка и любые языковые конструкции, не представленные в настоящем разделе. Метод спецификации синтаксиса является расширением множества, используемого для EXPRESS в соответствии с разделом 6 ГОСТ Р ИСО 10303-11.
     
     Примечание 1 - Для удобства читателя метод определения EXPRESS повторен в приложении D вместе с расширениями для EXPRESS-I.
     
     
     Базовые элементы языка компонуются в поток исходного текста, обычно разделяемого на физические строки. Физической строкой является любое число символов (включая ноль), заканчивающееся символом новой строки (см.6.1.5.2).
     
     Примечание 2 - Исходный текст EXPRESS-I легче читать, если операторы представлены отдельными строками, а для разделения различных конструкций использованы пробелы.
     
     
     6.1 Набор символов
     
     В исходном тексте EXPRESS-I следует использовать только символы из следующего набора: символы, размещенные в ячейках 20-7Е ряда 00 уровня 00 группы 00 ИСО/МЭК 10646-1 и специальный символ \n, обозначающий новую строку. Этот набор называется набором символов EXPRESS-I. Элементы этого набора ссылаются на соответствующие ячейки ИСО/МЭК 10646-1, в которых определены данные символы; номера этих ячеек определены в шестнадцатеричной системе. Печатаемые символы данного набора (ячейки 21-7Е из ИСО/МЭК 10646-1) комбинируются для образования лексем языка EXPRESS-I. Лексемами EXPRESS-I являются ключевые слова, идентификаторы, знаки, литералы или значения. Дальнейшая классификация набора символов EXPRESS-I приведена ниже.
     
     Определенный таким образом набор символов является абстрактным набором символов; он не зависит от его представления в реализации. В частности, фактическая реализация может использовать некоторые управляющие коды, определенные в ИСО/МЭК 6429 [2]. Такие коды интерпретируются реализацией и в результате могут приводить к включению в окончательный исходный текст одного или нескольких абстрактных символов из набора символов EXPRESS-I.
     
     Пример 1 - Управляющий код TAB может интерпретироваться реализацией как добавление одного или нескольких символов пробела к абстрактным символам, образующим определение EXPRESS-I.
     
     Примечание - Данный раздел определяет только символы, используемые для определения исходного текста на EXPRESS-I, но не определяет область символов, допустимых внутри строкового значения.
     
     

6.1.1 Цифры
     
     В EXPRESS-I используются арабские цифры 0-9 (ячейки 30-39 набора символов ЕХPRESS-I).
     

Синтаксис:

120 digit = < как в EXPRESS > .


     

6.1.2 Буквы
     
     В EXPRESS-I используются прописные и строчные буквы английского алфавита (ячейки 41-5А и 61-7А набора символов EXPRESS-I). Тип букв имеет значение только внутри явных строковых значений.
     
     Примечание - EXPRESS-I может быть описан с использованием прописных, строчных или и тех, и других букв.
     
     

Синтаксис:

124 letter = < как в EXPRESS > .


     

6.1.3 Специальные символы
     
     Специальные символы (печатаемые символы, не являющиеся буквами или цифрами) используются, в основном, для пунктуации и в качестве операторов. Некоторые из указанных специальных символов не используются как часть языка. Они, однако, могут использоваться внутри примечаний и строковых значений. Такие специальные символы находятся в ячейках 21-2F, 3A-3F, 40, 5В-5Е, 60 и 7В-7Е набора символов EXPRESS-I.
     

Синтаксис:

134 special = < как в EXPRESS > .


     

6.1.4 Подчеркивание
     
     Символ подчеркивания ( _ , ячейка 5F набора символов EXPRESS-I ) может быть использован в идентификаторах и ключевых словах, но он не должен использоваться в качестве первого символа.
     

6.1.5 Пробел
     
     Пробел определяется в следующих подпунктах и в 6.1.6. Пробел должен использоваться для разделения лексем в исходном тексте EXPRESS-I.
     
     Примечание - Свободное, в рамках допустимого, использование пробелов может улучшить структуру и читабельность исходного текста на EXPRESS-I.
     
     

6.1.5.1 Символ пробела
     
     Один или несколько пробелов (ячейка 20 набора символов EXPRESS-I ) могут появиться между двумя лексемами или внутри строкового значения. Обозначение \s можно использовать для представления символа пробела в синтаксисе языка.
     
     6.1.5.2 Новая строка
     
     Новая строка помечает физический конец строки внутри формальной спецификации, записанной на EXPRESS-I. Новая строка обычно выступает как пробел, но требуется и по существу, когда она завершает концевое примечание или появляется внутри строкового значения. Новая строка представляется обозначением \n в синтаксисе языка.
     
     Представление новой строки определяется реализацией.
     

6.1.6 Примечания
     
     Примечание используется для документирования и должно интерпретироваться синтаксическим анализатором EXPRESS-I как пробел. Имеются две формы примечания: встроенное и концевое.
     

6.1.6.1 Встроенное примечание
     
     Пара символов (* обозначает начало встроенного примечания, а пара символов *) обозначает его конец. Встроенное примечание может появляться между любыми двумя лексемами.
     

Синтаксис:

142 embedded_remark = < как в EXPRESS > .


     
     Любой символ из набора символов EXPRESS-I может находиться между началом и концом встроенного примечания, включая символ новой строки; поэтому встроенные примечания могут занимать несколько физических строк.
     
     Встроенные примечания могут быть вложенными.
     
     Примечание - Следует следить за тем, чтобы вложенные примечания обрамлялись парами соответствующих знаков.
     
     
     Пример 2 - Пример встроенных вложенных примечаний.
     
     (* Знак `(*` начинает встроенное примечание, а знак `*)` заканчивает его. *)
     
     6.1.6.2 Концевое примечание
     
     Концевое примечание записывается в конце физической строки. Два последовательных дефиса (--) служат началом концевого примечания, а последующий символ новой строки завершает его.
     

Синтаксис:

144 tail_remark = < как в EXPRESS > .


     
     Пример 3 - Концевое примечание.
     
     - - Это концевое примечание, и оно завершается символом новой строки.
     
     6.2 Зарезервированные слова
     
     Зарезервированными словами в EXPRESS-I являются ключевые слова и имена встроенных констант, функций и процедур. Зарезервированные слова не должны использоваться в качестве идентификаторов. Зарезервированные слова EXPRESS-I описаны ниже.
     

6.2.1 Ключевые слова
     
     В EXPRESS-I используется подмножество ключевых слов EXPRESS вместе с некоторыми дополнительными ключевыми словами.
     
     В таблице 1 перечислены ключевые слова, общие для EXPRESS-I и EXPRESS. В таблице 2 перечислены дополнительные ключевые слова EXPRESS-I.
     
     Примечание - Ключевые слова обозначаются прописными буквами, представляющими литерал. Это позволяет облегчить чтение синтаксических конструкций.
     
     
Таблица 1 - Ключевые слова, общие для EXPRESS-I и EXPRESS
     

ABSTRACT

AGGREGATE

ALIAS

ARRAY

BAG

BEGIN

BINARY

BOOLEAN

BY

CASE

CONSTANT

CONTEXT

DERIVE

ELSE

END

END_ALIAS

END_CASE

END_CONSTANT

END_CONTEXT

END_ENTITY

END_FUNCTION

END_IF

END_LOCAL

END_MODEL

END_PROCEDURE

END_REPEAT

END_TYPE

ENTITY

ENUMERATION

ESCAPE

FIXED

FOR

FUNCTION

GENERIC

IF

INTEGER

INVERSE

LIST

LOCAL

LOGICAL

MODEL

NUMBER

OF

ONEOF

OPTIONAL

OTHERWISE

PROCEDURE

QUERY

REAL

REPEAT

RETURN

SELECT

SET

SKIP

STRING

SUBTYPE

SUPERTYPE

THEN

ТO

TYPE

UNIQUE

UNTIL

VAR

WHERE

WHILE


     
Таблица 2 - Дополнительные ключевые слова EXPRESS-I
     

CALL

CRITERIA

END_CALL

END_CRITERIA

END_NOTES

END_OBJECTIVE

END_PARAMETER

END_PURPOSE

END_REALIZATION

END_REFERENCES

END_SCHEMA_DATA

END_TEST_CASE

IMPORT

NOTES

OBJECTIVE

PARAMETER

PURPOSE

REALIZATION

REFERENCES

SCHEMA_DATA

SUBOF

SUPOF

TEST_CASE

USING

WITH


     

6.2.2 Зарезервированные слова, являющиеся операторами
     
     Операторы, определяемые зарезервированными словами, указаны в таблице 3. Это те же самые операторы, что и операторы EXPRESS, определенные в разделе 12 ГОСТ Р ИСО 10303-11.
     
     
Таблица 3 - Использование в EXPRESS-I операторов EXPRESS
     

AND

ANDOR

DIV

IN

LIKE

MOD

NOT

OR

XOR


     

6.2.3 Встроенные константы
     
     Имена встроенных констант EXPRESS-I приведены в таблице 4. Это те же константы, что и константы EXPRESS, определенные в разделе 14 ГОСТ Р ИСО 10303-11.
     
     
Таблица 4 - Использование в EXPRESS-I констант EXPRESS
     

?

CONST_E

FALSE

PI

SELF

TRUE

UNKNOWN


     

6.2.4 Встроенные функции
     
     Имена функций EXPRESS, которые могут использоваться в EXPRESS-I, приведены в таблице 5.
     
     
Таблица 5 - Использование в EXPRESS-I функций EXPRESS
     

ABS

ACOS

ASIN

ATAN

BLENGTH

COS

EXISTS

EXP

FORMAT

HIBOUND

HIINDEX

LENGTH

LOBOUND

LOG

LOG10

LOG2

LOINDEX

NVL

ODD

ROLESOF

SIN

SIZEOF

SQRT

TAN

TYPEOF

USEDIN

VALUE

VALUE_IN

VALUE_UNIQUE


     
     Определения этих функций приведены в разделе 15 ГОСТ Р ИСО 10303-11.
     

6.2.5 Встроенные процедуры
     
     Имена EXPRESS-процедур, которые могут быть использованы в EXPRESS-I, приведены в таблице 6. Процедуры определены в разделе 16 ГОСТ Р ИСО 10303-11.
     
     
Таблица 6 - Использование в EXPRESS-I процедур EXPRESS

INSERT

REMOVE


     

6.3 Знаки
     
     Знаками являются специальные символы или группы специальных символов, имеющие специфический смысл в EXPRESS-I. Знаки используются в EXPRESS-I в качестве ограничителей и операторов. Ограничитель используется для начала, разделения или завершения соседних лексических или синтаксических элементов. Интерпретация этих элементов была бы невозможной без разделителей. Операторы означают, что над операндами должны быть совершены действия, связанные с оператором. Знаки EXPRESS-I приведены в таблицах 7 и 8.
     
     
Таблица 7 - Знаки, общие для EXPRESS-I и EXPRESS
     

.

,

;

:

*

+

-

=

%

'

\

/

<

>

[

]

{

}

|

e

(

)

<=

< >

>=

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

:=

||

**

- -

(*

*)

:=:

:<>:


     
Таблица 8 - Дополнительные знаки EXPRESS-I
     

@

!

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

= =

"


     
     6.4 Идентификаторы и ссылки
     
     Идентификаторами являются имена, присвоенные элементам, объявленным в реализации EXPRESS-I. Идентификатор не должен совпадать с зарезервированными словами EXPRESS-I или EXPRESS.
     

Синтаксис:

187 constant_id = < как в EXPRESS > .

198 entity_id = < как в EXPRESS > .

282 schema_id = < как в EXPRESS > .

140 simple_id = < как в EXPRESS > .

51i ComplexEntityInstanceld = SimpleEntitylnstanceld `[` SupSubld `]` .

58i Contextld = simple_id .

69i Entitylnstanceld = ComplexEntitylnstanceld |
     
                                        SimpleEntitylnstanceld .
     

73i Enumerationld = type_ref .

75i EnumerationInstanceld = simple_id .

92i Modelld = simple_id .

100i Parameterld = simple_id .

115i Selectld = type_ref .

117i Selectlnstanceld = simple_id .

120i SimpleEntitylnstanceld = simple_id .

122i Simplelnstanceld = simple_id .

125i SupSubld = digits .

129i TestCaseld = simple_id .

136i Typeld = type_ref .

138i Typelnstanceld = simple_id .


     
     Первым символом простого идентификатора должна быть буква. Остальные символы, при их наличии, могут быть любой комбинацией букв, цифр и символа подчеркивания. Внутри идентификаторов не должно быть ни одного пробела.
     
     Разработчик синтаксического анализатора EXPRESS-I должен установить максимальное число символов идентификатора, которое может распознаваться данной реализацией (см. приложение В).
     
     Примечание - Буквы, используемые для формирования идентификаторов, не чувствительны к типу, т.е. заглавные и строчные буквы воспринимаются как одинаковые.
     
     
     Пример 4 - Правильные простые идентификаторы
     

POINT

line

Circle

AnEntity

item507

An_integer.


     Пример 5 - Неправильные простые идентификаторы
     

_POINT

подчеркивание не может быть первым символом

line?

? не может быть частью идентификатора

3dThing

цифра не может быть первым символом

Pi

Pi является ключевым словом EXPRESS-I


     Пример 6 - Правильные идентификаторы экземпляра сложного объекта
     

complex[101]

complex[12]

an_ent[23]

an_ent[77]

Синтаксис:

146 constant_ref = < как в EXPRESS > .

154 type_ref = < как в EXPRESS > .

36i ContextRef = Contextld .

39i ParameterRef = Parameterld .


     
     На элемент можно ссылаться по его идентификатору. На элементы - константа и параметр - можно ссылаться по соответствующему идентификатору.
     

Синтаксис:

34i ComplexEntitylnstanceRef = `@` SipmleEntitylnstanceld .

37i EntitylnstanceRef = ComplexEntitylnstanceRef |
     
                                           SimpleEntitylnstanceRef .
     

38i EnumerationlnstanceRef = `@` Enumerationlnstanceld .

96i ObjectlnstanceRef = EntitylnstanceRef | EnumerationlnstanceRef |
     
                                             SelectlnstanceRef | SimplelnstanceRef |
     
                                             TypelnstanceRef .
     

40i SelectlnstanceRef = `@` Selectlnstanceld .

41i SimpleEntitylnstanceRef = `@` SimpleЕntitylnstanceld .

42i SimplelnstanceRef = `@` Simplelnstanceld .

43i SupSubRef = `@` SupSubld .

44i TypelnstanceRef = `@` Typelnstanceld .


      
     Первым символом ссылки на экземпляр объекта (entity), перечисления (enumeration), типа (type) или выбора (select) должен быть @ с последующим хотя бы одним символом. Символы после начального @ могут быть любой комбинацией букв, цифр и символа подчеркивания, которые образуют правильный идентификатор объекта, перечисления, простого экземпляра, экземпляра выбора или типа. Эти ссылки в совокупности называются ссылками на экземпляр предмета.
     
     Пример 7 - Правильные ссылки на экземпляр предмета
     

@POINT

@line

@Circle

@AnEntity

@item567


     Пример 8 - Неправильные ссылки на экземпляр предмета.
     

@line?

? не может быть частью идентификатора

3dThing

@ должен быть первым символом

@subof

subof является ключевым словом EXPRESS-I

@@Circle

@ может появляться только в качестве первого символа

@567

символы, следующие за @, должны начинаться с буквы

@complex[82]

допустимы только символы букв, цифр и подчеркивания.

7 Именованные области значений


     В настоящем разделе определены типы областей значений (доменов), как части языка. Области значений используются для описания допустимых значений экземпляра. Именованными областями значений являются области значений объекта, типа, перечисления или выбора.
     

7.1 Область значений объекта
     
     Область значений объекта представляет класс предметов, имеющих общие атрибуты.
     

Синтаксис:

66i EntityDomain = [ Schemald `.` ] Entityld .


     Примечание - Область значений объекта соответствует типу данных объекта в языке EXPRESS.
     
     
     7.2 Область значений перечисления
     
     Область значений перечисления охватывает область значений упорядоченное множество имен.
     

Синтаксис:

72i EnumerationDomain = [ Schemald `.` ] Enumerationld .


     Примечание - Область значений перечисления соответствует перечисляемому типу данных в языке EXPRESS.
     
     

7.3 Область значений выбора
     
     Область значений выбора охватывает объединение областей значений.
     

Синтаксис:

114i SelectDomain = [ Schemald `.` ] Seiectld .


     Примечание - Область значений выбора соответствует выбираемому типу данных в языке EXPRESS.
     
     

7.4 Область значений типа
     
     Область значений типа является расширением для других областей значений в языке.
     

Синтаксис:

135i TypeDomain = [ Schemald `.` ] Typeld .


     Примечание - Область значений типа соответствует определенному типу данных в языке EXPRESS, не являющемуся перечисляемым или выбираемым типом.
     
     

8 Значения и экземпляры


     В данном разделе описаны реализации возможностей языка EXPRESS.
     

8.1 Базовые значения
     

Синтаксис:

48i BaseValue = SimpleValue | EnumerationValue .

123i SimpleValue = BinaryValue | BooleanValue | LogicalValue |
       
                                     NumberValue | StringValue .


     
     Простым значением является значение самоопределенной константы. Область значения зависит от того, как компонуются символы при формировании лексемы.
     

8.1.1 Двоичное значение
     
     Двоичное значение представляет величину двоичной области значений.
     

Синтаксис:

25i BinaryValue = binary_literal .

136 binary_literal = < как в EXPRESS > .


     
     Двоичное значение образуется из символа % и последующих одного или более битов (0 или 1).
     
     Разработчик синтаксического анализатора языка EXPRESS-I должен установить максимальное число битов в двоичном значении, которое может распознаваться данной реализацией (см. приложение В).
     
     Пример 9 - Правильное двоичное значение
     
%10100110000101
     

8.1.2 Булевское значение
     
     Булевское значение представляет величину булевской области значений.
     

Синтаксис:

50i BooleanValue = TRUE | FALSE .


     
     Булевским значением является одна из встроенных констант FALSE или TRUE.
     

8.1.3 Числовое значение
     
     Числовым значением является целочисленное или действительное значение.
     

Синтаксис:

94i NumberValue = IntegerValue | RealValue .


     

8.1.4 Целочисленное значение
     
     Целочисленное значение представляет величину целочисленной области значений.
     

Синтаксис:

29i IntegerValue = [sign] integer_literal .

138 integer_literal = < как в EXPRESS > .

286 sign = < как в EXPRESS > .


     
     Целочисленный литерал компонуется полностью из цифр. Целочисленное значение компонуется из целочисленного литерала, возможно, предваряемого знаком. Оно определяет положительное, отрицательное либо нулевое целое число.
     
     Разработчик синтаксического анализатора языка EXPRESS-I должен установить максимальное значение целого, которое может распознаваться данной реализацией (см. приложение В).
     
     Пример 10 - Правильные целочисленные значения:
     

0

1

-1

891562934527619


     Пример 11 - Неправильные целочисленные значения:
     

1.0

не может включать десятичную точку.

8.1.5 Логическое значение
     
     Логическое значение представляет величину логической области значений.
     

Синтаксис:

88i LogicalValue = logical_literal .

242 logical_literal = < как в EXPRESS > .


     
     Логическим значением является одна из встроенных констант FALSE, TRUE или UNKNOWN.
     

8.1.6 Действительное значение
     
     Действительное (вещественное) значение представляет величину действительной области значений.
     
     Действительным значением является математическая константа со знаком или действительный литерал со знаком.
     

Синтаксис:

104i RealValue = SignedMathConstant | SignedRealLiteral .

31i SignedMathConstant = [ sign ] MathConstant .

89i MathConstant = CONST_E | PI .

32i SignedRealLiteral = [ sign ] real_literal .

139 real_literal = < как в EXPRESS > .


     
     Математической константой со знаком является одна из встроенных математических констант (то есть ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 или ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1), возможно предваряемая знаком.
     
     Математическая константа ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1=2,7182... представляется константой CONST_E языка EXPRESS.
     
     Математическая константа ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1=3,1415... представляется константой PI языка EXPRESS.
     
     Пример 12 - Математические константы со знаком:
     

-const_e

Pi


     Действительный литерал со знаком компонуется из мантиссы (со знаком) и возможного показателя степени. Он определяет действительное число.
     
     Разработчик синтаксического анализатора языка EXPRESS-I должен установить максимальную точность и максимальный показатель степени действительного значения, которые могут распознаваться данной реализацией (см. приложение В).
     
     Пример 13 - Правильные действительные значения:
     

0.0

-1.E6

1.e-6

8915629.34527619


     Пример 14 - Неправильные действительные значения:
     

.001

перед точкой должна быть хотя бы одна цифра

1e10

в мантиссе должна быть десятичная точка

1.0 e-12.0

в показателе не должно быть десятичной точки

CONSTE

неверно записанная встроенная константа.

8.1.7 Строковое значение
     
     Строковое значение представляет величину строковой области значений. Имеются две формы строкового значения - явное строковое значение и кодированное строковое значение. Явное строковое значение компонуется из последовательности символов из набора символов EXPRESS-I, заключенной в апострофы ('). Апостроф внутри явного строкового значения представляется двумя последовательными апострофами. Кодированным строковым значением является кодированное четырьмя октетами представление последовательности символов из ИСО/МЭК 10646-1, заключенное в кавычки ("). Кодирование определяется следующим образом:
     
     - первый октет = группа ИСО/МЭК 10646-1, в которой определяется символ;
     
     - второй октет = проекция ИСО/МЭК 10646-1, в которой определяется символ;
     
     - третий октет = строка ИСО/МЭК 10646-1, в которой определяется символ;
     
     - четвертый октет = ячейка ИСО/МЭК 10646-1, в которой определяется символ.
     
     Последовательность октетов должна идентифицировать один из допустимых символов из ИСО/МЭК 10646-1.
     

Синтаксис:

124i StringValue = SimpleStringValue | EncodedStringValue .

33i SimpleStringValue = \q { (\q \q) | not_quote | \s | \o | \n } \q .

130 not_quote = < как в EXPRESS > .

27i EncodedStringValue = ` " ` { encoded_character | \n } ` " ` .

122 encoded_character = < как в EXPRESS > .


     
     Разработчик синтаксического анализатора языка EXPRESS-I должен установить максимальное число символов строкового значения, которое может распознаваться данной реализацией (см. приложение В).
     
     Разработчик синтаксического анализатора языка EXPRESS-I должен установить максимальное число октетов (должно быть кратно четырем) кодированного строкового значения, которое может распознаваться данной реализацией (см. приложение В).
     
     Примечание - Строковое значение EXPRESS отличается от строкового литерала EXPRESS, поскольку в первом случае строковое значение может занимать более чем одну физическую строку, тогда как строковой литерал EXPRESS не может занимать более одной физической строки.
     
     
     Пример 15 - Правильные явные строковые значения:
     

`This is a string on the line.`

Читается: это строка в одну физическую строку.

`This

is

a

multiline

string` .

Читается: Это

многострочная

строка

`This string``s got a single apostrophe embedded in it`.

Читается: Эта строка содержит единственный встроенный апостроф.


     Пример 16 - Неправильные явные строковые значения
     
`This string is invalid because there is no closing apostrophe.
     
     Пример 17 - Правильные кодированные строковые значения

"00000041"

читается: А.

"000000C5"
читается: ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1
     
     Пример 18 - Неправильные кодированные строковые значения:
     
"000041"

Октеты должны раскладываться в группы четверок.

"00000041 000000С5"
     
     Между октетами не должно быть пробелов.
    

8.1.8 Перечисляемое значение
     
     Перечисляемое значение представляет величину перечисляемой области значений.
     

Синтаксис:

28i EnumerationValue = `!` simple_id .


     
     Перечисляемое значение является простым идентификатором с предшествующим восклицательным знаком (!). Простым идентификатором является последовательность символов из букв, цифр и символа подчеркивания с буквой в качестве первого символа.
     
     Пример 19 - Правильные перечисляемые значения:
     

!red

!green

!forward


     8.2 Агрегатные значения
     
     В EXPRESS различают две формы значений агрегаций - фиксированную и динамическую. Фиксированная агрегация является агрегацией аналогичных предметов, где число мест хранения не зависит от количества элементов, фактически хранящихся в агрегации. Динамическая агрегация является агрегацией аналогичных предметов, где число мест хранения зависит от числа элементов, фактически хранящихся в агрегации. Агрегатные значения могут быть вложенными.
     

Синтаксис:

46i AggregationValue = DynamicAggr | FixedAggr .

61i DynamicAggr = `(` [ DynamicList ] `)` .

63i DynamicList = DynamicMember { `,` DynamicMember } .

64i DynamicMember = AggregationValue | ConstantValue | DerattValue |
                                          
                                          ParmValue | RegattValue | TypeValue .
     

79i FixedAggr = `[` FixedList `]` .

80i FixedList = FixedMember { `,` FixedMember } .

81i FixedMember = DynamicMember | Nil .


     
     Допустимые области значений элементов внутри агрегации зависят от контекста области значений. Такими контекстами являются:
     
     - константы (см. 8.8);
     
     - вычисляемые атрибуты (см. 8.7.1.2);
     
     - явные атрибуты (см. 9.2.2);
     
     - параметры (см. 9.2.2);
     
     - определенные типы данных (см. 8.4).
     
     Правила и ограничения
     

a) Элементы внутри динамической агрегации не должны быть равны Nil.
     

b) Элементы внутри фиксированной агрегации могут быть равны Nil.
     

c) Значения элементов внутри агрегации должны быть совместимы с областью значений агрегации.
     
     Пример 20 - Агрегатные значения:
     

(10, -10, 0)

динамическая агрегация трех целочисленных значений

(1, 1, 2, 2, 3, 3)

динамическая агрегация шести целочисленных значений

()

пустая динамическая агрегация

[1, 2, 3, 4]

фиксированная агрегация четырех целочисленных значений

([1, 2], [3, ?])

динамическая агрегация фиксированной агрегации двух значений.


     8.3 Простой экземпляр
     
     Простой экземпляр является представлением значения одного экземпляра простого значения.
     

Синтаксис:

121i Simplelnstance = Simplelnstanceld `=` SimpleValue `;` .

122i Simplelnstanceld = Simple_id .

123i SimpleValue = BinaryValue | BooleanValue | LogicalValue | NumberValue |
     
                                     StringValue .

42i SimplelnstanceRef = `@` Simplelnstanceld .


     
     Пример 21 - Некоторые простые экземпляры
     
rl = 27.0;

&1 = ` A string`;
     
     8.4 Экземпляр типа
     
     Экземпляр типа является представлением значения одного экземпляра области значений типа (TYPE).
     

Синтаксис:

137i Typelnstance = Typelnstanceld `=` TypeInstanceValue `;` .

138i Typelnstanceld = simple_id .

139i TypeInstanceValue = TypeDomain `{` TypeValue `}` .

140i TypeValue = AggregationValue | BaseValue | ConstantRef |

                                EntitylnstanceValue | NamedlnstanceValue |
     
                                ObjectlnstanceRef | ParameterRef .
     

44i TypelnstanceRef = `@` Typelnstanceld .


     
     Правила и ограничения
     

а) Значение экземпляра должно быть либо простым значением, ссылкой на экземпляр объекта, ссылкой на экземпляр типа, либо агрегациями этих значений.
     
     Пример 22 - Некоторые экземпляры типов:
     
t1 = a_real {27.0};

t2 = an_array_of_string {[ `one`, `two` ]};

t3 = a_dynamic_aggregate_of_integer {(1, 1, 2, 3, 5, 8, 13)};
     

8.5 Экземпляр выбора
     
     Экземпляр выбора является представлением значения одного экземпляра области значений выбора (SELECT).
     

Синтаксис:

116i Selectlnstance = Selectlnstanceld `=` SelectlnstanceValue `;`

117i Selectlnstanceld = simple_id .

118i SelectlnstanceValue = SelectDomain `{` SelectValue `}` .

119i SelectValue = EnumerationValue | NamedlnstanceValue | ObjectlnstanceRef |
     
                                   TypeValue .
     

40i SelectlnstanceRef = `@` Selectlnstanceld .


     
     Правила и ограничения
     

а) Значение экземпляра должно быть либо ссылкой на экземпляр типа, ссылкой на экземпляр выбора, ссылкой на экземпляр перечисления, либо ссылкой на экземпляр объекта.
     
     Пример 23 - Экземпляр выбора
     
&1 = type_or_entity{@e27};
     

8.6 Экземпляр перечисления
     
     Экземпляр перечисления является представлением значения одного экземпляра области значений перечисления (ENUMERATION).
     

Синтаксис:

74i Enumerationlnstance = Enumerationlnstanceld `=`
     
                                                  EnumerationlnstanceValue `;` .
     

75i Enumerationlnstanceld = simple_id .

76i EnumerationlnstanceValue = EnumerationDamain
     
                                                             `{` EnumerationValue `}` .
     

28i EnumerationValue = `!` simple_id .

38i EnumerationlnstanceRef = `@` Enumerationlnstanceld .


     
     Правила и ограничения
     

а) Значение экземпляра должно быть перечисляемым значением.
     
     Пример 24 - Некоторые экземпляры перечисления
     
enum1 = an_enum{!first};

enum2 = an_enum{!second};
     
     8.7 Экземпляр объекта
     
     Экземпляр объекта является представлением одного экземпляра области значений объекта (ENTITY).
     

Синтаксис:

68i EntityInstance = Entitylnstanceld `=` EntitylnstanceValue `;` .

69i Entitylnstanceld = ComplexEntitylnstanceld |
     
                                        SimpleEntitylnstanceld .
     

70i EntitylnstanceValue = EntityDomain `{` [ InheritsFrom ]
     
                                               { ExplicitAttr } { DerivedAttr }
     
                                               { InverseAttr } [ BequeathesTo ] `}` .
     

37i EntitylnstanceRef = ComplexEntitylnstanceRef |
     
                                           SimpleEntitylnstanceRef .


     
     В EXPRESS различают два вида экземпляра объекта:
     
     - экземпляр простого объекта - экземпляр, не являющийся частью дерева наследования;
     
     - экземпляр сложного объекта - экземпляр из дерева наследования. Он компонуется из экземпляров компонентов (объектов), которые вместе образуют все узлы дерева.
     

Синтаксис:

51i ComplexEntitylnstanceld = SimpleEntitylnstanceld `[` SupSubld `]` .

34i ComplexEntitylnstanceRef = `@` SimpleEntitylnstanceld .

120i SimpleEntitylnstanceld = simple_id .

41i SimpleEntitylnstanceRef = `@` SimpleEntitylnstanceld .

125i SupSubld = digits .


     
     Идентификатором экземпляра простого объекта является простой идентификатор.
     
     Идентификатор экземпляра сложного объекта состоит из двух частей. Первая часть является такой же как идентификатор экземпляра простого объекта. Второй частью является строка цифр, заключенная в квадратные скобки. Строка цифр во второй части (называемая в синтаксисе SupSubld) является идентификатором конкретного компонента экземпляра сложного объекта. Ссылка на экземпляр сложного объекта включает первую часть идентификатора с предшествующим ему символом @.
     
     Правила и ограничения
     

a) Для данного экземпляра сложного объекта первая часть идентификатора экземпляра сложного объекта должна быть такой же, что и для каждого компонента экземпляра сложного объекта.
     

b) Для данного экземпляра сложного объекта вторая часть идентификатора экземпляра сложного объекта должна быть разной для каждого компонента экземпляра сложного объекта.
     
     Пример 25 - Идентификатор экземпляра сложного объекта для двухкомпонентного экземпляра и ссылка на этот экземпляр сложного объекта.
     

complex[23]

- - идентификатор одного компонента

complex[111]

- - идентификатор другого компонента

@complex

- - ссылка на экземпляр сложного объекта

8.7.1 Атрибуты
     
     Экземпляр объекта в EXPRESS может не иметь ни одного (ноль) или иметь несколько атрибутов. Атрибуты подразделяются на явные, вычисляемые и инверсные.
     
     Пример 26 - Экземпляры пустых объектов
     
е2 = ent_inst{ };

eg = ent_inst{ };
     

8.7.1.1 Явные атрибуты
     
     Явный атрибут является обязательным свойством объекта.
     

Синтаксис:

77i ExplicitAttr = RequiredAttr | OptionalAttr .

106i RequiredAttr = RoleName `ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1` (ReqattValue | Nil) `;` .

99i OptionalAttr = RoleName `ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1` OptattValue `;` .

107i RoleName = attribute_ref .

105i ReqattValue = AggregationValue | BaseValue | ConstantRef |
     
                                   NamedlnstanceValue | ObjectlnstanceRef |
     
                                   ParameterRef | SelectValue | TypeValue .
     

96i ObjectlnstanceRef = EntityInstanceRef | EnumerationInstanceRef |
     
                                             SelectlnstanceRef | TypelnstanceRef |
     
                                             SimplelnstanceRef .
     

93i NamedlnstanceValue = EnumerationlnstanceValue | SelectInstanceValue |
     
                                                   TypelnstanceValue .
     

98i OptattValue = ReqattValue | Nil .

30i Nil = `?` .


     
     Явный атрибут состоит из имени роли атрибута, последующего знака ->, последующей величины области значений роли и завершающей точки с запятой. Величина области значений роли для обязательного атрибута может быть ссылкой на экземпляр объекта или типа, значением, поименованным значением, константой или параметром, либо агрегациями перечисленных значений. Величина области значений роли для необязательного атрибута является такой же, как и для обязательного атрибута, с дополнительным значением Nil, если величина области не определена.
     
     Примечание - Явному атрибуту может быть задано значение Nil. В этом случае, если определение объекта основано на EXPRESS-объекте, тогда экземпляр не будет соответствовать EXPRESS-определению.
     
     
     Пример 27 - Явные атрибуты

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.2;

an_integer

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 3;


ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (1, 2, 3);

a_boolean

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 TRUE;

a_logical

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 UNKNOWN;

an_enumeration

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 !enum1;

a_string

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `A string`;

entity_ref

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @instance2;

optional_str

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 ?;

optional_int

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 42;

a_parameter

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 par1;

a_constant

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 c1;


     8.7.1.2 Вычисляемый атрибут
     
     Вычисляемым является атрибут, значение которого может быть вычислено по значениям других свойств объекта.
     

Синтаксис:

60i DerivedAttr = RoleName [ `ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1` DerattValue ] `;` .

107i RoleName = attribute_ref .

59i DerattValue = AggregationValue | Base Value | EntitylnstanceRef |
     
                                EntitylnstanceValue | EnumerationlnstanceValue |       
     
                                TypelnstanceRef | TypeInstanceValue | TypeValue .


     
     Вычисляемый атрибут состоит из имени роли атрибута, последующих необязательных знака <- и величины области значений роли и заканчивается точкой с запятой. Величина области значений роли может быть ссылкой на экземпляр объекта или типа, значением, константой либо их агрегациями. Кроме того, величина может иметь значение Nil, если она не определена.
     
     Пример 28 - Вычисляемые атрибуты
     

a_real

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.2;

an_integer

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 3;

a_boolean

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 TRUE;

a_logical;

an_enumeration

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 !enum1;

a_string

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `A string`;

entity_ref

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @instance2;

null_derived

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 ?;

8.7.1.3 Инверсный атрибут
     
     Если экземпляр объекта установил отношение с текущим экземпляром объекта посредством ссылки в явном атрибуте на текущий экземпляр, то для описания этого отношения в контексте текущего экземпляра может быть использован инверсный атрибут.
     

Синтаксис:

87i InverseAttr = RoleName [ `ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1` InvattValue ] `;` .

107i RoleName = attribute_ref .

86i InvattValue = DynamicEntityRefList .

62i DynamicEntityRefList = `(` [ EntityRefList ] `)` .

71i EntityRefList = EntitylnstanceRef { `,` EntityInstanceRef } .


     
     Инверсный атрибут состоит из имени роли атрибута, последующих необязательных знака <- и величины области значений и заканчивается точкой с запятой. Величиной области значений роли является (возможно, пустой) динамический список ссылок на экземпляры объектов.
     
     Пример 29 - Инверсные атрибуты
     

inverse_1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@a1, @b3);

inverse_2;

inverse_3

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 ( );

8.7.2 Супертипы и подтипы
     
     Экземпляр сложного EXPRESS-объекта наследует атрибуты и их значения из экземпляров его супертипов (SUPERTYPE) (при их наличии) и передает атрибуты и их значения экземплярам своих подтипов (SUBTYPE) (при их наличии).
     

49i BequeathesTo = SUPOF DynamicSupSubRefList `;` .

85i InheritsFrom = SUBOF DynamicSupSubRefList `;` .

65i DynamicSupSubRefList = `(` [ SupSubRef { `,` SupSubRef } ] `)` .

43i SupSubRef = `@` SupSubld .


     
     Ссылки на экземпляры компонентов (см. 8.7) непосредственного супертипа(ов), при его наличии, даются вслед за ключевом словом SUBOF и заключаются в круглые скобки.
     
     Ссылки на экземпляры компонентов непосредственных подтипов, при их наличии, даются вслед за ключевым словом SUPOF и заключаются в круглые скобки.
     
     Примечание - Как указано в 8.7, идентификатор экземпляра сложного объекта имеет две части: первая часть является идентификатором экземпляра в целом, а вторая часть - идентификатором компонента. Назовем, например, part1 первую часть идентификатора экземпляра сложного объекта. Тогда ссылка на компонент, скажем, @3, является ссылкой на компонент экземпляра сложного объекта, полностью идентифицируемую как part1[3].
     
     
     Пример 30 - Супертипы и подтипы
     

i1[1]

= super{super_int ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 2; SUPOF(@2); };

- - имеет подтип i1[2].

i1[2]

= sub{SUBOF(@1); sub_real ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 23.7; };

- - имеет супертип i1[1].

i2[1]

= sub{SUBOF(@5); sub_real ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 -42.0; };

- - имеет супертип i2[5].

i2[5]

= super{super_int ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 7; SUPOF(@1); };

- - имеет подтип i2[1].

8.8 Экземпляр константы
     
     Объявление константы может быть использовано для объявления именованных констант. Областью действия идентификаторов констант, объявленных внутри блока констант, должна быть схема, в которой находится блок констант. Именованная константа, появляющаяся в объявлении константы, имеет явную инициализацию, значение константы не может быть модифицировано после инициализации. Вхождение именованной константы вне ее объявления должно быть эквивалентно вхождению исходного значения самой константы.
     

Синтаксис:

52i ConstantBlock = CONSTANT { ConstantSpec } END_CONSTANT `;` .

54i ConstantSpec = Constantld `= =` ConstantValue `;` .

53i ConstantValue = AggregationValue | BaseValue | EntitylnstanceValue |
     
                                      NamedlnstanceValue | SelectValue | TypeValue .
     

35i ConstantRef = Constantld .


     
     Значение константы может быть агрегацией значений.
     
     Правила и ограничения
     

a) Каждое значение должно быть простым значением, значением экземпляра объекта, перечисляемым значением, выбираемым значением либо их агрегациями.
     

b) Именованная константа может появляться в объявляемом значении другой именованной константы.
     
     Пример 31 - Блок констант
     

CONSTANT
     

zero

= = 0.0;

thousand

= =1000;

origin

= = point{x -> zero; у -> zero;};

large_circle

= = circle{center -> origin; radius -> thousand;};

z_axis

= = [0.0, 0.0, 1.0];

END_CONSTANT;

8.9 Экземпляр данных схемы
     
     Экземпляр данных схемы (SCHEMA_DATA) определяет экземпляр (часть) представления рассматриваемой предметной области, в котором объявляемые элементы имеют определенные смысл и назначение. Например, геометрия (geometry) может быть именем данных схемы (SCHEMA_DATA), содержащих экземпляры точек, кривых, поверхностей и других соответствующих элементов. Порядок, в котором объявляются экземпляры в экземпляре SCHEMA_DATA, произволен.
     

Синтаксис:

109i SchemalnstanceBlock = SCHEMA_DATA Schemald `;`
     
                                                      [ SchemalnstanceBody ] END_SCHEMA_DATA `;` .
     

108i Schemald = schema_ref .

110i SchemalnstanceBody = [ ConstantBlock ] { Objectlnstance } .

95i Objectlnstance = Entitylnstance | Enumerationlnstance | Selectlnstance |
     
                                          Typelnstance | Simplelnstance .


     
     Объявление SCHEMA_DATA создает новую область действия, в которой могут быть объявлены следующие элементы:
     
     - константы;
     
     - экземпляры объектов;
     
     - экземпляры перечисления;
     
     - экземпляры выбора;
     
     - простые экземпляры;
     
     - экземпляры типа.
     
     Пример 32 - Наполнение EXPRESS-схемы
     
SCHEMA_DATA whatsits ;
     
     (* Константы, определяемые в EXPRESS *)
     
     CONSTANT
     
     one = = 1.0;
     
     twopi = = 6.2831853;
     
     END_CONSTANT;
     
     (* Типы, определяемые в EXPRESS *)
     
     n1 = name{(`Jot`, `Е`, `Bloggs`)};
     
     n2 = name{(`Mary`, `Jones`)};
     
     (* Объекты, определяемые в EXPRESS *)
     
     p1 = point{x ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 one; у ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 twopi;};
     
     s1 = affianced{him ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @n1; her ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @n2;};
     
     END_SCHEMA_DATA;
 


     8.10 Отображение модели
     
     Понятие MODEL определяет одну конкретную реализацию данных, соответствующих информационной модели.
     

Синтаксис:

90i ModelBlock = MODEL Modelld `;` ModelBody END_MODEL `;` .

92i Modelld = simple_id .

91i ModelBody = { SchemalnstanceBlock } .


     
     EXPRESS-объявление MODEL создает новую область действия, в которой могут быть объявлены следующие элементы:
     
     - экземпляры данных схемы.
     
     Примечание - Основным назначением MODEL является демонстрация совокупности объектной базы.
     
     
     Пример 33 - Например, bugatti_35 может быть именем MODEL, содержащей данные, представляющие автомобиль типа Bugatti Type 35. Может быть несколько экземпляров данных схемы внутри MODEL: один, например, для чертежей автомобиля, и другой, содержащий данные по обслуживанию автомобиля этого типа.
     
     Правила и ограничения
     

a) Каждый экземпляр данных схемы внутри MODEL должен иметь уникальный идентификатор.
     

b) Идентификатор каждого экземпляра внутри MODEL должен быть уникальным.
     

c) Значения внутри MODEL не должны быть ссылками на параметр.
     
     Пример 34 - Набросок MODEL
     
MODEL a_model;
     
     SCHEMA_DATA a_schema;
     …     
     END_SCHEMA_DATA;
     
     SCHEMA_DATA another_schema;
     …     
     END_SCHEMA_DATA;
     
END_MODEL.
     
     

9 Определение абстрактного контрольного примера


     В данном разделе описаны основные элементы языка EXPRESS-I, относящиеся к определению абстрактных контрольных примеров.
     
     9.1 Контекст
     
     Контекст (CONTEXT) определяет экземпляры данных и алгоритмы, относящиеся к представлению рассматриваемой предметной области, в котором элементы имеют определенные смысл и назначение. Экземпляры данных могут быть параметризованы.
     

Синтаксис:

56i ContextBlock = CONTEXT Contextld `;` ContextBody END_CONTEXT `;` .

58i Contextld = simple_id .

57i ContextBody = { SchemaReferenceSpec } [ FormalParameterBlock ]
     
                                  { SchemaInstanceBlock | SupportAlgorithm } .
     

36i ContextRef = Contextld .


     
     EXPRESS-I-объявление CONTEXT создает новую область действия, в которой могут быть объявлены следующие элементы:
     
     - ссылки на EXPRESS-схемы (см. 10.2);
     
     - формальные параметры;
     
     - экземпляры данных схемы;
     
     - EXPRESS-функции;
     
     - EXPRESS-процедуры.
     
     Пример 35 - Например bugatti может быть именем CONTEXT, который содержит параметризованные (то есть обобщенные) данные, представляющие автомобиль типа Bugatti. Внутри этого CONTEXT может быть несколько экземпляров данных схемы: один, например, для чертежей автомобиля, и другой, содержащий данные по обслуживанию автомобиля этого типа.
     
     Правила и ограничения
     

a) Каждый экземпляр данных схемы внутри CONTEXT должен быть экземпляром из разных схем.
     

b) Каждый идентификатор внутри CONTEXT должен быть уникальным.
     
     Пример 36 - Набросок CONTEXT
     
CONTEXT parametrized_model;
     
     PARAMETER      
     …     
     END_PARAMETER;
     
     SCHEMA_DATA a_schema;     
     …     
     END_SCHEMA_DATA;
     
     SCHEMA_DATA another_schema;     
     …     
     END_SCHEMA_DATA;
     
END_CONTEXT;
     

9.2 Параметры
     
     Контекст может иметь формальные параметры. Каждый формальный параметр имеет имя и область значений. Имя является идентификатором, который должен быть уникальным внутри области действия контекста.
     
     Контрольный пример может иметь фактические параметры, которые задают конкретные значения соответствующим формальным параметрам внутри контекста.
     
     Для обобщения типов данных, используемых для передачи значений в контекстах, имеются области значений AGGREGATE и GENERIC. Также могут использоваться соответствующие массивы для обобщения областей значений массивов.
     

9.2.1 Формальный параметр
     
     Формальный параметр может иметь значение по умолчанию, которое должно быть совместимо с областью значений. Формальные параметры, не имеющие значений по умолчанию, изначально обнуляются (имеют значение) Nil.
     

Синтаксис:

83i FormalParameterBlock = PARAMETERi
     
                                                     { FormalParameter } END_PARAMETER `;` .
     

82i FormalParameter = Parameterld `:` parameter_type
     
                                           [ `:=` ParmValueDefault ] `;` .
     

100i Parameterld = simple_id .

253 parameter_type = < как в EXPRESS > .

103i ParmValueDefault = AggregationValue | BaseValue | ConstantRef |
     
                                              EntitylnstanceValue | NamedlnstanceValue |
     
                                              ObjectlnstanceRef | SelectValue | TypeValue |
     
                                              expression .
     

204 expression = < как в EXPRESS > .

39i ParameterRef = Parameterld .


     
     Так как в контексте могут быть несколько экземпляров данных схем, содержащих параметры, может случиться, что две или более схемы имеют объекты или типы с одинаковыми именами, но разной семантикой. Использование одного из этих имен в качестве идентификатора области значений параметра оказалось бы в этом случае двусмысленным. В случаях потенциальной неоднозначности каждое имя должно быть квалифицировано предшествующим ему именем соответствующей схемы с точкой в качестве разделителя.
     
     Пример 37 - Блок PARAMETER
     

PARAMETER

iv1

: INTEGER := 1;

bv1

: BOOLEAN;

p1

: name := name{first ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `John`; last ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `Doe`; married ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 bv1;};

p2

: name := name (`Mary`, `Smith`, TRUE);

a_list

: LIST OF REAL := (0.0, 1.0, 2.0);

a_set

: SET OF STRING;

a_select

: selection := wheeled_vehicle;

from_sch1

: sch1.vector := [1.0,3.0];

from_sch2

: sch2.vector := [3.0,4.0,-0.5];

END_PARAMETER;

9.2.2 Фактический параметр
     
     Фактический параметр состоит из ссылки на формальный параметр и значения параметра. Значение должно быть совместимым с областью значений формального параметра. Значение заменяет значение параметра по умолчанию, заданное формальным параметром.
     

Синтаксис:

45i ActualParameter = ParameterRef `:=` ParmValue .

39i ParameterRef = Parameterld .

102i ParmValue = ObjectlnstanceRef | expression .

204 expression = < как в EXPRESS > .


     
     Пример 38 - Пример показывает некоторые фактические параметры для формальных параметров, заданных в примере 37.
     

iv1

: = 77**2;

bv1

: = FALSE;

p1

: = name(`John`, `Smith`, bv1);

a_list

: = [20.0, 1.0, 20.0, 33.72];

a_select

: = @v23;

from_sch1

: = [0.0,-1.0];

from_sch2

: = [0.5, -0.2, -0.15];

9.3 Контрольный пример
     
     Тип TEST_CASE определяет как управляющие данные, так и данные экземпляра, которые могут быть использованы для целей абстрактного контрольного примера.
     

Синтаксис:

127i TestCaseBlock = TEST_CASE TestCaseld `;`
     
                                          TestCaseBody END_TEST_CASE `;` .
     

129i TestCaseld = simple_id .

128i TestCaseBody = Schema References ObjectiveBlock TestRealization
     
                                         { SupportAlgorithm } .
     

111i SchemaReferences = SchemaReferenceSpec { SchemaReferenceSpec } .


     
     Объявление TEST_CASE создает новую область действия, в которой можно объявлять либо ссылаться на следующие элементы:
     
     - тестируемые элементы (см.10.2);
     
     - цель теста;
     
     - реализацию теста;
     
     - алгоритмы поддержки.
     
     Тип TEST_CASE позволяет ссылаться на одну или несколько EXPRESS-схем. Это могут быть ссылки на набор контекстов (CONTEXT) и, возможно, на набор значений параметров, предназначенных для определения набора тестовых данных.
     
     Правила и ограничения
     

a) Значение каждого фактического параметра, объявленного в контрольном примере, должно быть совместимо с областью значений соответствующего формального параметра, объявленного в контексте.
     

b) Значение контрольного примера, связанное с каждым формальным параметром из контекста, должно быть объявлено в качестве фактического параметра или принято как значение формального параметра по умолчанию, если фактический параметр не объявляется.
     

c) Типы данных внутри контрольного примера должны ограничиваться определениями типов, установленными внутри ссылочных схем.
     

9.4 Цель теста
     
     Целью теста (OBJECTIVE) являются управляющие данные, которые могут быть использованы для абстрактного контрольного примера.
     

Синтаксис:

97i ObjectiveBlock = OBJECTIVE { TestPurpose } { TestReference }
     
                                           { TestCriteria } { TestNotes }
     
                                           END_OBJECTIVE `;` .


     
     Объявление OBJECTIVE создает новую область действия, в которой могут быть объявлены следующие элементы:
     
     - назначение абстрактного контрольного примера;
     
     - ссылки на соответствующие стандарты или технические требования;
     
     - критерий теста;
     
     - замечания для аналитика теста.
     
     Пример 39 - Цель теста
     
OBJECTIVE
     
     NOTES Настоящая цель содержит только замечания для аналитика теста.
     
     END_NOTES;
     
END_OBJECTIVE;
     

9.4.1 Назначение теста
     
     Назначением теста является текст, адресуемый человеку. Он содержит описание целевого назначения теста.
     

Синтаксис:

133i TestPurpose = PURPOSE Description END_PURPOSE `;` .

26i Description = { \a | \s | \n } .


     
     Текст начинается с ключевого слова PURPOSE и заканчивается ключевым словом END_PURPOSE и точкой с запятой. Текст может занимать несколько строк.
     
     Пример 40 - Текст в данном случае занимает две строки.
     
     PURPOSE. This test is intended to check the existance of a car instance. (Настоящий тест предназначен для проверки наличия экземпляра автомобиля). END_PURPOSE;
     

9.4.2 Тестовые ссылки
     
     Тестовой ссылкой является текст, адресуемый человеку. Он содержит описание интерпретируемых человеком ссылок на соответствующие стандарты или технические требования (спецификации).
     

Синтаксис:

134i TestReference = REFERENCES Description END_REFERENCES `;` .

26i Description = { \a | \s | \n } .


     
     Текст начинается с ключевого слова REFERENCES и заканчивается ключевым словом END_REFERENCES и точкой с запятой. Текст может занимать несколько строк.
     
     Пример 41 - Ссылка на печатный документ.
     
     REFERENCES Документ АР279, страницы 53-57. END_REFERENCES;
     

9.4.3 Критерий теста
     
     Критерием теста является текст, адресуемый человеку. Он содержит описание критерия вердикта, используемого при оценке результатов теста.
     

Синтаксис:

131i TestCriteria = CRITERIA Description END_CRITERIA `;` .

26i Description = { \a | \s | \n } .


     
     Текст начинается с ключевого слова CRITERIA и заканчивается ключевым словом END_CRITERIA и точкой с запятой. Текст может занимать несколько строк.
     
     Пример 42 - Простой критерий
     
     CRITERIA At least one instance of car shall be present. (Должен быть представлен по крайней мере один экземпляр автомобиля). END_CRITERIA;
     

9.4.4 Замечания к тесту
     
     Замечаниями к тесту является текст, адресуемый человеку. Он обеспечивает способы описания общих замечаний, помогающих аналитику теста.
     

Синтаксис:

132i TestNotes = NOTES Description END_NOTES `;` .

26i Description = { \a | \s | \n } .


     
     Текст начинается с ключевого слова NOTES и заканчивается ключевым словом END_NOTES и точкой с запятой. Текст может занимать несколько строк.
     
     Пример 43 - Замечание в одну строку
     
     NOTES Remember to fasten your seat belt. (He забудьте закрепить ремень безопасности). END_NOTES;
     

9.5 Реализация теста
     
     Реализация теста дает определение элементов данных, относящихся к контрольному примеру.
     

Синтаксис:

130i TestRealization = REALIZATION { local_decl } { UseContextBlock }
     
                                          { assignment_stmt } END_REALIZATION `;` .
     

239 local_decl = < как в EXPRESS > .

166 assignment_stmt = < как в EXPRESS > .


     
     Реализация начинается с ключевого слова REALIZATION и заканчивается ключевым словом END_REALIZATION и точкой с запятой.
     
     Реализация теста может включать:
     
     - ссылки на данные контекста и параметры (см.10.З.);
     
     - локальные переменные (определяемые с помощью синтаксиса EXPRESS);
     
     - операторы присваивания (определяемые с помощью синтаксиса EXPRESS).
     
     Пример 44 - Данная реализация определяет р1 как переменную типа point (точка). Данный тип затем вызывается для создания точки с координатами (1, 2, 3), присваиваемыми экземпляру переменной p1.
     
REALIZATION
     
     LOCAL
     
     p1 : point;
     
     END_LOCAL;
     
     p1 : point(1.0, 2.0, 3.0);
     
END_REALIZATION;
     
     

10 Интерфейсы


     В данном разделе установлены интерфейсы между экземплярами EXPRESS-I и EXPRESS-моделями вместе с интерфейсами между конструкциями EXPRESS-I.
     
     10.1 Интерфейс экземпляра схемы
     

Синтаксис:

109i SchemalnstanceBlock = SCHEMA_DATA Schemald;
     
                                                       [ SchemalnstanceBody ] END_SCHEMA_DATA `;` .

108i Schemald = schema_ref .

152 schema_ref = < как в EXPRESS > .


     
     Предполагается, что имеется связанная EXPRESS-схема (или, что то же самое, EXPRESS-G-схема); тогда Schemald ссылается на имя этой EXPRESS-схемы. Это значит, что тело экземпляра данных EXPRESS-I-схемы содержит экземпляры данных определений из идентифицированной EXPRESS-схемы. Оно не должно содержать экземпляров данных определений, являющихся внешними по отношению к данной EXPRESS-схеме.
     
     Примечание - Ссылки на схемы, определяемые в языках, отличных от EXPRESS или EXPRESS-G, не являются предметом рассмотрения в настоящем стандарте. Тем не менее Schemald можно рассматривать как ссылку на схему, определяемую на языке, отличном от EXPRESS.
     
     

10.2 Ссылка на схему
     
     Ссылка на схему позволяет идентифицировать конкретную EXPRESS-схему вместе с конкретными определениями внутри этой схемы.
     

Синтаксис:

112i SchemaReferenceSpec = WITH schema_ref [ USING `(` resource_ref

                                                         { `,` resource_ref } `)` ] `;` .
     

152 schema_ref = < как в EXPRESS > .

275 resource_ref = < как в EXPRESS > .


     
     Конструкция schema_ref, следующая за ключевым словом WITH, обозначает конкретную EXPRESS-схему. Конкретные объявления, представляющие интерес в данной EXPRESS-схеме, обозначаются в списке, следующем за ключевым словом USING.
     
     Отсутствие списка USING означает, что все определения внутри обозначенной EXPRESS-схемы являются доступными.
     
     Примечание - Ссылка на схему действует аналогично EXPRESS-оператору USE:
     
     
     Пример 45 - Задано следующее EXPRESS-определение:
     
SCHEMA a_schema;

ENTITY entity1;

... END_ENTITY;

ENTITY entity2;

... END_ENTITY;

ENTITY entity7;

... END_ENTITY;

TYPE type19 =

... END_TYPE;

TYPE type21 =

... END_TYPE;

END_SCHEMA;
     
     Тогда следующая конструкция обозначает два объекта и один тип из схемы a_schema.
     
     WITH a_schema USING (entity1, entity7, type21);
     
     10.3 Ссылки на данные контекста
     
     Элементы из CONTEXT могут быть импортированы в TEST_CASE, а фактические значения могут быть заданы для формальных параметров в CONTEXT.
     

Синтаксис:

141i UseContextBlock = CALL ContextRef `;` UseContextBody END_CALL `;` .

36i ContextRef = Contextld .

142i UseContextBody = [ ImportSpec ] [ ParameterSpec ] .

84i ImportSpec = IMPORT `(` { Assignment } `)` `;` .

47i Assignment = variable_id `:=` SelectablelnstanceRef `;` .

101i ParameterSpec = WITH `(` { ActualParameter } `)` `;` .

113i SelectablelnstanceRef = EntitylnstanceRef | EnumerationlnstanceRef |
     
                                                       SelectlnstanceRef | TypelnstanceRef .


     
     Конкретный CONTEXT обозначается посредством оператора CALL.
     
     Экземпляры предметов, представляющие интерес для контрольного примера и существующие в CONTEXT, обозначаются в списке IMPORT. Каждое значение экземпляра должно быть присвоено переменной.
     
     Значения формальных параметров в CONTEXT (при их наличии) задаются посредством списка WITH. Эти значения должны отменять значения обозначенных параметров, принятые по умолчанию (при их наличии).
     
     Пример 46 - Спецификация CALL
     

CALL a_context;

IMPORT (ent_var := @ent_21;

ent_27 := @ent_27;);

WITH (ivl := 771;

a_set := [ `alpha`, `to`, `omega` ]; );

END_CALL;

11 Область действия и видимость


     Объявление EXPRESS-I создает идентификатор, который можно использовать для ссылки на объявленный элемент в других контекстах. Некоторые конструкции EXPRESS-I неявно объявляют элементы EXPRESS путем добавления к ним идентификаторов. В тех областях, где на идентификатор объявленного элемента можно ссылаться, объявленный элемент называется видимым. На элемент можно ссылаться только там, где идентификатор видим. Относительно правил видимости см. 11.2.
     
     Некоторые элементы EXPRESS-I определяют участок (блок) текста, называемый областью действия элемента. Эта область действия ограничивает видимость объявленных в ней идентификаторов. Области действия могут быть вложенными; это значит, что элемент EXPRESS-I, устанавливающий область действия, может быть включен в область действия другого элемента. Имеются ограничения на перечень элементов, которые могут появиться внутри области действия конкретного элемента EXPRESS-I. Эти ограничения обычно устанавливаются синтаксисом ЕХPRESS-I (см. приложение А).
     
     Для каждого из элементов, установленных в таблицах 9 и 10, последующие подразделы настоящего раздела устанавливают границы определяемой области действия (при их наличии) и видимость объявляемого идентификатора как в общих терминах, так и в конкретных деталях.
     
     
Таблица 9 - Область действия и идентификатор, определяющие элементы EXPRESS-I
     

Элемент

Область действия

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

экземпляр константы (constant instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

контекст (context)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр объекта (entity instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр перечисления (enumeration instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

модель (model)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр данных схемы (schema data instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр выбора (select instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

простой экземпляр (simple instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

контрольный пример (test case)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр типа (type instance)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1


     Примечание - EXPRESS-I использует также различные конструкции EXPRESS, которые аналогичным образом имеют идентификаторы и области действия. Они приведены в таблице 10.
     
          
Таблица 10 - Области действия и идентификаторы, определяющие элементы EXPRESS и используемые в EXPRESS-I
     

Элемент

Область действия

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

оператор переименования (alias statement)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

атрибут (attribute)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

константа (constant)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

объект (entity)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

перечисление (enumeration)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

функция (function)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

параметр (parameter)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

процедура (procedure)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

выражение запроса (query expression)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

оператор цикла (repeat statement)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

метка правила (rule label)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

тип (type)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

метка типа (type label)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

переменная (variable)

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

Примечания
          
     ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1Идентификатор является неявно объявляемой переменной внутри определяемой области действия объявления.
     
    ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1Переменная неявно объявляется только тогда, когда устанавливается управление циклом по приращению.


     
     11.1 Правила области действия
     
     Ниже приведены общие правила, применяемые для всех форм определения области действия, допустимых в языке EXPRESS-I; список элементов, для которых определяются области действия, - см. в таблицах 9 и 10.
     
     Правила и ограничения
      

a) Все объявления должны находиться внутри области действия.
     

b) Внутри одной области действия идентификатор можно объявить только один раз либо явно его импортировать из вне.
     

c) Области действия должны быть корректно вложенными, то есть не должны пересекаться (это предписывается синтаксисом языка).
     
     В настоящем стандарте не устанавливается максимально допустимая глубина вложенности. Разработчик синтаксического анализатора языка EXPRESS-I должен установить максимальную глубину вложенности, поддерживаемую данной реализацией (см. приложение B).
     

11.2 Правила видимости
     
     Правила видимости идентификаторов описаны ниже. Список элементов EXPRESS-I, для которых объявляются идентификаторы, см. в таблицах 9 и 10. Правила видимости идентификаторов поименованных типов данных несколько отличаются от правил видимости других идентификаторов. Эти отличия описаны в 11.2.2.
     

11.2.1 Общие правила видимости
     
     Приведенные ниже общие правила применимы ко всем идентификаторам, за исключением идентификаторов поименованных типов данных, на которые правило d) не распространяется.
     
     Правила и ограничения
     

a) Идентификатор видим в области действия, в которой он объявляется. Эта область действия называется локальной областью действия идентификатора.
     

b) Идентификатор видим в конкретной области действия, он также видим во всех областях действия, определяемых внутри данной области, согласно правилу d).
     

c) Идентификатор не видим ни в одной области действия за пределами его локальной области действия, согласно правилу f).
     

d) Если идентификатор ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, видимый в области действия ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, переобъявляется в некоторой внутренней области ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, заключенной в ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, только ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, объявленный в области действия ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, видим в ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 и областях действия, объявленных внутри ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1. Идентификатор ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, объявленный в области действия ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, видим в ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 и любых внутренних областях действия, не переобъявляющих ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1.
     

e) Встроенные константы, функции, процедуры и типы EXPRESS-I считаются объявленными в воображаемой универсальной области действия. Все области действия EXPRESS-I являются вложенными в эту область действия. Идентификаторы, по которым ссылаются на встроенные константы, функции, процедуры и типы EXPRESS-I, видимы во всех областях действия, определяемых EXPRESS-I.
     

f) Идентификаторы элементов перечисления, объявленные внутри области определенного типа данных, видимы в следующей внешней области действия, если она не содержит объявления этого же идентификатора для другого элемента.
     
     Примечание - Если следующая внешняя область действия содержит объявление того же идентификатора, элементы перечисления остаются доступными, но должны иметь префиксом идентификатор определенного типа данных.
     
     

g) Некоторые EXPRESS-I-объявления, обычно не видимые, могут быть сделаны видимыми с помощью спецификаций интерфейса (см. раздел 10).
     

11.2.2 Правила видимости идентификатора поименованного типа данных
     
     За одним исключением, идентификаторы поименованных типов данных подчиняются тем же правилам видимости, что и другие идентификаторы. Этим исключением является правило видимости d). Идентификатор объекта или определенного типа данных ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, объявленный в области действия ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, остается видимым во внутренней области ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1, даже если он переопределяется в ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 одним из следующих способов:
     

a) область действия ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 определяется объявлением объекта, а ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 объявляется как атрибут в этой области действия;
     

b) область действия ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 определяется объявлением функции, процедуры или контекста, а ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 объявляется как формальный параметр или переменная в этой области действия.
     
     Пример 47 - В entity1 d относится как к типу данных объекта, так и к атрибуту.
     

FUNCTION example (par : INTEGER): INTEGER;

ENTITY d;

attrl : REAL;

END_ENTITY;

ENTITY entity1;

d : d; - - d в данной области действия является и объектом и атрибутом.

END_ENTITY;

END_FUNCTION;

11.3 Правила для явного элемента
     
     В последующих пунктах настоящего подраздела более детально показано, как общие правила области действия и видимости применяются к различным элементам EXPRESS-I.
     
     В EXPRESS-I используется многое из языка EXPRESS. Правила области действия и видимости для большинства этих элементов EXPRESS внутри EXPRESS-I идентичны правилам EXPRESS, определенным в ГОСТ Р ИСО 10303-11. В таблице 11 определены эти элементы. Кроме того, в таблице 11 определены элементы, общие для EXPRESS и EXPRESS-I, для которых ЕХPRESS-правила модифицируются при их использовании в EXPRESS-I, а также элементы, специфические для EXPRESS-I.
     
     
Таблица 11 - Правила области действия и видимости
     

Элемент

Правила EXPRESS

Модифицированные правила EXPRESS

Специфические правила EXPRESS-I

оператор переименования

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

атрибут

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

константа

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр константы

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

контекст

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

объект

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр объекта

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

перечисление

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр перечисления

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

функция

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

модель
 

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

параметр

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

процедура

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

выражение запроса

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

оператор цикла

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

метка правила

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр данных схемы

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр выбора

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

простой экземпляр

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

контрольный пример

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

тип

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

экземпляр типа

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

метка типа

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1

переменная

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1


     Примечание - Модификации EXPRESS-правил обусловлены, в основном, тем, что EXPRESS-I не использует EXPRESS-конструкций SCHEMA или RULE.
     
     

11.3.1 Оператор переименования
     
     Правила области действия и видимости для оператора ALIAS определены в 10.3.1 ГОСТ Р ИСО 10303-11.
     

11.3.2 Атрибут
     
     Правила области действия и видимости для атрибута определены в 10.3.2 ГОСТ Р ИСО 10303-11.
     

11.3.3 Константа
     
     Видимость: Идентификатор константы видим в области действия функции или процедуры, в которой он объявлен.
     
     Примечание - EXPRESS-спецификация (10.3.3 ГОСТ Р ИСО 10303-11) гласит: идентификатор константы видим в области действия функции, процедуры, правила или схемы, в которых он объявлен.
     
     

11.3.4 Экземпляр константы
     
     Видимость: Идентификатор экземпляра константы видим в области действия экземпляра данных схемы, в котором он объявлен, и в любой внешней области действия экземпляра данных схемы.
     

11.3.5 Контекст
     
     Видимость: Идентификатор контекста видим для всех контрольных примеров.
     
     Область действия: Объявление контекста определяет новую область действия. Эта область действия начинается с ключевого слова CONTEXT и продолжается до ключевого слова END_CONTEXT, которым заканчивается объявление контекста.
     
     Объявления: Следующие элементы могут объявлять идентификаторы в области действия объявления контекста:
     
     - формальный параметр;
     
     - функция;
     
     - процедура;
     
     - экземпляр данных схемы.
     

11.3.6 Объект
     
     Видимость: Идентификатор объекта видим в области действия функции или процедуры, в которой он объявлен. Идентификатор объекта остается видимым при условиях, определенных в 11.2.2, во внутренних областях действия, которые переобъявляют этот идентификатор.
     
     Примечание - EXPRESS-спецификация (10.3.5 ГОСТ Р ИСО 10303-11) гласит: идентификатор объекта видим в области действия функции, процедуры, правила или схемы, в которых он объявлен. Идентификатор объекта остается видимым ....
     
     
     Область действия и объявления: Область действия и допустимые объявления определены в ГОСТ Р ИСО 10303-11.
     
     Пример 48 - Идентификаторы атрибута batt в двух объектах не взаимосвязаны, поскольку они объявлены в двух разных областях действия.
     

ENTITY entity1;

aatt : INTEGER;

batt : INTEGER;

END_ENTITY;

ENTITY entity2;

а

: entity1;

batt: INTEGER;

END_ENTITY;


     Пример 49 - Следующая спецификация является неправильной, так как идентификатор атрибута aatt повторяется внутри области действия одного объекта. Хотя метка правила lab объявлена в обоих объектах, это не нарушает правил области действия или видимости; объявление объекта may_be_ok не видимо в объекте illegal, но правила обоих областей значений должны быть проверены.
     

ENTITY may_be_ok;

quantity : REAL;

WHERE

lab : quantity >= 0.0;

END_ENTITY;

ENTITY illegal

SUBTYPE OF (may_be_ok);

aatt : INTEGER;

batt : INTEGER;

aatt : REAL;

WHERE

lab : batt < 0;

END_ENTITY;

11.3.7 Экземпляр объекта
     
     Видимость: Идентификатор экземпляра объекта видим в области действия экземпляра данных схемы, в котором он объявлен, и в любой внешней области действия этого экземпляра данных схемы.
     

11.3.8 Элемент перечисления
     
     Видимость: Идентификатор элемента перечисления видим в области действия функции или процедуры, в которой объявлен его тип. Это является исключением из правила видимости 11.2.1f. Идентификатор не должен объявляться с какой-либо иной целью в этой области действия, за исключением объявления другого перечисляемого типа данных в той же области действия. Если один и тот же идентификатор объявляется двумя перечисляемыми типами данных как элемент перечисления, к ссылке на каждый элемент перечисления должен быть добавлен префикс в виде идентификатора типа данных для обеспечения однозначности ссылки.
     
     Примечание - EXPRESS-спецификация (10.3.4 ГОСТ Р ИСО 10303-11) гласит: идентификатор элемента перечисления видим в области действия функции, процедуры, правила или схемы, в которой объявлен его тип. Это является исключением ....
     
     

11.3.9 Экземпляр перечисления
     
     Видимость: Идентификатор экземпляра перечисления видим в области действия экземпляра данных схемы, в котором он объявлен, и в любой внешней области действия этого экземпляра данных схемы.
     

11.3.10 Функция
     
     Видимость: Идентификатор функции видим в области действия функции, процедуры, контекста или контрольного примера, в которых он объявлен.
     
     Примечание - EXPRESS-спецификация (10.3.6 ГОСТ Р ИСО 10303-11) гласит: идентификатор функции видим в области действия функции, процедуры, правила или схемы, в которых он объявлен.
     
     
     Область видимости и объявления: Область действия и допустимые объявления определены в ГОСТ Р ИСО 10303-11.
     

11.3.11 Модель
     
     Область действия: Объявление модели определяет новую область действия. Эта область действия простирается от ключевого слова MODEL до ключевого слова END_MODEL, которым заканчивается объявление модели.
     
     Объявления: Следующие элементы могут объявлять идентификаторы в области действия объявления модели:
     

- экземпляр данных схемы.
     

11.3.12 Параметр
     
     Видимость: Идентификатор формального параметра видим в области действия функции, процедуры или контекста, в которых он объявлен.
     
     Примечание - EXPRESS-спецификация (10.3.7 ГОСТ Р ИСО 10303-11) гласит: идентификатор формального параметра видим в области действия функции или процедуры, в которых он объявлен.
     
     
     Пример 50 - Следующее объявление является неправильным, так как идентификатор формального параметра раrm также используется в качестве идентификатора локальной переменной:
     

CONTEXT illegal;

PARAMETER

parm : REAL;

END_PARAMETER;

LOCAL

parm : STRING;

END_LOCAL;

END_CONTEXT;

11.3.13 Процедура
     
     Видимость: Идентификатор процедуры видим в области действия функции, процедуры, контекста или контрольного примера, в которых он объявлен.
     
     Примечание - EXPRESS-спецификация (10.3.8 ГОСТ Р ИСО 10303-11) гласит: идентификатор процедуры видим в области действия функции, процедуры, правила или схемы, в которых он объявлен.
     
     
     Область действия и объявления: Область действия и допустимые объявления определены в 10.3.8 ГОСТ Р ИСО 10303-11.
     

11.3.14 Выражение запроса.
     
     Область действия и видимость выражения QUERY определены в 10.3.9 ГОСТ Р ИСО 10303-11.
     

11.3.15 Оператор цикла
     
     Область действия и видимость оператора REPEAT определены в 10.3.10 ГОСТ Р ИСО 10303-11.
     

11.3.16 Метка правила
     
     Видимость: Метка правила видима в области действия объекта или типа, в которых она объявлена.
     
     Примечания
     

1 EXPRESS-спецификация (10.3.12 ГОСТ Р ИСО 10303-11) гласит: метка правила видима в области действия объекта, правила или типа, в котором она объявлена.
     

2 Метка правила используется только в реализации. EXPRESS-I не определяет механизма для ссылок на метки правила.
     
     

11.3.17 Экземпляр данных схемы
     
     Область действия: Объявление данных схемы определяет новую область действия. Эта область простирается от ключевого слова SCHEMA_DATA до ключевого слова END_SCHEMA_DATA, которым заканчивается объявление данных схемы.
     
     Объявления: Следующие элементы могут объявлять идентификаторы в области действия объявления данных схемы:
     
     - экземпляр константы;
     
     - экземпляр объекта;
     
     - экземпляр перечисления;
     
     - экземпляр выбора;
     
     - простой экземпляр;
     
     - экземпляр типа.
     

11.3.18 Экземпляр выбора
     
     Видимость: Идентификатор экземпляра выбора видим в области действия экземпляра данных схемы, в котором он объявлен, и в любой внешней области действия этого экземпляра данных схемы.
     

11.3.19 Простой экземпляр
     

Видимость: Идентификатор простого экземпляра видим в области действия экземпляра данных схемы, в котором он объявлен, и в любой внешней области действия этого экземпляра данных схемы.
     

11.3.20 Контрольный пример
     
     Область действия: Контрольный пример определяет новую область действия. Эта область действия простирается от ключевого слова TEST_CASE до ключевого слова END_TEST_CASE, которым заканчивается данный контрольный пример.
     
     Объявления: Следующие элементы могут объявлять идентификаторы в области действия контрольного примера:
     
     - функция;
     
     - процедура;
     
     - переменная.
     

11.3.21 Тип
     
     Видимость: Идентификатор типа видим в области действия функции или процедуры, в которой он объявлен. Идентификатор типа остается видимым, при определенных условиях, во внутренних областях действия, переобъявляющих этот идентификатор; для определения допустимых условий - см. 11.2.2.
     
     Примечание - EXPRESS-спецификация (10.3.14 ГОСТ Р ИСО 10303-11) гласит: идентификатор типа видим в области действия функции, процедуры, правила или схемы, в которых он объявлен. Идентификатор типа остается видимым ....
     
     
     Область действия и объявления: Область действия и допустимые объявления определены в ГОСТ Р ИСО 10303-11.
     

11.3.22 Экземпляр типа
     
     Видимость: Идентификатор экземпляр типа видим в области действия экземпляра данных схемы, в котором он объявлен, и в любой внешней области действия этого экземпляра данных схемы.
     

11.3.23 Метка типа
     
     Область действия и видимость определены в 10.3.15 ГОСТ Р ИСО 10303-11.
     

11.3.24 Переменная
     
     Видимость: Идентификатор переменной видим в области действия функции, процедуры или контрольного примера, в которых он объявлен.
     
     Примечание - EXPRESS-спецификация (10.3.16 ГОСТ Р ИСО 10303-11) гласит: идентификатор переменной видим в области действия функции, процедуры или правила, в которых он объявлен.
     
     

12 Отображение из EXPRESS в EXPRESS-I


     В настоящем разделе установлены правила отображения определений схемы и типа из EXPRESS в экземпляры EXPRESS-I.
     
     В таблице 12 приведен обзор отображений из EXPRESS в EXPRESS-I. Более детально они описаны ниже.
     
     
Таблица 12 - Краткий обзор отображений из EXPRESS в EXPRESS-I
     

EXPRESS

EXPRESS-I

ARRAY, BAG, LIST, SET

AggregationValue

CONSTANT

ConstantВlock

ContextBlock

ENTITY

Entitylnstance

ENUMERATION

Экземпляр или значение перечисления

FormalParameterBlock

FUNCTION

ModelBlock

PROCEDURE

Remark

RULE

SCHEMA

SchemaInstanceBIock

SELECT

Экземпляр или значение выбора

Simple type

SimpleValue

TestCaseBlock

TYPE

Экземпляр или значение типа


     
     12.1 Отображение EXPRESS-схемы
     
     EXPRESS-конструкция SCHEMA синтаксически отображается в EXPRESS-I-конструкцию экземпляра данных схемы. В таблице 13 приведен обзор соответствия между конструкциями EXPRESS и EXPRESS-I.
           
     
Таблица 13 - Обзор отображения SCHEMA
     

EXPRESS

EXPRESS-I

имя SCHEMA

schema_id

CONSTANT

ConstantBlock или ничего

ENTITY

Entitylnstance

ENUMERATION

EnumerationInstance или ничего

FUNCTION

ничего

PROCEDURE

ничего

REFERENCE

ничего, но см. 12.1.1

RULE

ничего

SELECT

Selectlnstance или ничего

TYPE

Typelnstance или ничего

USE

ничего, но см. 12.1.1


     
     Правила и ограничения
     

a) Имя экземпляра данных EXPRESS-I-схемы должно быть таким же, как и имя соответствующей EXPRESS-схемы.
     

b) Каждый экземпляр объекта внутри экземпляра данных схемы должен иметь соответствующее определение объекта внутри EXPRESS-схемы.
     

c) Каждый экземпляр перечисления, выбора или типа внутри экземпляра данных схемы должен иметь соответствующее определение внутри EXPRESS-схемы.
     

d) Каждая константа внутри экземпляра данных схемы должна иметь соответствующее определение константы внутри EXPRESS-схемы.
     

e) Каждая спецификация области значений внутри экземпляра данных схемы должна быть уникально обозначена, при необходимости - посредством квалификации имени области значений, именем EXPRESS-схемы, содержащей определение области значений.
     

f) Идентификаторы экземпляров должны быть уникальными внутри экземпляра данных схемы.
     

12.1.1 Отображение USE и REFERENCE
     
     EXPRESS-операторы USE и REFERENCE не отображаются в EXPRESS-I непосредственно, но их действие приводит к следующему:
     
     - экземпляры элементов EXPRESS, внесенные в область действия EXPRESS-схемы посредством явных операторов USE или REFERENCE либо посредством неявных ссылок, могут появиться внутри соответствующего экземпляра данных EXPRESS-I-схемы;
     
     - элементы, области значений которых переименовываются, должны иметь соответствующие области значений с новыми именами;
     
     - если имеются конфликты между именами областей значений из исходной EXPRESS-схемы с именами областей значений, вносимыми из другой схемы, вносимые имена должны квалифицироваться именем их родительской схемы.
     
     Пример 51 - Эти EXPRESS-схемы взаимосвязаны, так как схема с именем primary использует определение объекта с именем an_ent из схемы secondary.
     

SCHEMA primary;

USE FROM secondary (an_ent AS used);

ENTITY dup;

аtt1 : used

att2 : BOOLEAN;

END_ENTITY;

END_SCHEMA;

SCHEMA secondary;

ENTITY dup;

name : STRING;

int : INTEGER;

END_ENTITY;

ENTITY an_ent;

att3 : dup;

att4 : REAL;

END_ENTITY;

END_SCHEMA;


     Любое использование an_ent в экземпляре схемы primary требует экземпляра объекта с именем dup, который также определяется в схеме secondary и автоматически доступен в силу семантики предложения USE. Однако в данном случае в схеме primary также имеется объект с именем dup. Две их области значений должны различаться внутри EXPRESS-I представления primary посредством квалификации имени объекта, вносимого из схемы secondary, как показано ниже.
     

MODEL example;

SCHEMA_DATA primary;

dup1 = dup{att1 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @used1; att2 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 TRUE;};

used1 = used{att3 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @dup2; att4 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.23;};

dup2 = secondary.dup{name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `from secondary`; int ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1;};

used2 = used{att3 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @dup3; att4 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 -3.9;};

END_SCHEMA_DATA;

SCHEMA_DATA secondary;

dup3 = dup{name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `in secondary`; int ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 3;};

dup4 = dup{name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `in secondary`; int ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 4;};

an_ent1 = an_ent{att3 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @dup3; att4 ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 42.0;};

END_SCHEMA_DATA;

END_MODEL;

12.2 Отображение простых типов данных из EXPRESS
     
     Отображение простого типа данных из EXPRESS в значение EXPRESS-I задано в таблице 14.
     
     
                                                        Таблица 14 - Отображение простого типа

EXPRESS

EXPRESS-I

BINARY

BinaryValue

BOOLEAN

BooleanValue

INTEGER

IntegerValue

LOGICAL

LogicalValue

NUMBER

IntegerValue

RealValue

REAL

RealValue

STRING

StringValue



     Пример 52 - Отображение простых типов данных
     

EXPRESS

EXPRESS-I

ENTITY base;

е1 = base {

a_binary

: BINARY;

a_binary

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 %0110;

a_boolean

: BOOLEAN;

a_boolean

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 FALSE;

an_integer

: INTEGER;

an_integer

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 12345;

а_lgical

: LOGICAL;

а_logical

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 UNKNOWN;

a_number

: NUMBER;

a_number

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 -PI;

a_real

: REAL;

a_real

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 -9.99e2;

a_string

: STRING;

a_string

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1`Tangles`;

END_ENTITY;

};

12.3 Отображение агрегатных типов данных
     
     Отображение агрегаций из EXPRESS в EXPRESS-I приведено в таблице 15.
     
     
                                                      Таблица 15 - Отображение AGGREGATE

EXPRESS

EXPRESS-I

AGGREGATE

Одно из следующих:

ARRAY

FixedAggr

BAG

DynamicAggr

LIST

DynamicAggr

SET

DynamicAggr


     Отображение "агрегации-агрегации..." производится отображением каждой элементарной агрегации в порядке слева направо. Это значит, что самая левая EXPRESS-агрегация становится самой внешней EXPRESS-I-агрегацией.
     
     Пример 53 - Отображения AGGREGATE
     

EXPRESS

EXPRESS-I

ENTITY aggr;

e1 = aggr {

an_array

: ARRAY [1:3] OF INTEGER;

an_array

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1, 2, 3];

a_bag

: BAG [0:?] OF INTEGER;

a_bag

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (3, 3, 1);

a_list

: LIST [0:2] OF INTEGER;

a_list

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (1);

a_set

: SET [1:?] OF INTEGER;

a_set

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (9, 5, 11);

a_mix

: ARRAY [1:2] OF SET OF INTEGER;

a_mix

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [(1, 2), (6, 5)];

END_ENTITY;

};


     Примечание - EXPRESS ARRAY может иметь значения OPTIONAL. Если значения не определены в экземпляре ARRAY, то эти значения обозначаются в EXPRESS-I конструкцией Nil (то есть символом ?).
     
     
     Пример 54 - Отображение массива sparse
     

EXPRESS

EXPRESS-I

ENTITY sparse;

e1 = sparse {

a1

: ARRAY [1:4] OF OPTIONAL INTEGER;

a1

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1, ?, ?, 4];

a2

: ARRAY [5:8] OF OPTIONAL INTEGER;

a2

ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1, ?, 3, ?];

END_ENTITY;

};

12.4 Отображение определенного типа данных из EXPRESS
     
     Определенный тип данных из EXPRESS отображается в EXPRESS-I одним из трех способов:
     

a) заменой идентификатора EXPRESS-типа значением типа;
     

b) заменой идентификатора EXPRESS-типа поименованным значением типа;
     

c) определением экземпляра типа.
     
     Пример 55 - Отображение определенного типа данных
     

EXPRESS

EXPRESS-I

TYPE dd = ARRAY [1:2] OF INTEGER;

t3 = dd{[6, 8]};

END_TYPE;

ENTITY use_type;

e1 = use_type{attr ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [2, 4];};

attr : dd;

e2 = use_type{attr ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 dd{[4, 6]};};

END_ENTITY;

e3 = use_type{attr ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @t3;};

12.5 Отображение перечисляемого типа из EXPRESS
     
     Тип ENUMERATION из EXPRESS отображается в EXPRESS-I одним из трех способов:
     

a) заменой идентификатора EXPRESS-типа перечисляемым значением;
     

b) заменой идентификатора EXPRESS-типа поименованным перечисляемым значением;
     

c) определением экземпляра перечисления.
     
     Пример 56 - Отображение перечисления
     

EXPRESS

EXPRESS-I

TYPE enum = ENUMERATION OF

        (one, two, three);

t3 = enum{!three};

END_TYPE;

ENTITY use_enum;

e1 = use_enum{attr ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 !one;};

attr : enum;

e2 = use_enum{attr ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 enum{!two};};

END_ENTITY;

e3 = use_enum{attrГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @t3;};


     12.6 Отображение выбираемого типа из EXPRESS
     
     Тип SELECT из EXPRESS отображается в EXPRESS-I одним из трех способов:
     

a) заменой идентификатора EXPRESS-типа выбираемым значением;
     

b) заменой идентификатора EXPRESS-типа поименованным выбираемым значением;
     

c) определением экземпляра выбора.
     
     EXPRESS-тип SELECT необязательно отображать в EXPRESS-I непосредственно. Детали отображения зависят от того, как формируется тип SELECT, и описаны ниже.
     
     Тип SELECT определяет дерево. Корнем дерева является тип SELECT, а ветви из корня соответствуют типам выбора внутри SELECT. Если одним из этих типов является сам тип SELECT, то он порождает новые ветви и т. д. Листья дерева образуются из выборов, не являющихся типами SELECT. В простом случае все листья являются разными типами. В сложном случае по крайней мере два листа имеют один и тот же базовый тип.
     

12.6.1 Случай простого выбора
     
     Тип выступает либо как ссылка на один из типов в списке выбора, либо как вхождение одного из типов в список выбора.
     
     Пример 57 - Отображение простого выбора
     

EXPRESS

EXPRESS-I

ENTITY a;

e1 = а{аа ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 3;};

аа : INTEGER;

e3 = а{аа ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 9;};

END_ENTITY;

ENTITY b;

e2 = b{ab ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 6;};

ab : INTEGER;

e4 = b{ab ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 12;};

END_ENTITY;

TYPE s = SELECT(a, b);

s4 = s{@e4};

END_TYPE;

ENTITY с;

c1 = с{ас ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@s4, @е3, @е2, @e1);};

ас : LIST [1:?] OF s;

с2 = с{ас ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (s{@1}, @е3, @е3);};

END_ENTITY;

12.6.2 Случай сложного выбора
     
     В этом случае листья дерева не могут быть различимы только по их значениям. Это происходит, если:
     

a) листья являются определенными типами данных с идентичными базовыми типами;
     

b) листья являются типами ENUMERATION, множества значений которых на листьях не разобщены. Например, множества [red, green, blue] и [red, amber, green] не разобщены.
     
     Значение экземпляра выбора в этом случае должно быть представлено в EXPRESS-I либо ссылкой на экземпляр, либо поименованным значением.
     
     Пример 58 - Отображение сложного выбора
     

EXPRESS

EXPRESS-I

TYPE size = SELECT

s1 = size{@r1};

(area, radius);

s2 = size{radius{4.3}};

END_TYPE;

TYPE area = REAL;

a1 = агеа{7.5};

END_TYPE;

TYPE radius = REAL;

r1 = radius{27.89};

END_TYPE;

ENTITY circle;

c1 = circle{howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 area{PI};};

howbig : size;

c2 = circlejhowbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 radius{1.0};};

WHERE

с3 = circle{howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @s1;};

howbig > 0.0;

c4 = circle{howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @a1};

END_ENTITY;

c5 = circle{howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @s2};


     12.7 Отображение EXPRESS-константы
     
     EXPRESS-константа (CONSTANT) синтаксически отображается в EXPRESS-I-конструкцию constant_spec. Это значит, что в EXPRESS-I определяются только идентификатор константы и значение, а область значений константы задается в исходном EXPRESS-определении. Кроме того, значение константы должно быть полностью вычисляемым. Определение каждой константы, появляющееся в экземпляре схемы, должно быть объявлено в определении EXPRESS-схемы. Однако не требуется, чтобы каждая EXPRESS-константа присутствовала в экземпляре схемы.
     
     Пример 59 - Отображение констант
     

EXPRESS

EXPRESS-I

CONSTANT

CONSTANT

zero : NUMBER := 0.0;

zero = = 0.0;

thousand : INTEGER := 1000;

thousand = = 1000;

million : INTEGER := thousand**2;

million = = 1000000;

origin : point := point(0.0, 0.0);

origin = = point{x ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 0.0;
                            y ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 0.0;};
     

z_axis : vector := [zero, zero, 1.0];

z_axis == [0.0,0.0,1.0];

a_set : SET OF INTEGER := [1,2,3*3];

a_set == (1, 2, 9);

a_bag : BAG OF INTEGER := [1, 3, 1];

boss : STRING := `sir`;

underling : STRING := `hey, you`;

underling = = `hey, you`;

END_CONSTANT;

END_CONSTANT;


     Заметим, что две константы с именами a_bag и boss не отображены в данном примере.
     
     12.8 Отображение EXPRESS-объекта
     
     EXPRESS-конструкция объекта (ENTITY) синтаксически отображается в EXPRESS-I-конструкцию экземпляра объекта. Единственными внутренними фрагментами ENTITY, отображаемыми в EXPRESS-I, являются атрибуты и операторы SUPERTYPE и SUBTYPE, как показано в таблице 16.
     
     
     Таблица 16 - Обзор отображения ENTITY
     

EXPRESS

EXPRESS-I

Имя ENTITY

EntityDomain

Оператор SUPERTYPE

BequeathesTo

Оператор SUBTYPE

InheritsFrom

Явный атрибут

RequiredAttr или OptionalAttr

Вычисляемый атрибут

DerivedAttr

Инверсный атрибут

InverseAttr

Оператор UNIQUE

Ничего

Оператор WHERE

Ничего


     
     Пример 60 - Отображение простого объекта
     

EXPRESS

EXPRESS-I

ENTITY top;

t1 = top{a ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@eg1, @eg2);};

а : SET OF bot;

t2 = top{a ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@eg2, @eg3);};

END_ENTITY;

t3 = top{a ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 ();};

ENTITY bot;

eg1 = bot{i ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1;

i : INTEGER;

j ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 2;

DERIVE

inv ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@t1);};

j : INTEGER := 2*i;

INVERSE

eg2 = bot{i ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 276;

inv : BAG [1:?] OF top FOR a;

j ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 552;

UNIQUE

inv ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@t1, @t2);};

u1 : i;

WHERE

eg3 = bat{i ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 9876;

w1 : i > 0;

j;

END_ENTITY;

inv ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 (@t2);};


     12.9 Отображение атрибутов EXPRESS-объекта
     
     EXPRESS-I-атрибуты должны появляться в том же порядке, что и в соответствующем ЕХPRESS-объекте. Каждый EXPRESS-атрибут должен иметь соответствующий EXPRESS-I-атрибут.
     
     Значение EXPRESS-I-атрибута должно быть совместимо с областью значений EXPRESS-определения.
     

12.9.1 Явный атрибут
     
     Явные EXPRESS-атрибуты отображаются непосредственно в EXPRESS-I-атрибуты. Описание EXPRESS-атрибута повторяется в EXPRESS-I, за исключением того, что описание типа атрибута (то есть справа от двоеточия) заменяется значением типа атрибута, а двоеточие заменяется на ->.
     
     Значение может быть представлено простым значением, ссылкой на экземпляр предмета (то есть ссылкой на экземпляр объекта, типа, перечисления или выбора), значением перечисления, поименованным значением, ссылкой на константу, ссылкой на параметр или агрегатами данных значений. Эти значения более детально обсуждены ниже.
     
     В случае, если явный атрибут является необязательным (OPTIONAL), значением атрибута может быть также Nil, показывающее, что значение не представлено.
     
     Пример 61 - Отображение необязательного атрибута
     

EXPRESS

EXPRESS-I

ENTITY opt;

opt1 = opt{req ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `Opt_att given`;

req : STRING;

opt_att ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 5.0;};

opt_att : OPTIONAL REAL;

END_ENTITY;

opt2 = opt{req ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `Opt_att not given`;

opt_att ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 ?;};


     Примечание - В EXPRESS-I явный атрибут может иметь значение Nil; в этом случае экземпляр не соответствует EXPRESS-определению.
     
     

12.9.2 Вычисляемые и инверсные атрибуты
     
     Вычисляемые EXPRESS-атрибуты отображаются в EXPRESS-I аналогично явным атрибутам, за исключением того, что двоеточие заменяется знаком <-.
     
     Инверсные EXPRESS-атрибуты отображаются в EXPRESS-I аналогично явным атрибутам, за исключением того, что двоеточие заменяется знаком <-, а значением атрибута является динамическая агрегация ссылок на экземпляр объекта.
     
     Не требуется, чтобы в EXPRESS-I присутствовали значения вычисляемых или инверсных атрибутов, хотя имена ролей присутствовать должны.
     
     Примечания
     

1 По определению, значение вычисляемого атрибута может быть определено по значениям явных атрибутов. Аналогично, значение инверсного атрибута экземпляра объекта может быть определено по значениям атрибутов экземпляров других объектов, которые ссылаются на экземпляр объекта с данным инверсным атрибутом. Таким образом, по крайней мере, концептуально, значения как вычисляемого, так и инверсного атрибутов являются вычислимыми свойствами.
     

2 С другой стороны, значения явных атрибутов являются базовыми входными данными, не вычислимыми внутри системы EXPRESS-I.
     

3 Символы -> и <- были выбраны для индикации этой разницы в качестве значений атрибута.
     
     

12.9.3 Атрибут с простой областью значений
     
     Если областью значений EXPRESS-атрибута является простой тип данных, это должно быть отображено как значение EXPRESS-I, принадлежащее простой области значений. Обычно это является простым значением, но может быть ссылкой на константу или параметр, областями значений которых являются простые области значений.
     
     Правила и ограничения
     

a) Ссылка на константу должна использоваться только в случае, если и экземпляр объекта, и экземпляр константы находятся внутри одного и того же экземпляра данных схемы.
     

b) Ссылка на параметр должна использоваться только в случае, если формальный параметр и экземпляр объекта находятся внутри одного и того же контекста (CONTEXT).
     

c) Ссылка на параметр не должна использоваться внутри области действия MODEL.
     

Пример 62 - Отображение простого значения в качестве атрибута
     
     Пусть дано EXPRESS-представление в виде:
     

SCHEMA a_schema;

CONSTANT

const : INTEGER:=275;

END_CONSTANT;

ENTITY an_ent;

aa : INTEGER;

END_ENTITY;

END_SCHEMA;

Тогда EXPRESS-I-представление может иметь вид:
     

MODEL some_data;

SCHEMA_DATA a_schema;

CONSTANT

const = = 275;

END_CONSTANT;

a1 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1;};

a2 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 const;};

a3 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 21;};

a4 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 987;};

END_SCHEMA_DATA;

END_MODEL


     Это можно представить и по-другому, через контекст:
     

CONTEXT a_context;

PARAMETER

parm1 : INTEGER := 21;

parm2 : INTEGER := 987;

END_PARAMETER;

SCHEMA_DATA a_schema;

CONSTANT

const = = 275;

END_CONSTANT;

a1 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1;};

a2 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 const;};

a3 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 param1;};

a4 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 param2;};

END_SCHEMA_DATA;

END_ CONTEXT;

12.9.4 Атрибут с областью значений объекта
     
     Если областью значений EXPRESS-атрибута является объект, то атрибут должен отображаться в значение EXPRESS-I, принадлежащие к области значений объекта. Обычно это является ссылкой на экземпляр объекта, но может быть ссылкой на константу или на параметр, областью значений которого является область значений объекта.
     
     Правила и ограничения
     

a) Ссылка на константу может использоваться только в случае, если экземпляр объекта и экземпляр константы находятся в одном и том же экземпляре данных схемы.
     

b) Ссылка на параметр может использоваться только в случае, если формальный параметр и экземпляр объекта находятся в одном и том же контексте (CONTEXT).
     

c) Ссылка на параметр не должна использоваться в области применения модели (MODEL).
     

d) Ни ссылка на параметр, ни ссылка на константу не должны использоваться для инверсного атрибута.
     
     Пример 63 - Отображение объекта в качестве атрибута
     
     Пусть EXPRESS-представление задано в виде:
     

SCHEMA a_schema;

CONSTANT

const : an_ent := an_ent(275);

END_CONSTANT;

ENTITY an_ent;

aa : INTEGER;

END_ENTITY;

ENTITY bdyn;

ab : an_ent;

END_ENTITY;

END_SCHEMA;


     Тогда EXPRESS-I-представление может иметь вид:
     

CONTEXT a_context;

PARAMETER

param : an_ent := an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 42;};

END_PARAMETER;

SCHEMA_DATA a_schema;

CONSTANT

const == an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 275;};

END_CONSTANT;

a1 = an_ent{aa ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1;};

b1 = bdyn{ab ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @a1;};

b2 = bdyn{ab ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 const;};

b3 = bdyn{ab ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 param;};

END_SCHEMA_DATA;

END_CONTEXT;

12.9.5 Атрибут с областью значений типа, выбора или перечисления
     
     Если областью значений EXPRESS-атрибута является определенный тип данных, типы SELECT или ENUMERATION, то атрибут должен отображаться как значение EXPRESS-I, принадлежащее к соответствующей области значений. Обычно это либо значение (для определенного типа данных или перечисления), либо ссылка на экземпляр объекта (для выбора), но может быть и ссылкой на экземпляр предмета, поименованным значением, либо ссылкой на константу или параметр, области значений которых совместимы с областью значений атрибута.
     
     Правила и ограничения
     

a) Ссылка на константу может использоваться только в случае, если экземпляр объекта и экземпляр константы находятся в одном и том же экземпляре данных схемы.
     

b) Ссылка на параметр может использоваться только в случае, если формальный параметр и экземпляр объекта находятся в одном и том же контексте (CONTEXT).
     

c) Ссылка на параметр не должна использоваться внутри области применения модели (MODEL).
     

d) Ссылка на экземпляр предмета или поименованное значение должны использоваться, если фактическая область значений не однозначно определяется из значения.
     
     Пример 64 - Отображение типов в качестве атрибутов
     
     Пусть EXPRESS-представление задано в виде:
     

SCHEMA a_schema;

CONSTANT

zero : REAL := 0.0;

END_CONSTANT;

TYPE size = SELECT(area, radius); END_TYPE;

TYPE area = REAL; END_TYPE;

TYPE radius = REAL; END_TYPE;

TYPE vector = ARRAY [1:3] OF REAL; END_TYPE;

TYPE color = ENUMERATION OF (red, blue, green); END_TYPE;

ENTITY point;

x, y, z, : REAL;

END_ENTITY;

ENTITY circle;

center : point;

normal : vector;

howbig: size;

shade : color;

END_ENTITY;

END_SCHEMA;


     Тогда EXPRESS-I-представление может иметь вид:
     

SCHEMA_DATA a_schema;

CONSTANT

zero = = 0. 0;

END_CONSTANT;

unit_rad = size{radius {1.0}};

x_axis = vector{[1.0, zero, zero ]};

z_axis = vector{[zero, zero, 1.0]};

x_color = color{!red};

p0 = point{x ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 zero; у ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 zero, z ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 zero;};

p1 = point{x ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.0; у ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.0, z ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.0;};

c1 = circle{center ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @p0;

normal ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @x_axis;

howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 area{PI};

shade ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @x_color;);

c2 = circle{center ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @p0;

normal ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1.0, 2.0, 3.0];

howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 radius{33.0};

shade ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 !blue;};

c3 = circle (center ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @p1;

normal ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @z_axis;

howbig ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 @unit_rad;

shade ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 !blue;};

END_SCHEMA_DATA;


     12.10 Отображение супертипов и подтипов
     
     Имеется взаимно однозначное соответствие между супертипами и подтипами EXPRESS и супертипами и подтипами EXPRESS-I (см. таблицу 17).
     
     
     Таблица 17- Обзор отображения SUPERTYPE и SUBTYPE
     

EXPRESS

EXPRESS-I

SUPERTYPE OF (...)

BequeathesTo

SUBTYPE OF (...)

InheritsFrom


     
     В EXPRESS-I наполнение объекта, являющегося листом дерева супертипов/подтипов, требует наполнения всех его супертипов. Дерево экземпляра супертипов EXPRESS-I должно быть всегда выписано полностью.
     
     Пример 65 - Рассмотрим ниже фрагмент дерева EXPRESS и конкретный объект :
     


ENTITY parent SUBTYPE OF (grandparent)

SUPERTYPE OF (me ANDOR sibbing );

ENTITY me SUBTYPE OF (parent)

SUPERTYPE OF (elder ANDOR younger);

ENTITY elder SUBTYPE OF (me)

SUPERTYPE OF …


     Объект наследует любые атрибуты, которые могут иметь его супертипы (то есть parent, grandparent и т.д.). В свою очередь, завещает как свои наследуемые атрибуты, так и свои собственные атрибуты своим подтипам (то есть elder, younger и их последующих потомков).
     
     В этом дереве экземпляр может также иметь либо не иметь sibling (брата). В общем дереве возможно существование многих отношений, не находящихся на прямой линии предка и потомка.
     
     Для данного подраздела определим:
     
     экземпляр прямого дерева (direct tree instance): Экземпляр однокоренного дерева подтипов/супертипов, имеющего единственный путь, при незаполненных ветвях, от корня к единственному листу;
     
     экземпляр общего дерева (general tree instance): Экземпляр дерева подтипов/супертипов, не являющийся экземпляром прямого дерева.
     
     Дерево EXPRESS, в котором все отношения SUPERTYPE являются ONEOF и ни один из SUBTYPE не имеет множественных SUPERTYPE, всегда является прямым деревом.
     
     Наполнение дерева, включающего отношения ANDOR, будет прямым, если все отношения ANDOR наполняются как отношения ONEOF; в противном случае по крайней мере некоторая часть наполняемого дерева не будет прямой. Наполнение отношений AND всегда дает общее дерево. Наполнение объекта, имеющего множественные SUPERTYPE, всегда дает общее дерево.
     
     В экземпляре прямого дерева должен быть представлен полный путь экземпляра от корня к листу.
     
     Следующий набор правил определяет отображение общего дерева:
     

a) полный путь экземпляра от корня к месту, включающий боковые ветви, всегда должен наполняться в соответствии с приведенными ниже правилами;
     

b) если наполняемый объект (ENTITY) является SUBTYPE для одного или более объектов, то каждый из SUPERTYPE объектов должен наполняться;
     

c) если наполняемый объект (ENTITY) является SUPERTYPE для одного или более объектов (то есть имеется отношение AND либо имеется отношение ANDOR, которое наполняется, скорее, как AND, нежели как ONEOF), то SUPERTYPE и все его одновременно существующие SUBTYPE должны наполняться;
     

d) если SUPERTYPE объекта (ENTITY) помечен как ABSTRACT, то экземпляр этого объекта будет иметь по крайней мере один экземпляр SUBTYPE. Если SUPERTYPE не помечен как ABSTRACT, то он может иметь либо не иметь экземпляров SUBTYPE, в зависимости от конкретных данных.
     
     Примечание - Упорядочение экземпляров объектов в дереве подтипов/супертипов не имеет значения.
     
     
     Пример 66 - Отображение дерева
     
     Пусть дано следующее EXPRESS-представление:
          

ENTITY root;
     

g_name : STRING;

END_ENTITY;
                                

ENTITY node     
                             

SUBTYPE OF (root);

p_name : STRING;         
                               

END_ENTITY;    
                                              

ENTITY leaf1

SUBTYPE OF (node);

my_name : STRING;

END_ENTITY;

ENTITY Ieaf2

SUBTYPE OF (node);

s_name : STRING;

END_ENTITY;


     Тогда двумя примерами экземпляров этой структуры могут быть:
     

ЭКЗЕМПЛЯР 1

ЭКЗЕМПЛЯР 2

c1[1] = root{

c2[1] = root{

g_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `root`;

g_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `base`;

SUPOF(@2);};

SUPOF(@2);};

c1[2] = node{

c2[2] = node{

SUBOF(@1);

SUBOF(@1);

p_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `trunk`;

p_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `branch`;

SUPOF(@3, @4);};

SUPOF(@3);};

c1[3] = leaf1{

c2[3] = leaf1{

SUBOF(@2);

SUBOF(@2);

my_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `self`;};

my_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `twig`;};

c1[4] = Ieaf2{

SUBOF(@2);

s_name ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 `sibling`;};


     Экземпляр, помеченный 1, является экземпляром общего дерева, а экземпляр, помеченный 2, - экземпляром прямого дерева.
     

12.10.1 Отображение переобъявляемых атрибутов
     
     В подтипе EXPRESS есть возможность переобъявлять атрибуты, наследуемые от супертипа. В EXPRESS-I переобъявление выступает как ограничение значения атрибута. Переобъявляемые атрибуты не должны именоваться внутри экземпляра подтипа.
     
     Пример 67 - В примере объект real_point является подтипом point и переобъявляет его атрибуты типа NUMBER на тип REAL. Имеются два соответствующих экземпляра EXPRESS-I. Первый (то есть р1) является экземпляром простого объекта только супертипа и отображает значения атрибутов как тип NUMBER. Второй (то есть р2) является экземпляром сложного объекта, где р2[1] является компонентом супертипа, а р2[2] - компонентом подтипа. В подтипе не показаны атрибуты, но значения, отражаемые в супертипе, ограничены типом REAL.
     
     

EXPRESS

EXPRESS-I

ENTITY point;

p1 = point{x ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1;
                     y ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 2;};

x : NUMBER;

у : NUMBER;

END_ENTITY;

p2[1] = point{x ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 1.5;
                       y ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 2,7;

ENTITY real_point;

SUPOF(@2);};

SUBTYPE OF (point);

SELF\point.x : REAL

p2[2] = real_point{SUBOF(@1);};

SELF\point.y : REAL;

END_ENTITY;


     В случае переобъявления наследуемого явного атрибута на вычисляемый атрибут переобъявленный атрибут должен выступать в супертипе как вычисляемый атрибут, когда бы ни наполнялся переобъявляющий подтип.
     
     Пример 68 - Следующее EXPRESS-представление объявляет circle как окружность, определяемую центром и радиусом. Объект circle_2pt является разновидностью circle, определяемой центром и точкой на окружности circle. Наследуемый атрибут radius переобъявляется как вычисляемый атрибут, значение которого задается расстоянием между двумя точками.
        

ENTITY circle;
     

centre : point;

radius : REAL;
                                     

END_ENTITY;    
                             

ENTITY circle_2pt

SUBTYPE OF (circle);           
                               

circum_pnt : point;    
                                              

DERIVE

SELF\circle.radius : REAL := distance(SELF\circle.center, circum_pnt);

END_ENTITY;

В EXPRESS-I-представлении экземплярами circle и circle_2pt могут быть:

c1 = circle{centre ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1.0, 0.0];

radius ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 2.0;};

c2pt[21] = circle{centre ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1.0, 0.0];

radius ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 2.0;

SUPOF (@5);};

c2pt[5] = circle_2pt{SUBOF(@21);

circum_pnt ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1 [1.0, 2.0];};


     

ПРИЛОЖЕНИЕ А (обязательное).Описание синтаксиса EXPRESS-I

ПРИЛОЖЕНИЕ А
(обязательное)


     В настоящем приложении определены лексические элементы языка и грамматические правила, которым эти элементы должны подчиняться.
     
     Примечания
     

1 Многие элементы языка EXPRESS доступны для использования при определении контрольных примеров. Недоступные для использования элементы EXPRESS касаются определения EXPRESS-схем, интерфейсов схем и правил. Для удобства читателя элементы EXPRESS приведены в настоящем приложении со справочными примечаниями. Для полноты описания языка также в виде комментариев приведены правила, относящиеся к недоступным для использования элементам EXPRESS.
     

2 В качестве дальнейшего ориентира в конструкциях, относящиеся только к EXPRESS-I, подчеркивание не используется - каждое имя в конструкции EXPRESS-I начинается с заглавной буквы. Например, DerivedAttr является конструкцией EXPRESS-I, тогда как derived_attr является конструкцией EXPRESS. Кроме того, исходная нумерация правил EXPRESS оставлена без изменений. Специфические правила EXPRESS-I пронумерованы с добавлением символа `i'.
     

3 Приведенное определение синтаксиса, понимаемое буквально, будет вызывать неодназначное толкование у анализаторов. Оно написано для представления информации, относящейся к использованию идентификаторов. Интерпретируемые идентификаторы определяют лексемы, являющиеся ссылками на объявляемые идентификаторы, и поэтому не разрешены в simple_id. Это требует от разработчика синтаксического анализатора представления таблицы поиска или аналогичной конструкции, позволяющей разрешать ссылку на идентификатор и возвращать лексему требуемой ссылки контролеру грамматических правил. Этот подход использован для того, чтобы помочь разработчикам синтаксических анализаторов в устранении неоднозначностей, относящихся к использованию идентификаторов.
     
     

А.1 Лексемы
     
     Последующие правила определяют лексемы, используемые в EXPRESS-I. Внутри текста, соответствующего отдельному синтаксическому правилу следующих подразделов и разделов: A1.1, A1.2, А.2 и A3, не должны присутствовать пробелы или примечания, за исключением случаев, оговоренных в синтаксических правилах.
     

А.1.1 Ключевые слова
     

В данном подразделе приведены правила, используемые для представления ключевых слов EXPRESS-I.
     
     Примечание - В данном подразделе придерживаются типографского соглашения, по которому каждое ключевое слово представляется синтаксическим правилом, левой частью которого является данное ключевое слово, записанное заглавными буквами. Правило 15i является исключением, обусловленным необходимостью избежать пересечения с правилом 251. Так как строковые литералы в синтаксических правилах не чувствительны к типу буквы, ключевые слова могут быть записаны в исходном коде на EXPRESS-I заглавными, строчными либо смешанного (того и другого) типа буквами.
     
              

0i

CALL = 'call' .

1i

CRITERIA = 'criteria' .

2i

END_CALL = 'end_call' .

3i

END_CRITERIA = 'end_criteria' .

4i

END_NOTES = 'end_notes' .

5i

END_OBJECTIVE = 'end_objective' .

6i

END_PARAMETER = 'end_parameter' .

7i

END_PURPOSE = 'end_purpose' .

END_REALIZATION = 'end_realization' .

9i

END_REFERENCES = 'end_references' .


     

10i

END_SCHEMA_DATA = 'end_schema_data' .

11i

END_TEST_CASE = 'end_test_case' .

12i

IMPORT = 'import' .

13i

NOTES = 'notes' .

14i

OBJECTIVE = 'objective' .

15i

PARAMETER = 'parameter' .

16i

PURPOSE = 'purpose' .

17i

REALIZATION = 'realization' .

18i

REFERENCES = 'references' .

19i

SCHEMA_DATA = 'schema_data' .

20i

SUBOF = 'subof' .

21i

SUPOF = 'supof' .

22i

TEST_CASE = 'test_case' .

23i

USING = 'using' .

24i

WITH = 'with' .


     Примечание - Следующие EXPRESS-правила от 0 до 118, за исключением 8, 37, 38, 49, 84, 89, 90 и 110, используются в EXPRESS-I.
     
              

0

ABS = 'abs' .

1

ABSTRACT = 'abstract' .

2

ACOS = 'acos' .

3

AGGREGATE = 'aggregate' .

4

ALIAS = 'alias' .

5

AND = 'and' .

6

ANDOR = 'andor' .

7

ARRAY = 'array' .

<

8 AS = 'as' . >

9

ASIN = 'asin' .

10

ATAN = 'atan' .

11

BAG = 'bag' .

12

BEGIN = 'begin' .

13

BINARY = 'binary' .

14

BLENGTH = 'blength' .

15

BOOLEAN = 'boolean' .

16

BY = 'by' .

17

CASE = 'case' .

18

CONSTANT = 'constant' .

19

CONST_E = 'const_e' .

20

CONTEXT = 'context' .

21

COS = 'cos' .

22

DERIVE = 'derive' .

23

DIV = 'div' .

24

ELSE = 'else' .

25

END = 'end' .

26

END_ALIAS = 'end_alias' .

27

END_CASE = 'end_case' .

28

END_CONSTANT = 'end_constant' .

29

END_CONTEXT = 'end_context' .

30

END_ENTITY = 'end_entity' .

31

END_FUNCTION = 'end function' .

32

END_IF = 'end_if' .

33

END_LOCAL = 'end_local' .

34

END_MODEL = 'end_model' .

35

END_PROCEDURE = 'end_procedure' .

36

END_REPEAT = 'end_repeat' .

<

37 END_RULE = 'end_rule' . >

<

38 END_SCHEMA = 'end_schema' . >

39

END_TYPE = 'end_type' .

40

ENTITY = 'entity' .

41

ENUMERATION = 'enumeration' .

42

ESCAPE = 'escape' .

43

EXISTS = 'exists' .

44

EXP = 'exp' .

45

FALSE = 'false' .

46

FIXED = 'fixed' .

47

FOR = 'for' .

48

FORMAT = 'format' .

<

49 FROM = 'from' . >

50

FUNCTION = 'function' .

51

GENERIC = 'generic' .

52

HIBOUND = 'hibound' .

53

HIINDEX = 'hiindex' .

54

IF = 'if' .

55

IN = 'in' .

56

INSERT = 'insert' .

57

INTEGER = 'integer' .

58

INVERSE = 'inverse' .

59

LENGTH = 'length' .

60

LIKE = 'like' .

61

LIST = 'list' .

62

LOBOUND ='`lobound' .


     
 

63

LOCAL = 'local' .

64

LOG = 'log' .

65

LOG10 = 'log10' .

66

LOG2 = 'Iog2' .

67

LOGICAL = 'logical' .

68

LOINDEX = 'loindex' .

69

MOD = 'mod' .


     

70

MODEL = 'model' .

71

NOT = 'not' .

72

NUMBER = 'number' .

73

NVL = 'nvl' .

74

ODD = 'odd' .

75

OF = 'of' .

76

ONEOF = 'oneof'.

77

OPTIONAL = 'optional' .

78

OR = 'or' .

79

OTHERWISE = 'otherwise' .

80

PI = 'pi' .

81

PROCEDURE = 'procedure' .

82

QUERY = 'query' .

83

REAL = 'real' .

<

84 REFERENCE = 'reference' . >

85

REMOVE = 'remove' .

86

REPEAT = 'repeat' .

87

RETURN = 'return' .

88

ROLESOF = 'rolesof' .

<

89 RULE = 'rule' . >

<

90 SCHEMA = 'schema' . >

91

SELECT = 'select' .

92

SELF = 'self' .

93

SET = 'set' .

94

SIN = 'sin' .

95

SIZEOF = 'sizeof' .

96

SKIP = 'skip' .

97

SQRT = 'sqrt' .

98

STRING = 'string' .

99

SUBTYPE = 'subtype' .


              

100

SUPERTYPE = 'supertype' .

101

TAN = 'tan' .

102

THEN = 'then' .

103

ТО = 'to' .

104

TRUE = 'true' .

105

TYPE = 'type' .

106

TYPEOF = 'typeof' .

107

UNIQUE = 'unique' .

108

UNKNOWN = 'unknown' .

109

UNTIL = 'until' .

<

110 USE = 'use' . >

111

USEDIN = 'usedin' .

112

VALUE = 'value' .

113

VALUE_IN = 'value_in' .

114

VALUE_UNIQUE = 'value_unique' .

115

VAR = 'var' .

116

WHERE = 'where' .

117

WHILE = 'while' .

118

XOR = 'xor' .

A.1.2. Классы символов
     
     Следующие правила определяют различные классы символов, используемые при конструировании лексем в А2.
     
     Примечание - Последующие правила EXPRESS от 119 до 135 используются в EXPRESS-I.
              

119

bit = '0' | '1' .


     

120

digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' .

121

digits = digit { digit } .

122

encoded_character = octet octet octet octet .

123

hex_digit = digit | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' .

124

letter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' |
     
             '
m' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' |
     
     
       'y' | 'z' .  

125

lparen_not_star = '(' not_star .

126

not_lparen_star = not_paren_star | ')' .

127

not_paren_star = letter | digit | not_paren_star_special .

128

not_paren_star_quote_special = '!' | '"' | '#' | '$' | '%' | '&' | '+' | ',' |
     
                                                             
'-' | '.' | '/' | ':' | ';' | '<' | '=' | '>' |
     
                                                             
'?' | '@' | '[' | '\' | ']' | '^' | '_' | '''|
     
                                                             
'{' | '|' | '}' | '~' .  

129

not_paren_star_special = not_paren_star_quote_special | '”' .


     

130

not_quote = not_paren_star_quote_special | letter | digit | '(' | ')' | '*' .
     
 

131

not_rparen = not_paren_star | '*' | '(' .
     
 

132

not_star = not_paren_star | '(' | ')' .
     
 

133

octet = hex_digit hex_digit .
     
 

134

special = not_paren_star_quote_special | '(' I ')' I '*' I '"' .
     
 

135

star_not_rparen = '*' not_rparen .

A.2 Лексические элементы
     
     Следующие правила устанавливают, как определенные комбинации символов интерпретируются в качестве лексических элементов языка.
               

25i

BinaryValue = binary_literal .
     
 

26i

Description = { \a | \s | \n } .
     
 

27i

EncodedStringValue = '”' { encoded_character | \n } '”' .
     
 

28i

EnumerationValue = '!' simple_id .
     
 

29i

IntegerValue = [ sign ] integer_literal .

    
     
 

30i

Nil = '?' .
     
 

31i

SignedMathConstant = [ sign ] MathConstant .
     
 

32i

SignedRealLiteral = [ sign ] real_literal .
     
 

33i

SimpleStringValue = \q { ( \q \q ) | not_quote | \s | \o | \n } \q .


     Примечание - Следующие EXPRESS-правила 136-141 используются в EXPRESS-I.
          

136

binary_literal = '%' bit { bit } .
     
 

137

encoded_string_literal = '”' encoded_character { encoded_character } '”' .
     
 

138

integer_literal = digits .
     
 

139

real_literal = digits '.' [ digits ] [ 'e' [ sign ] digits ] .

140

simple_id = letter { letter | digit | '_' } .
     
 

141

simple_string_literal = \q { ( \q \q ) | not_quote | \s | \x8 | \x9 | \xA
  
                                           
| \xB | \xC | \xD } \q .      

A.2.1 Примечания
     
     Следующие правила устанавливают синтаксис примечаний в EXPRESS-I.
     
     Примечание - Следующие EXPRESS-правила 142-144 используются в EXPRESS-I.
     
          

142

embedded_remark = '(*' { not_lparen_star | lparen_not_star |
     
               
                        star_not_lparen | embedded_remark } '*)' .
     
 

143

remark = embedded_remark | tail_remark .
     
 

144

tail_remark = '--' { \a | \s | \x8 | \x9 | \xA | \xB | \xC | \xD } \n .

A.3 Интерпретируемые идентификаторы
     
     Следующие правила определяют идентификаторы, наделенные некоторым специальным смыслом (например, объявленные где-либо как типы, функции и т. д.).
     
     Примечание - Предполагается, что идентификаторы, соответствующие этим синтаксическим правилам, известны реализации. Каким образом реализация получает эту информацию, не является предметом определения языка. Одним из методов получения этой информации являются многопроходный анализ: первый проход собирает идентификаторы из их объявлений, так что последующие проходы позволяют отличать, например, variable_ref от function_ref.
          

34i

CompIexEntitylnstanceRef = '@' SimpleEntitylnstanceld .
     
 

35i

ConstantRef = Constantld .
     
 

36i

ContextRef = Contextld .
     
 

37i

EntityInstanceRef = CompIexEntitylnstanceRef | SimpleEntityInstanceRef .
     
 

38i

EnumerationlnstanceRef = '@' EnumerationInstanceld .
     
 

39i

ParameterRef = Parameterld .

40i

SelectlnstanceRef = '@' Selectlnstanceld .
     
 

41i

SimplelnstanceRef = '@' Simplelnstanceld .
     
 

42i

SimpleEntitylnstanceRef = '@' SimpleEntitylnstanceld .
     
 

43i

SupSubRef = '@' SupSubld .
     
 

44i

TypelnstanceRef = '@' Typelnstanceld .


     Примечание - Следующие EXPRESS-правила 145-155 используются в EXPRESS-I.
          

145

attribute_ref = attribute_id .
     
 

146

constant_ref = constant_id .
     
 

147

entity_ref = entity_id .
     
 

148

enumeration_ref = enumeration_id .
     
 

149

function_ref = function_id .

150

parameter_ref = parameter_id .
     
 

151

procedure_ref = procedure_id .
     
 

152

schema_ref = schema_id .
     
 

153

type_label_ref = type_label_id .
     
 

154

type_ref = type_id .
     
 

155

variable_ref = variable_id .

A.4 Грамматические правила
     
     Следующие правила устанавливают, как описанные выше лексические элементы можно комбинировать в конструкции EXPRESS-I. Пробелы и (или) примечания могут появляться между любыми двумя лексемами этих правил. Первичным синтаксическим правилом для EXPRESS-I служит ExpressISyntax.
               

45i

AcualParameter = ParametrRef ':=' ParmValue ';' .
     
 

46i

AggregationValue = DynamicAggr | FixedAggr .
     
 

47i

Assignment = variable_id ':=' SelectablelnstanceRef ';' .
     
 

48i

BaseValue = EnumerationValue | SimpIeValue .
     
 

49i

BequeathesTo = SUPOF DynamicSupSubRefList ';' .

50i

BooleanValue = TRUE | FALSE .
     
 

51i

ComplexEntitylnstanceld = SimpIeEntitylnstanceld '[' SupSubld ']' .
     
 

52i

ConstantBlock = CONSTANT { ConstantSpec } END_CONSTANT ';' .
     
 

53i

Constantld = constant_ref .
     
 

54i

ConstantSpec = Constantld '= =' ConstantValue ';' .
     
 

55i

ConstantValue = AggregationValue | BaseValue | EntitylnstanceValue |
     
     
                        NamedlnstanceValue | SelectValue | TypeValue .
     
 

56i

ContextBlock = CONTEXT Contextld ';' ContextBody END_CONTEXT ';' .
     
 

57i

ContextBody = { SchemaReferenceSpec } [ FormalParameterBlock ]
     
     
                     { SchemalnstanceBlock | SupportAlgorithm } .
     
 

58i

Contextld = simple_id .

59i

DerattValue = AggregationValue | BaseValue | EntitylnstanceRef |
     
     
                    EntitylnstanceValue | EnumerationlnstanceValue |
     
     
                    TypelnstanceRef | TypeInstanceValue | TypeValue .  

60i

DerivedAttr = RoleName [ 'ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1' DerattValue ] ';' .
     
 

61i

DynamicAggr = '(' [ DynamicList ] ')' .  
     
 

62i

DynamicEntityRefList = '(' [ EntityRefList ] ')' .
     
 

63i

DynamicList = DynamicMember { ',' DynamicMember } .
     
 

64i

DynamicMember = AggregationValue | ConstantValue | DerattValue |
     

    
                                          ParmValue | ReqattValue | TypeValue .
     
 

65i

DynamicSupSubList = '(' [ SupSubRef { ',' SupSubRef }]')'.
     
 

66i

EntityDomain = [ Schemald '.' ] Entityld .
     
 

67i

Entityld = entity_ref .
     
 

68i

Entitylnstance = Entitylnstanceld '=' EntitylnstanceValue ';' .

69i

Entitylnstanceld = ComplexEntitylnstanceld | SimpIeEntitylnstanceld .

70i

EntitylnstanceValue = EntityDomain '{'
     
                                        
[ InheritsFrom ]
     
                                        { ExplicitAttr }
     
                                        { DerivedAttr }
     
                                        { InverseAttr }
     
                                        [ BequeathesTo ] '}' .

     
 

71i

EntityRefList = EntitylnstanceRef { ',' EntitylnstanceRef } .
     
 

72i

EnumerationDomain = [ Schemald '.' ] Enumerationld .
     
 

73i

Enumerationld = type_ref .
     
 

74i

EnumerationInstance = Enumerationlnstanceld '='
     
     
                                      EnumerationlnstanceValue ';' .
     
 

75i

Enumerationlnstanceld = simple_id .
     
 

76i

EnumerationlnstanceValue = EnumerationDomain
     
                                                      
'{' EnumerationValue '}' .
     
 

77i

ExplicitAttr = RequiredAttr | OptionalAttr .
     
 

78i

ExpressISyntax = { TestCaseBIock } { ContextBlock } { ModelBIock }
     
                                
{ SchemalnstanceBlock } { Objectlnstance } .  

79i

FixedAggr = '[' FixedList ']' .

80i

FixedList = FixedMember { ',' FixedMember } .
     
 

81i

FixedMember = DynamicMember | Nil .
     
 

82i

FormalParameter = Parameterld ':' parameter_type
     
                                                
[ ':=' ParmValueDefault ] ';' .
     
 

83i

FormalParameterBlock = PARAMETERi { FormalParameter }
     
     
                                         END_PARAMETER ';' .
     
 

84i

ImportSpec = IMPORT '(' { Assignment } ')' ';' .
     
 

85i

InheritsFrom = SUBOF DynamicSupSubRefList ';' .
     
 

86i

InvattValue = DynamicEntityRefList .
     
 

87i

InverseAttr = RoleName [ 'ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-1' InvattValue ] ';' .
     
 

88i

LogicalValue = logica_literal .

89i

MathConstant = CONST_E | PI .

90i

ModelBlock = MODEL Modelld ';' ModelBody END_MODEL ';' .
     
 

91i

ModelBody = { SchemalnstanceBlock } .
     
 

92i

Modelld = simple_id .
     
 

93i

NamedlnstanceValue = EnumerationlnstanceValue | SelectlnstanceValue |
     
                                            
TypelnstanceValue .
     
 

94i

NumberValue = IntegerValue | RealValue .
     
 

95i

Objectlnstance = Entitylnstance | Enumerationlnstance | Selectlnstance |
     
                                
Typelnstance | Simplelnstance .
     
 

96i

ObjectlnstanceRef = EntitylnstanceRef | EnumerationlnstanceRef |
     
                                      
SelectlnstanceRef | TypelnstanceRef |
     
                                      SimplelnstanceRef .

     
 

97i

ObjectiveBlock = OBJECTIVE { TestPurpose } { TestReference }
     

  
                            { TestCriteria } { TestNotes } END_OBJECTIVE ';'.  

98i

OptattValue = ReqattValue | Nil .
     
 

99i

OptionalAttr = RoleName '->' OptattValue ';' .

100i

Parameterld = simple_id .
     
 

101i

ParameterSpec = WITH `(` { ActualParameter } ')' ';' .  
     
 

102i

ParmValue = ObjectlnstanceRef | expression .
     
 

103i

ParmValueDefault = AggregationValue | BaseValue | ConstantRef |
     
                                      
Entitylnstance Value | NamedlnstanceValue |
      
                                      
ObjectlnstanceRef | SelectValue | TypeValue |
     
                                      
expression .
     
 

104i

RealValue = SignedMathConstant | SignedRealLiteral .
     
 

105i

ReqattValue = AggregationValue | BaseValue | ConstantRef |
  
  
    
                      NamedlnstanceValue | ObjectlnstanceRef | ParameterRef |
     
     
                     SelectValue | TypeValue | .
     
 

106i

RequiredAttr = RoleName '->' ( ReqattValue | Nil ) ';' /
     
 

107i

RoleName = attribute_ref .

108i

Schemald = schema_ref .
     
 

109i

SchemalnstanceBlok = SCHEMA_DATA Schemald ';'
                         
                                           [ SchemalnstanceBody ] END_SCHEMA_DATA ';' .
      

110i

SchemalnstanceBody = [ ConstantBlock ] { Objectlnstance } .
     
 

111i

SchemaReferences = SchemaReferenceSpec { SchemaReferenceSpec } .
     
 

112i

SchemaReferenceSpec = WITH schema_ref [ USING '(' resource_ref
     
                                                
{ ',' resource_ref } ')' ] ';' .
     
 

113i

SelectablelnstanceRef = EntitylnstanceRef | EnumerationlnstanceRef |
     
     
                                        SelectlnstanceRef | TypelnstanceRef .
     
 

114i

SelectDomain = [ Schemald '.' ] Selectld .

115i

Selectld = type_ref .
     
 

116i

Selectlnstance = Selectlnstanceld `=` SelectlnstanceValue ';' .
     
 

117i

Selectlnstanceld = simple_id .
     
 

118i

SelectlnstanceValue = SelectDomain '{' SelectValue '}' .

119i

SelectValue = EnumerationValue | NamedlnstanceValue |
     
     
                    ObjectlnstanceRef | TypeValue .  

120i

SimpleEntitylnstanceld = simple_id .
     
 

121i

Simplelnstance = Simplelnstanceld '=' SimpleValue ';' .
     
 

122i

Simplelnstanceld = simple_id .
     
 

123i

SimpleValue = BinaryValue | BooleanValue | LogicalValue |
     
                            
NumberValue | StringValue .
     
 

124i

StringValue = Simple StringValue | EncodedStringValue .
     
 

125i

SupSubld = digits .
     
 

126i

SupportAlgorithm = function_decl | procedure_decl .
     
 

127i

TestCaseBlock = TEST_CASE TestCaseld ';'
     
     
                          TestCaseBody END_TEST_CASE ';' .
     
 

128i

TestCaseBody = SchemaReferences ObjectiveBlock TestRealization
     
                               
{ SupportAlgorithm } .  

129i

TestCaseld = simple_id .

130i

TestRealization = REALIZATION { local_decl }
     
                                 
{ UseContextBIock } { assignment_stmt } END_REALIZATION ';' .
     
 

131i

TestCriteria = CRITERIA Description END_CRITERIA ';' .
     
 

132i

TestNotes = NOTES Description END_NOTES ';' .
     
 

133i

TestPurpose = PURPOSE Description END_PURPOSE ';' .
     
 

134i

TestReference = REFERENCE Description END_REFERENCE ';' .
     
 

135i

TypeDomain = [ Schemald '.' ] Typeld .  
     
 

136i

Typeld = type_ref .
     
 

137i

Typelnstance = Typelnstanceld '=' TypelnstanceValue ';' .
     
 

138i

Typelnstanceld = simple_id .

139i

TypelnstanceValue = TypeDomain '{' TypeValue '}' .

140i

TypeValue = AggregationValue | BaseValue | ConstantRef |
     
                       
EntitylnstanceValue | NamedlnstanceValue |
     
                       ObjectInstanceRef | ParameterRef .

     
 

141i

UseContextBIock = CALL ContextRef ';'
     
     
                              UseContextBody END_CALL ';' .  
     
 

142i

UseContextBody = [ ImportSpec ] [ ParameterSpec ] .


     Примечание - Следующие грамматические правила EXPRESS 156-318, за исключением правил 228, 246, 267, 270, 274, 277-281, 302 и 313, используются в EXPRESS-I.
          

156

abstract_supertype_declaration = ABSTRACT SUPERTYPE [ subtype_constraint ] .
     
 

157

actual_parameter_list = '(' parameter { ',' parameter } ')' .
     
 

158

add_like_op = '+' | '-' | OR | XOR .
     
 

159

aggregate_initializer = '[' [ element { ',' element } ] ']'.

160

aggregate_source = simple_expression .
     
 

161

aggregate_type = AGGREGATE [ ':' type_label ] OF parameter_type .
     
 

162

aggregation_types = array_type | bag_type | Iist_type | set_type .
     
 

163

algorithm_head = { declaration } [ constant_decl ] [ Iocal_decl ] .
     
 

164

alias_stmt = ALIAS variable_id FOR general_ref { qualifier } ';' stmt { stmt }
     
                        
END_ALIAS ';' .
     
 

165

array_type = ARRAY bound_spec OF [ OPTIONAL ] [ UNIQUE ] base_type .
     
 

166

assignment_stmt = general_ref { qualifier } ':=' expression ';' .
     
 

167

attribute_decl = attribute_id | qualified_attribute .
     
 

168

attribute_id = simple_id .

169

attribute_qualifier = '.' attribute_ref .

170

bag_type - BAG [ bound_spec ] OF base_type .
     
 

171

base_type = aggregation_types | simple_types | named_types .  
     
 

172

binary_type = BINARY [ width_spec ] .
     
 

173

boolean_type = BOOLEAN .
     
 

174

bound_1 = numeric_expression .
     
 

175

bound_2 = numeric_expression .
     
 

176

bound_spec = `[` bound_1 ':' bound_2 ']' .
     
 

177

built_in_constant = CONST_E | PI | SELF | '?' .
     
 

178

built_in_function = ABS | ACOS | ASIN | ATAN | BLENGTH | COS | EXISTS |
     

  
                                            EXP | FORMAT | HIBOUND | HIINDEX | LENGTH |
     
     
                                         LOBOUND | LOINDEX | LOG | LOG2 | LOG10 | NVL |
     
                                              
ODD | ROLESOF | SIN | SIZEOF | SQRT | TAN | TYPEOF |
     
     
                                        USEDIN | VALUE | VALUE_IN | VALUE_UNIQUE .  

179

built_in_procedure = INSERT | REMOVE .

180

case_action = case_label { ',' case_label } ':' stmt .
     
 

181

case_label = expression .
     
 

182

case_stmt = CASE selector OF { case_action } [ OTHERWISE ':' stmt ]
     
                        
END_CASE ';' .
     
 

183

compound_stmt = BEGIN stmt { stmt } END ';' .
     
 

184

constant_body = constant_id ':' base_type ':=' expression ';' .
     
 

185

constant_decl = CONSTANT constant_body { constant_body }
   
 
                              
END_CONSTANT ';' .
     
 

186

constant_factor = built_in_constant | constant_ref .
     
 

187

constant_id = simple_id .
     
 

188

constructed_types = enumeration_type | select_type .

189

declaration = entity_decl | function_decl | procedure_decl | type_decl .

190

derived_attr = attribute_decl ':' base_type ':=' expression ';'.
     
 

191

derive_clause = DERIVE derived_attr { derived_attr} .
     
 

192

domain_rule = [ label ':' ] logical_expression .
     
 

193

element = expression [ ':' repetition ] .
     
 

194

entity_body = { explicit_attr } [ derive_clause ] [ inverse_clause ]
     
                         
[ unique_clause ] [ where_clause ] .
     
 

195

entity_constructor = entity_ref '(' [ expression { ',' expression } ] ')'.
     
 

196

entity_decl = entity_head entity_body END_ENTITY ';' .
     
 

197

entity_head = ENTITY entity_id [ subsuper ] ';' .
     
 

198

entity_id = simple_id .

199

enumeration_id = simple_id .

200

enumeration_reference = [ type_ref '.' ] enumeration_ref .
     
 

201

enumeration_type = ENUMERATION OF '(' enumeration_id { ',' enumeration_id } ')' .  
     
 

202

escape_stmt = ESCAPE ';'.
     
 

203

explicit_attr = attribute_decl { ',' attribute_decl } ':' [ OPTIONAL ]
     
                         
base_type ';'.
     
 

204

expression = simple_expression [ rel_op_extended simple_expression ] .
     
 

205

factor = simple_factor [ '**' simple_factor ] .
     
 

206

formal_parameter = parameter_ id { ',' parameter_id } ':' parameter type .
     
 

207

function_call = ( built_in_function | function_ref ) [ actual_parameter_list ] .
     
 

208

function_decl = function_head [ algorithm_head ] stmt { stmt }
     
     
                       END_FUNCTION ';' .  

209

function_head = FUNCTION function_id [ '(' formal_parameter
     
                              
{ ';' formal_parameter } ')' ] ':' parameter_type ';' .  

210

function_id = simple_id .
     
 

211

generalized_types = aggregate_type | general_aggregation_types| generic_type .
     
 

212

general_aggregation_types = general_array_type | general_bag_type |
     
                           
                           general_list_type | general_set_type .
     
 

213

general_array_type = ARRAY [ bound_spec ] OF [ OPTIONAL ] [ UNIQUE ]
     
                                       
parameter_type .
     
 

214

generaJ_bag_type = BAG [ bound_spec ] OF parameter_type .
     
 

215

general_Iist_type = LIST [ bound_spec ] OF [ UNIQUE ] parameter_type .
     
 

216

general_ref = parameter_ref | variable_ref .
     
 

217

general_set_type = SET [ bound_spec ] OF parameter_type .
     
 

218

generic_type = GENERIC [ ':' type_label ] .

219

group_qualifier = '\' entity_ref .


     

220

if_stmt = IF logical_expression THEN stmt { stmt } [ ELSE stmt { stmt } ]
     
                 
END_IF ';' .
     
 

221

increment = numeric_expression .
     
 

222

increment_control = variable_id ':=' bound_1 TO bound_2 [ BY increment ] .
     
 

223

index = numeric_expression .
     
 

224

index_1 = index .
     
 

225

index_2 = index .
     
 

226

index_qualifier = '[' index_1 [ ':' index_2 ] ']' .
     
 

227

integer_type = INTEGER .
     
 

<

228 interface_specification = reference_clause | use_clause . >

229

interval = '{' interval_low interval_op interval_item interval_op
     
                 
interval_high '}' .  

230

interval_high = simple_expression .
     
 

231

interval_item = simple_expression .
     
 

232

interval_low = simple_expression .
     
 

233

interval_op = '<' | '<=' .
     
 

234

inverse_attr = attribute_decl ':' [ ( SET | BAG ) [ bound_spec] OF ] entity_ref
     
                          
FOR attribute_ref ';' .  

235

inverse_clause = INVERSE inverse_attr { inverse_attr } .

236

label = simple_id .

237

list_type = LIST [ bound_spec ] OF [ UNIQUE ] base_type .

238

literal = binary_literal | integer_literal | logical_literal | real_literal |
     
              
string_literal .  

239

local_decl = LOCAL local_variable { local_variable } END_LOCAL ';' .

240

local_variable = variable_id { ',' variable_id } ':' parameter_type
     
                              
[ ':=' expression ] ';' .
     
 

241

logicai_expression = expression .  
     
 

242

logical_literal = FALSE | TRUE | UNKNOWN .
     
 

243

logical_type = LOGICAL .
     
 

244

multiplication_like_op = '*' ] '/' | DIV | MOD | AND | '||' .
     
 

245

named_types =entity_ref | type_ref .
     
 

<

246 named_type_or_rename = named_types [ AS ( entity_id | type_id ) ] . >
     
 

247

null_stmt = ';' .  
     
 

248

number_type = NUMBER .

249

numeric_expression = simple_expression .

250

one_of = ONEOF '(' supertype_expression { ',' supertype_expression } ')' .
     
 

251

parameter = expression .
     
 

252

parameter_id = simple_id .
     
 

253

parameter_type = generalized_types | named_types | simple_types .
     
 

254

population = entity_ref .
     
 

255

precision_spec = numeric_expression .
     
 

256

primary = literal | ( qualifiable_factor { qualifier } ) .
     
 

257

procedure_call_stmt = ( built_in_procedure | procedure_ref )
     
                                          
[ actual_parameter_list ] ';' .
     
 

258

procedure_decl = procedure_head [ algorithm_head ] { stmt} END_PROCEDURE ';' .

259

procedure_head = PROCEDURE procedure_id [ '(' [ VAR ] formal_parameter
     
                                   
{ ';' [ VAR ] formal_parameter } ')' ] ';' .  

260

procedure_id = simple_id .
     
 

261

qualifiable_factor = attribute_ref | constant_factor | function_call |
     
                                     
general_ref | population .
     
 

262

qualified_attribute = SELF group_qualifier attribute_qualifier .
     
 

263

qualifier = attribute_qualifier | group_qualifier | index_qualifier .
     
 

264

query_expression = QUERY `(` variable_id '<*' aggregate_source '|'
     
                                     
logical_expression')'.
     
 

265

real_type = REAL [ '(' precision_spec ')' ] .
     
 

266

referenced_attribute = attribute_ref | qualified_attribute .
     
 

<

267 reference_clause = REFERENCE FROM schema_ref [ '(' resource_or_rename
     
                                            
{ ',' resource_or_rename } ')' ] ';' . >
     
 

268

rel_op = '<' | '>' | '<=' | '>=' | '<>' | '=' | ':<>:' | ':=:' .

269

rel_op_extended = rel_op | IN | LIKE .

<

270 rename_id = constant_id | entity_id | function_id | procedure_id | type_id . >
     
 

271

repeat_control = [ increment_control ] [ while_control ] [ until_control ] .
     
 

272

repeat_stmt = REPEAT repeat_control ';' stmt { stmt } END_REPEAT ';' .
     
 

273

repetition = numeric_expression .
     
 

<

274 resource_or_rename = resource_ref [ AS rename_id ] . >
     
 

275

resource_ref = constant_ref | entity_ref | function_ref | procedure_ref | type_ref.
     
 

276

return_stmt = RETURN [ '(' expression ')' ] ';' .
     
 

<

277 rule_decl = rule_head [ algorithm_head ] { stmt } where_clause
     
                             
END_RULE ';'. >
     
 

<

278 rule_head = RULE rule_id FOR `(` entity_ref { ',' entity_ref } ')' ';' . >

<

279 rule_id = simple_id . >

<

280 schema_body = { interface_specification } [ constant_decl ]
     
                                      
{ declaration | rule_decl } . >
     
 

<

281 schema_decl = SCHEMA schema_id ';' schema_body END_SCHEMA ';' . >
     
 

282

schema_id = simple_id .
     
 

283

selector = expression .
     
 

284

select_type = SELECT '(' named_types { ',' named_types } ')' .
     
 

285

set_type = SET [ bound_spec ] OF base_type .
     
 

286

sign = '+' | '-' .
      
 

287

simple_expression = term { add_like_op term} .
     
 

288

simple_factor = aggregate_jnitializer | entity_constructor |
     
  
                          enumeration_reference | interval | query_expression |
     
     
                       ( [ unary_op ] ( '(' expression ')' | primary ) ) .  

289

simple_types = binary_type | boolean_type | integer_type | logical_type |
     
                             
number_type | real_type | string_type .  

290

skip_stmt = SKIP ';' .
     
 

291

stmt = alias_stmt | assignment_stmt | case_stmt | compound_stmt | escape_stmt |
     
           if_stmt | null_stmt | procedure_call_stmt | repeat_stmt | return_stmt |
     
            
skip_stmt .
      
 

292

string_literal = simple_string_literal | encoded_string_literal .
     
 

293

string_type = STRING [ width_spec ] .
     
 

294

subsuper = [ supertype_constraint ] [ subtype_declaration ] .
     
 

295

subtype_constraint = OF '(' supertype_expression ')' .
     
 

296

subtype_declaration = SUBTYPE OF '(' entity_ref { ',' entity_ref } ')' .
     
 

297

supertype_constraint = abstract_supertype_declaration | supertype_rule .
     
 

298

supertype_expression = supertype_factor { ANDOR supertype_factor } .

299

supertype_factor = supertype_term { AND supertype_term } .

300

supertype_rule = SUPERTYPE subtype_constraint .
     
 

301

supertype_term = entity_ref | one_of | '(' supertype_expression ')'.  
     
 

<

302 syntax = schema_decl { schema_decl } . >
     
 

303

term = factor { multiplication_like_op factor } .
     
 

304

type_decl = TYPE type_id '=' underlying_type ';' [ where_clause ] END_TYPE ';' .
     
 

305

type_id = simple_id .
     
 

306

type_label = type_label_id | type_label_ref .
     
 

307

type_label_id = simple_id .
     
 

308

unary_op = '+' | '-' | NOT .

309

underlying_type = constructed_types | aggregation_types | simple_types |
     
                                 
type_ref .  

310

unique_clause = UNIQUE unique_rule ';' { unique_rule ';' } .
     
 

311

unique_rule = [ label ':' ] referenced_attribute { ',' referenced_attribute } .
     
 

312

until_control = UNTIL logical_expression .
     
 

<

313 use_clause = USE FROM schema_ref [ '(' named_type_or_rename
                                  { ',' named_type_or_rename } ')' ] ';' . >

     
 

314

variable_id = simple_id .
     
 

315

where_clause = WHERE domain._rule ';' { domain_rule ';' } .
     
 

316

while_control = WHILE logical_expression .
     
 

317

width = numeric_expression .
     
 

318

width_spec = '(' width ')' [ FIXED ] .

A.5 Список перекрестных ссылок
     
     Конструкция, указанная слева, используется в конструкциях, указанных справа.
     
     

CALL
 
 

| 141i

CRITERIA
 
 

| 131i

END_CALL
 
 

| 141i

END_CRITERIA
 
 

| 131i

END_NOTES
 
 

| 132i

END_OBJECTIVE
 
 

| 97i

END_PARAMETER
 
 

| 83i

END_PURPOSE
 
 

| 133i

END_REALIZATION
 
 

| 130i

END_REFERENCES
 
 

| 134i


     
      

END_SCHEMA_DATA
 
 

| 109i

END_TEST_CASE
 
 

| 127i

IMPORT
 
 

| 84i

NOTES
 
 

| 132i

OBJECTIVE
 
 

| 97i

PARAMETERi
 
 

| 83i

PURPOSE
 
 

| 133i

REALIZATION
 
 

| 130i

REFERENCES
 
 

| 134i


     
      

SCHEMA_DATA

 
 

| 109i

SUBOF
 
 

| 85i

SUPOF
 
 

| 51i

TEST_CASE
 
 

| 127i

USING
 
 

| 112i

WITH
 
 

| 101i 112i

BinaryValue
 
 

| 123i

Description
 
 

| 131i 132i 133i 134i

EncodedStringValue
 
 

| 124i

EnumerationValue
 
 

| 48i 76i 119i

IntegerValue

 
 

| 94i

Nil
 
 

| 52i 81i 98i 106i

SignedMathConstant
 
 

| 104i

SignedRealLiteral
 
 

| 104i

SimplStringValue
 
 

| 124i

ComplexEntitylnstanceRef
 
 

| 37i

ConstantRef
 
 

| 103i 105i 140i

ContextRef
 
 

| 141i

EntitylnstanceRef
 
 

| 59i 71i 96i 113i

EnumerationlnstanceRef
 
 

| 96i 113i

ParameterRef

 
 

| 45i 105i 140i

SelectlnstanceRef
 
 

| 96i 113i

SimpleInstanceRef
 
 

| 96i

SimpleEntitylnstanceRef
 
 

| 37i

SupSubRef
 
 

| 65i

TypelnstanceRef
 
 

| 59i 96i 113i

ActualParameter
 
 

| 101i

AggregationValue
 
 

| 55i 59i 64i 103i 105i 140i

Assignment
 
 

| 84i

BaseValue
 
 

| 55i 59i 103i 105i 140i

BequeathesTo

 
 

| 65i

BooleanValue
 
 

| 123i

CompIexEntitylnstanceld
 
 

| 69i

ConstantBlock
 
 

| 110i

Constantld
 
 

| 35i 54i

ConstantSpec
 
 

| 52i

ConstantValue
 
 

| 54i 64i

ContextBlock
 
 

| 78i

ContextBody
 
 

| 56i

Contextld
 
 

| 36i 56i

DerattValue

 
 

| 60i 64i

DerivedAttr
 
 

| 70i

DynamicAggr
 
 

| 46i

DynamicEntityRefList
 
 

| 87i

DynamicList
 
 

| 61i

DynamicMember
 
 

| 63i 81i

DynamicSupSubRefList
 
 

| 49i 85i

EntityDomain
 
 

| 70i 93i

Entityld
 
 

| 66i

Entitylnstance
 
 

| 95i

Entitylnstanceld

 
 

| 68i

EntityInstanceValue
 
 

| 55i 59i 68i 103i 140i

EntityRefList
 
 

| 62i

EnumerationDomain
 
 

| 76i 93i

Enumerationld
 
 

| 72i

Enumerationlnstance
 
 

| 95i

Enumerationlnstanceld
 
 

| 38i 74i

Copyright © 2024