
- •Введение
- •Вводные замечания
- •Спецификации (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
6.7.1. Множества, заданные диапазоном (Ranged Set Expressions)
Синтаксис.
ranged_set_expr ::=
{ readonly_integer-value_expr .. readonly_integer-value_expr }
Контекстные условия. Входящие в данную конструкцию выраженияvalue_exprдолжны представлять собойread-onlyвыражения и их максимальный тип должен бытьInt.
Атрибуты. Максимальным типом выраженияranged_set_exprявляетсяInt‑infset.
Выражение ranged_set_exprстатически производит чтение из тех переменных, из которых статически производят чтение составляющие его выраженияvalue_expr, и не имеет другого статического доступа.
Семантика. Результирующее воздействие выраженияranged_set_exprзаключается в возвращении множества целых чисел в диапазоне, ограниченном нижней и верхней границами. При этом первое выражениеvalue_exprвычисляется и возвращает нижнюю границуi1, затем вычисляется второе выражениеvalue_exprи возвращает верхнюю границуi2. Результирующее множество содержит все целые числаiтакие, чтоi1ii2. Еслиi1i2, множество пусто.
6.7.2. Множества, заданные перечислением (Enumerated Set Expressions)
Синтаксис.
enumerated_set_expr ::=
{ readonly-opt-value_expr-list }
Контекстные условия. Входящие в данную конструкцию выраженияvalue_exprдолжны представлять собойread-onlyвыражения.
Максимальные типы составляющих выражений value_exprдолжны иметь наименьшую верхнюю границу.
Атрибуты. Максимальным типом выраженияenumerated_set_expr, имеющего в своем составе одно или более выраженийvalue_expr, являетсяt-infset, гдеt– это наименьшая верхняя граница максимальных типов этих составляющих выраженийvalue_expr. Максимальным типом выраженияenumerated_set_expr, не имеющего составляющих выраженийvalue_expr(пустое множество), являетсяt-infset, гдеt– это типовая переменная, представляющая произвольный максимальный тип.
Выражение enumerated_set_exprстатически производит чтение из тех переменных, из которых статически производят чтение составляющие его выраженияvalue_expr, и не имеет другого статического доступа.
Семантика. Результирующее воздействие выраженияenumerated_set_exprзаключается в возвращении множества явно специфицированных значений. При этом результирующее воздействие выраженияenumerated_set_exprвида {value_expr1,…, value_exprn} достигается путем вычисления слева направо значенийviкаждого составляющего выраженияvalue_expri, после чего возвращается значение в виде множества {v1,…,vn}. Если списокvalue_expr‑listотсутствует, возвращается пустое множество.
6.7.3. Сокращенные множественные выражения (Comprehended Set Expressions)
Синтаксис.
comprehended_set_expr ::=
{ readonly-value_expr ½ set_limitation }
set_limitation ::=
typing-list opt-restriction
restriction ::=
• readonly_logical-value_expr
Контекстно-независимые расширения. Пустое ограничениеnil‑restrictionпредставляет собой сокращение ограничения ‘•true’.
Ограничение ‘• value_expr’ является сокращенной записью ограничения ‘•value_expr true’.
Контекст и правила видимости. В выраженииcomprehended_set_exprконтекст ограниченияset_limitationрасширяется до выраженияvalue_expr, входящего в состав данного выражения.
Непосредственным контекстом конструкций typing, входящих в состав ограниченияset_limitation, является ограничениеrestriction, входящее в тот же состав.
Контекстные условия. Входящее в состав выраженияcomprehended_set_exprвыражениеvalue_exprдолжно представлять собойread-onlyвыражение.
Входящее в состав ограничения restrictionвыражениеvalue_exprдолжно представлять собойread-onlyвыражение и его максимальный тип должен бытьBool.
Атрибуты. Максимальным типом выраженияcomprehended_set_exprявляетсяt-infset, гдеt– это максимальный тип входящего в его состав выраженияvalue_expr.
Выражение comprehended_set_exprстатически производит доступ к тем переменным и каналам, к которым статически обращаются составляющие его выражениеvalue_exprи ограничениеset_limitation.
Конструкция set_limitation, в которой присутствует ограничениеrestriction, статически производит доступ к тем переменным и каналам, к которым статически обращается данное ограничениеrestriction.
Ограничение restrictionстатически производит чтение из тех переменных, из которых статически производит чтение входящее в его состав выражениеvalue_expr, и не имеет другого статического доступа.
Семантика. Результирующее воздействие выраженияcomprehended_set_exprзаключается в возвращении множества, элементы которого получаются путем вычисления выраженияvalue_exprво всех моделях, удовлетворяющих заданному ограничению.
Для каждой модели из множества моделей, представленного ограничением set_limitation(см. ниже), вычисляется указанное выражениеvalue_expr. Вычисление выраженияcomprehended_set_exprпредставляет собой сходящийся процесс.
Конструкция set_limitationпредставляет некоторое подмножество моделей, которые удовлетворяют определениям, заданным в спискеtyping-list, и для которых выполняется ограничениеrestriction.
Ограничение restrictionвыполняется, если вычисление входящего в его состав выраженияvalue_exprпредставляет собой сходящийся процесс, в результате которого возвращается значениеtrue.
6.8. Выражения, задающие списки (List expressions)
Синтаксис.
list_expr ::=
ranged_list_expr ½
enumereted_list_expr ½
comprehended_list_expr