
- •Введение
- •Вводные замечания
- •Спецификации (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
Спецификации (Specifications)
Синтаксис:
specification ::=
module_decl-string
module_decl ::=
scheme_decl │
object_decl
Терминология. Модуль– это либо некоторый объект1, либо схема.
Контекст и правила видимости. Контекстом входящих в спецификацию объявленийmodule_decl-string являются сами эти объявленияmodule_decl-string. Это означает, что порядок следования определений не существенен, т.е. схема может быть использована до своего определения.
Контекстные условия. Все объявления модулейmodule_decl должны быть совместимы.
Семантика.Спецификация употребляется для определения одного или более модулей.
Объявления (Declarations)
3.1. Общие положения
Синтаксис:
decl ::=
scheme_decl │
type_decl │
value_decl │
variable_decl │
channel_decl │
axiom_decl
Терминология. Объявление представляет собой список определений (definitions) одинаковоговида– схем, типов, значений, переменных, каналов или аксиом. Каждое определение обычно задает некоторый идентификатор или операцию длясущностиэтого вида, следовательно, обычно оно устанавливает одно или болеесвойствтакой сущности.
Атрибуты. За исключением определений аксиом с каждым видом определений связано некоторое максимальное определение. В соответствующих разделах для каждого вида определений описывается максимальное определение, специфичное для данного вида.
3.2. Объявление схем (Scheme Declarations)
Синтаксис:
scheme_decl ::=
scheme scheme_def-list
scheme_def ::=
opt-comment-string id opt-formal_scheme_parameter = class_expr
formal_scheme_parameter ::=
( formal_scheme_argument-list )
formal_scheme_argument ::=
object_def
Терминология. Схема представляет собой класс или параметризованный класс.Параметризованный класс– это отображение списка объектов на классы: каждый объект списка отображается в некоторый класс.
Максимальным классомсхемы является максимальный класс соответствующего выражения, задающего класс в определении данной схемы.
Определение схемы scheme_def является циклическим, если конструкцииopt‑formal_array_parameter или class_expr зависят от схемы, которая сама задается этим определением scheme_def.
Конструкция зависит от схемыS, если она, игнорируя ограничения в выражениях для подтипов, используетSили любую схему, содержащую определение, в которомopt-formal_scheme_parameterилиclass_exprзависят отS.
Контекст и правила видимости. В определении схемыscheme_defконтекстом необязательного параметраopt‑formal_scheme_parameter является сам этот параметрopt‑formal_scheme_parameterи выражениеclass_expr, входящее в данное определение схемы.
Контекстные условия. Все входящие в объявление схемыscheme_declопределенияscheme_defдолжны быть совместимы.
Входящие в формальный параметр схемы formal_scheme_parameter аргументыformal_scheme_argument должны быть совместимы.
Определение схемы scheme_defне должно быть циклическим.
Атрибуты. В определении схемыscheme_defмаксимальным классом идентификатораidявляется максимальный класс входящего в это определение выраженияclass_expr, и в случае присутствия необязательного параметраformal_scheme_parameterидентификаторidимеет также формальный параметр, которым и являетсяformal_scheme_parameter.
Максимальное определение определения схемы scheme_defполучается из исходного определения путем замещения в его составе определений объектов, входящих вformal_scheme_parameter(в случае его присутствия), на соответствующие максимальные определения этих объектов и выраженияclass_exprна соответствующее выражение для максимального класса.
Семантика. Определение схемыscheme_defзадает конкретный идентификаторidдля определяемой схемы.
Определение схемы в форме:
id = class_expr
задает конкретный идентификатор idдля класса, представленного выражениемclass_expr.
Определение схемы в виде:
id(formal_scheme_argument-list) = class_expr
задает идентификатор id для параметризованного класса.
3.3. Объявление типов (Type Declarations)
Синтаксис:
type_decl ::=
type type_def-list
type_def ::=
sort_def │
variant_def │
union_def │
short_record_def │
abbreviation_def
Контекстные условия. Составляющие объявление типовtype_declопределения типовtype_defдолжны быть совместимы.