Статус документа
Статус документа

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

     6 Синтаксис определения языка


В настоящем разделе определена нотация, используемая для представления синтаксиса языка EXPRESS. Полный синтаксис для языка EXPRESS приведен в приложении А. Части этих синтаксических правил воспроизведены в различных разделах настоящего стандарта для иллюстрации синтаксиса конкретного оператора. Эти части не всегда полны. Поэтому иногда необходимо руководствоваться приложением А для недостающих в данном примере правил. Части синтаксиса в тексте настоящего стандарта представлены в рамке. Каждое правило внутри синтаксической рамки слева имеет уникальный номер для использования его в перекрестных ссылках на другие синтаксические правила.

6.1 Синтаксис спецификации

Синтаксис EXPRESS определен как производная от Синтаксической Нотации Вирта (СНВ).

Примечание - См. ссылку в приложении J [3].


Соглашение по нотации и самоопределенная СНВ приведены ниже.

syntax

=

{ production } .

production

=

identifier `=` expression `.` .

expression

=

term { `|` term } .

term

=

factor { factor } .

factor

=

identifier | literal | group | option | repetition .

identifier

=

character { character } .

literal

=

```` character { character } ```` .

group

=

`(` expression `)` .

option

=

`[` expression `]` .

repetition

=

`{` expression `}` .

- Знак равенства `=` указывает логическое заключение. Элемент слева от знака определяется комбинацией элементов справа. Любые пробелы, появляющиеся между элементами логического заключения, не входящие в пределы литерала, не имеют значения. Логическое заключение завершается точкой `.`.

- Использование идентификатора внутри коэффициента означает нетерминальный символ, который появляется слева от другого логического заключения. Идентификатор состоит из букв, цифр и символа подчеркивания. Ключевые слова языка представляются логическими заключениями, идентификаторы которых состоят только из заглавных букв.

- Литерал используется для обозначения терминального символа, который не может быть расширен далее. Литерал является последовательностью любых символов, заключенной в апострофы. Символ, в данном случае, может быть любым символом, определенным по ИСО/МЭК 10646-1 в позициях 21-7Е группы 00, плоскости 00, строки 00. Чтобы апостроф был включен в литерал, он должен быть записан дважды.

Семантика скобок определена ниже:

- фигурные скобки `{}` указывают нулевое или большее количество повторений;

- квадратные скобки `[ ]` указывают необязательные параметры;

- круглые скобки `( )` указывают, что группа логических заключений, включенных в круглые скобки, должна быть использована как единое логическое заключение;

- вертикальная линия `|` указывает, что в выражении должен быть выбран только один элемент.

Пример 2 - Синтаксис для строкового типа:

Синтаксис:

293 string_type = STRING [ width_spec ] .

318 width_spec = `(` width `)` [ FIXED ] .

317 width = numeric_expression .



Полное определение синтаксиса (приложение А) содержит определения для STRING, numeric_expression и FIXED.

Пример 3 - Учитывая синтаксис, данный в примере 2, возможны следующие варианты:

a) string

b) string (22)

c) string (19) fixed

Правило для numeric_expression является сложным и позволяет описать много других вариантов.

6.2 Специальная символьная нотация

Следующая нотация используется для представления целых символьных наборов и некоторых специальных символов, которые сложно отобразить:

-\а - представляет символы в позициях 21-7Е строки 00, плоскости 00, группы 00 ИСО/МЭК 10646-1;