Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
11.04.2015
Размер:
849.92 Кб
Скачать

3.3.5. Определение абревиатур (Abbreviation Definitions)

Синтаксис:

abbreviation_def ::=

opt-comment-string id = type_expr

Терминология. Определениеabbreviation_defявляетсяциклическим, если максимальный тип задающего его тип выраженияtype_exprзависит от типа, который сам задается посредством этого же определенияabbreviation_def.

Максимальный тип зависитот некоторого типаt, если он использует этот типt.

Контекстные условия.Определениеabbreviation_defне должно быть циклическим.

Атрибуты. Максимальным типом входящего в определение идентификатораidявляется максимальный тип указанного в этом определенииtype_expr.

Максимальное определение для определения abbreviation_defполучается путем замещения входящего в него типового выраженияtype_exprсоответствующим выражением для максимального типа.

Семантика. Определениеabbreviation_defзадает конкретное имяidдля типа, представленного выражениемtype_expr.

3.4. Объявление функций (Value Declarations)

В языке RSLконстанта рассматривается как частный случай функции, поэтому для объявления констант и функций предусмотрен единый разделvaluedeclarations.

Синтаксис.

value_decl ::=

value value_def-list

value_def ::=

commented_typing │

explicit_value_def │

implicit_value_def │

explicit_function_def │

implicit_function_def │

Контекстные условия. Входящие в объявлениеvalue_decl определенияvalue_defдолжны быть совместимы.

3.4.1. Прокомментированное указание типа (Commented Typing)

См. раздел 8.

3.4.2. Явное определение констант (Explicit Value Definitions)

Синтаксис:

explicit_value_def ::=

opt-comment-string single_typing = pure-value_expr

Контекстные условия. Максимальный тип выраженияvalue_exprдолжен быть меньше или равен максимального типа конструкцииsingle_typing.

Выражение value_exprдолжно представлять собой чистое выражение (см. раздел 6.1).

Контекстно-зависимые расширения. Явное определение константыexplicit_value_def является краткой формой для определения константы и аксиомы.

Пусть метафункция expressпреобразует связывание (binding) в выражение путем взятия в скобки всех операций, оставляя остальную часть связывания без изменения. Семантика операций в скобках описана в разделе 10.3. Тогда явное определение константыexplicit_value_defвида:

value binding : type_expr = value_expr

является сокращением следующего фрагмента:

value binding : type_expr

axiom express(binding) = value_expr

3.4.3. Неявное определение констант (Implicit Value Definitions)

Синтаксис:

implicit_value_def ::=

opt-comment-string single_typing pure-restriction

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

Контекстно-зависимые расширения. Неявное определение константыimplicit_value_def является краткой формой для определения константы и аксиомы.

Неявное определение константы implicit_value_defвида:

value binding : type_expr • value_expr

является краткой формой записи следующего фрагмента:

value binding : type_expr

axiom value_expr

Соседние файлы в папке ТРПО