
- •Введение
- •Вводные замечания
- •Спецификации (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
9.7.1. Образцы списки, заданные перечислением (Enumerated List Patterns)
Синтаксис.
enumerated_list_pattern ::=
opt-inner_pattern-list
Контекстные условия. Составляющие данную конструкцию внутренние образцыinner_patternдолжны быть совместимы.
Атрибуты. Максимальным контекстным типом каждого внутреннего образцаinner_patternявляется тип элемента максимального контекстного типа содержащего их образца спискаlist_pattern.
Семантика.
Успешное сопоставление: пусть образец списокenumerated_list_patternимеет вид:
inner_pattern1,…, inner_patternn ( n 0 )
тогда тестовое значение должно представлять собой список вида v1,…,vnи в дополнении к этому каждое значениеviдолжно сопоставляться с соответствующим внутренним образцомinner_patterni.
Результирующие определения: набор определений, получаемый путем сопоставления каждого значенияviс внутренним образцомinner_patterni.
9.7.2. Образцы списки, заданные конкатенацией (Concatenated List Patterns)
Синтаксис.
concatenated_list_pattern ::=
enumerated_list_pattern ^ inner_pattern
Контекстные условия. Входящие в данную конструкцию образец списокenumerated_list_patternи внутренний образецinner_patternдолжны быть совместимы.
Атрибуты. Максимальным контекстным типом образца спискаenumerated_list_patternи внутреннего образцаinner_patternявляется максимальный контекстный тип содержащего их образца спискаconcatenated_list_pattern.
Семантика.
Успешное сопоставление: пусть образец списокconcatenated_list_patternимеет вид:
enumerated_list_pattern ^ inner_pattern
тогда тестовое значение должно представлять собой список вида l1 ^l2, гдеl1сопоставляется с образцом спискомenumerated_list_patternиl2сопоставляться с внутренним образцомinner_pattern.
Результирующие определения: набор определений, получаемый путем сопоставления спискаl1с образцом спискомenumerated_list_patternи спискаl2с внутренним образцомinner_pattern.
9.8. Внутренние образцы (Inner Patterns)
Синтаксис.
inner_pattern ::=
value_literal ½
id_or_op ½
wildcard_pattern ½
product_pattern ½
record_pattern ½
list_pattern ½
equality_pattern
Для внутренних образцов используется общая для всех образцов терминология, атрибуты и контекстно-зависимые расширения (см. раздел 9.1).
Определения всех перечисленных здесь конкретных видов образцов кроме id_or_opиequality_patternданы в разделах 9.2 – 9.7.
9.8.1. Идентификаторы или операции (Identifiers or Operators)
Контекстные условия. Максимальный контекстный тип для внутреннего образцаinner_pattern, представляющего собой операциюop, должен быть каким-либо функциональным типом, различимым с максимальным типом (типами) предопределенного значения (значений) операцииop. Если операцияopявляется инфиксной операциейinfix_op, то типом параметра данного функционального типа должен быть тип декартова произведения длины 2.
Атрибуты. В качестве максимального типа конструкцииid_or_op, представляющей собой внутренний образецinner_pattern, принимается максимальный контекстный тип данного внутреннего образцаinner_pattern.
Семантика.
Успешное сопоставление: все значения максимального контекстного типа успешно сопоставляются с идентификатором или операциейid_or_op.
Результирующие определения: пустьvявляется тестовым значением иt— максимальным контекстным типом конструкцииid_or_op, тогда результирующим является следующее определение:
id_or_op : t = v