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

6.8.1. Списки, заданные диапазоном (Ranged List Expressions)

Синтаксис.

ranged_list_expr ::=

integer-value_expr .. integer-value_expr 

Контекстные условия. Максимальным типом входящих в данную конструкцию выраженийvalue_exprдолжен бытьInt.

Атрибуты. Максимальным типом выраженияranged_list_exprявляетсяInt.

Выражение ranged_list_exprстатически производит доступ к тем переменным и каналам, к которым статически обращаются составляющие его выраженияvalue_expr.

Семантика. Результирующее воздействие выраженияranged_list_exprзаключается в возвращении списка целых чисел в диапазоне, ограниченном нижней и верхней границами. При этом вычисляется первое выражениеvalue_exprи возвращает нижнюю границуi1, затем вычисляется второе выражениеvalue_exprи возвращает верхнюю границуi2. Результирующий список содержит в возрастающем порядке все целые числаiтакие, чтоi1ii2. Еслиi1i2, список пуст.

6.8.2. Списки, заданные перечислением (Enumerated List Expressions)

Синтаксис.

enumerated_list_expr ::=

 opt-value_expr-list 

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

Атрибуты. Максимальным типом выраженияenumerated_list_expr, имеющего в своем составе одно или более выраженийvalue_expr, являетсяt, гдеt– это наименьшая верхняя граница максимальных типов этих составляющих выраженийvalue_expr.

Максимальным типом выражения enumerated_list_expr, не имеющего в своем составе выраженийvalue_expr(пустой список), являетсяt, гдеt– это типовая переменная, представляющая произвольный максимальный тип.

Выражение enumerated_list_exprстатически производит доступ к тем переменным и каналам, к которым статически обращаются составляющие его выраженияvalue_expr.

Семантика. Результирующее воздействие выраженияenumerated_list_exprзаключается в возвращении списка явно специфицированных значений. При этом результирующее воздействие выраженияenumerated_list_exprвидаvalue_expr1,…, value_exprnдостигается путем вычисления слева направо значенийviкаждого выраженияvalue_expri, после чего возвращается значение в виде спискаv1,…,vn. Если конструкцияvalue_expr-listотсутствует, возвращается пустой список.

6.8.3. Сокращенные выражения для списков (Comprehended List Expressions)

Синтаксис.

comprehended_list_expr ::=

 value_expr ½ list_limitation 

list_limitation ::=

binding in readonly_list-value_expr opt-restriction

Контекст и правила видимости. В выраженииcomprehended_list_exprконтекст ограниченияlist_limitationрасширяется до выраженияvalue_expr, входящего в состав данного выражения.

Непосредственным контекстом конструкции binding, входящей в состав ограниченияlist_limitation, является ограничениеrestriction, входящее в тот же состав.

Контекстные условия. Входящее в состав ограниченияlist_limitationвыражениеvalue_exprдолжно представлять собойread-onlyвыражение и его максимальный тип должен быть типом список.

Атрибуты. Максимальным типом выраженияcomprehended_list_exprявляетсяtw, гдеt– это максимальный тип входящего в его состав выраженияvalue_expr.

В конструкции list_limitationмаксимальным контекстным типом связыванияbindingявляетсяt, гдеtw– это максимальный тип входящего в состав данной конструкции выраженияvalue_expr.

Выражение comprehended_list_exprстатически производит доступ к тем переменным и каналам, к которым статически обращаются составляющие его выражениеvalue_exprи ограничениеset_limitation.

Конструкция list_limitationстатически производит чтение из тех же переменных, что и входящее в ее состав выражениеvalue_expr. Если в данной конструкции присутствует ограничениеrestriction, то она также статически производит доступ к тем переменным и каналам, к которым статически обращается указанное ограничениеrestriction. Никакого другого статического доступа данная конструкция не имеет.

Семантика. Результирующее воздействие сокращенного выраженияcomprehended_list_exprсостоит в том, чтобы возвратить список, генерируемый на основе некоторого другого списка.

Для каждой модели из списка моделей, представленного ограничением list_limitation(см. ниже), вычисляется выражениеvalue_expr, входящее в состав исходного сокращенного выражения, и возвращаемое значение включается в результирующий список на соответствующую позицию. Список моделей, представленный ограничениемlist_limitation, обрабатывается слева направо.

По ограничению list_limitationсписок моделей строится следующим образом. Входящее в состав данного ограничения выражениеvalue_exprвозвращает некоторый список. Затем этот список просматривается слева направо, и каждый его элемент сопоставляется со связываниемbindingдля получения набора определений. Если для модели (она в точности одна), удовлетворяющей полученным определениям, выполняется ограничениеrestriction, то данная модель включается в результирующий список моделей на соответствующую позицию.

6.9. Выражения, задающие отображения (Map expressions)

Синтаксис.

map_expr ::=

enumereted_map_expr ½

comprehended_map_expr

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