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

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

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


Синтаксис языка EXPRESS определен как производная от синтаксической нотации Вирта (СНВ) [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 в позициях 21-7Е группы 00, плоскости 00, строки 00. Чтобы апостроф был включен в литерал, он должен быть записан дважды.

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

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

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

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

вертикальная линия ' | ' обозначает, что в выражении должен использоваться только один из элементов, разделенных вертикальными линиями.

Примеры
     


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

   Синтаксис:

     311 string_type = STRING [ width_spec ] .
     341 width_spec = ' ( ' width ' ) ' [ FIXED ] .
     340 width = numeric_expression .


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

2 В соответствии с синтаксисом, приведенном в примере 1, возможны следующие варианты:

string;
     
     string ( 22 );
     
     string ( 19 ) fixed.


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