
- •Введение
- •Вводные замечания
- •Спецификации (Specifications)
- •Объявления (Declarations)
- •3.3.1. Определение абстрактных типов (Sort Definitions)
- •3.3.2. Определение вариантов (Variant Definitions)
- •3.3.3. Определение объединений (Union Definitions)
- •3.3.4. Определение сокращенной записи (Short Record Definitions)
- •3.3.5. Определение абревиатур (Abbreviation Definitions)
- •3.4.1. Прокомментированное указание типа (Commented Typing)
- •3.4.2. Явное определение констант (Explicit Value Definitions)
- •3.4.3. Неявное определение констант (Implicit Value Definitions)
- •3.4.4. Явное определение функций (Explicit Function Definitions)
- •3.4.5. Неявное определение функций (Implicit Function Definitions)
- •Variable
- •Описание классов (Class Expressions)
- •Описание типов (Type Expressions)
- •Value Expressions (выражения)
- •6.7.1. Множества, заданные диапазоном (Ranged Set Expressions)
- •6.7.2. Множества, заданные перечислением (Enumerated Set Expressions)
- •6.7.3. Сокращенные множественные выражения (Comprehended Set Expressions)
- •6.8.1. Списки, заданные диапазоном (Ranged List Expressions)
- •6.8.2. Списки, заданные перечислением (Enumerated List Expressions)
- •6.8.3. Сокращенные выражения для списков (Comprehended List Expressions)
- •6.9.1. Отображения, заданные перечислением (Enumerated Map Expressions)
- •6.9.2. Сокращенные выражения для отображений (Comprehended Map Expressions)
- •6.16.1. Операторные инфиксные выражения (Statement Infix Expressions)
- •6.16.2. Аксиоматические инфиксные выражения (Axiom Infix Expressions)
- •6.16.3. Инфиксные выражения (Value Infix Expressions)
- •6.17.1. Аксиоматические префиксные выражения (Axiom Prefix Expressions)
- •6.17.2. Универсальные префиксные выражения (Universal Prefix Expressions)
- •6.17.3. Префиксные выражения (Value Prefix Expressions)
- •Initialise
- •6.23.1. Локальные выражения (Local Expressions)
- •6.23.2. Let-выражения (Let Expressions)
- •6.23.3. If- выражения (If Expressions)
- •6.23.4. Case-выражения (Case Expressions)
- •6.23.5. While-выражения (While Expressions)
- •6.23.6. Until-выражения (Until Expressions)
- •6.23.7. For-выражения (For Expressions)
- •Связывания (Bindings)
- •Указания типа (Typings)
- •Patterns (образцы)
- •9.7.1. Образцы списки, заданные перечислением (Enumerated List Patterns)
- •9.7.2. Образцы списки, заданные конкатенацией (Concatenated List Patterns)
- •9.8.1. Идентификаторы или операции (Identifiers or Operators)
- •9.8.2. Образцы равенства (Equality Patterns)
- •Идентификаторы и операции
- •Инфиксные комбинаторы (Infix Combinators)
- •Interlocked-композиция (Interlocked composition):
- •Литература для дополнительного чтения
- •Приложение 1. Приоритет операций
- •Приложение 2. Таблица соответствия rsl символов и их ascii представления
- •Приложение 3. Ключевые слова rsl
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