Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПО_теория / ТРПО / RSL14_1p (Восстановлен).doc
Скачиваний:
37
Добавлен:
11.04.2015
Размер:
893.95 Кб
Скачать

6.23.5. While-выражения (While Expressions)

Синтаксис.

while_expr ::=

while logical-value_expr do unit-value_expr end

Контекстные условия. Максимальным типом первого выражения value_expr должен быть тип Bool.

Максимальным типом второго выражения value_expr должен быть тип Unit.

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

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

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

Имеет место следующая эквивалентность:

while value_expr1 do value_expr2 end

if value_expr1 then

value_expr2 ; while value_expr1 do value_expr2 end

else skip end

6.23.6. Until-выражения (Until Expressions)

Синтаксис.

until_expr ::=

do unit-value_expr until logical-value_expr end

Контекстно-независимые расширения. Выражение until_expr вида:

do value_expr1 until value_expr2 end

представляет собой краткую форму записи выражения:

value_expr1 ; while  value_expr2 do value_expr1 end

6.23.7. For-выражения (For Expressions)

Синтаксис.

for_expr ::=

for list_limitation do unit-value_expr end

Контекстные условия. Максимальным типом выражения value_expr должен быть тип Unit.

Контекстно-зависимые расширения. Выражение for_expr вида:

for list_limitation do value_expr end

представляет собой краткую форму записи выражения:

let id =  value_expr ½ list_limitation in skip end

  1. Связывания (Bindings)

Синтаксис.

binding ::=

id_or_op ½

product_binding

product_binding ::=

( binding-list2 )

Терминология. Значение может быть сопоставлено со связыванием binding для получения некоторого набора определений значений.

Контекстные условия. Максимальный контекстный тип для связывания binding, представляющего собой операцию op, должен быть каким-либо функциональным типом, различимым с максимальным типом (типами) предопределенного значения (значений) операции op. Если операция op является инфиксной операцией infix_op, то типом параметра данного функционального типа должен быть тип декартова произведения длины 2.

Максимальным контекстным типом конструкции product_binding должен быть тип декартова произведения той же длины, что и список binding‑list2.

В конструкции product_binding составляющие ее связывания binding должны быть совместимы.

Атрибуты. Контекст связывания binding определяет максимальный контекстный тип для данного связывания binding. Для конструкций, содержащих в своем составе связывания binding, этот максимальный контекстный тип указывается в соответствующих разделах.

В качестве максимального типа конструкции id_or_op, представляющей собой связывание binding, принимается максимальный контекстный тип данного связывания binding.

В конструкции product_binding вида (binding1,…, bindingn) , контекстный тип которой имеет вид t1 ´ … ´ tn, максимальными контекстными типами связываний binding1,…, bindingn являются типы t1, …, tn соответственно.

Семантика. Совпадение некоторого значения v максимального контекстного типа t со связыванием binding вида id_or_op дает следующее определение:

id_or_op : t = v

Совпадение значения некоторого декартова произведения (v1,…,vn) максимального контекстного типа t1 ´ … ´ tn со связыванием product_binding вида (binding1,…, bindingn) дает набор определений, полученных при совпадении каждого значения vi максимального контекстного типа ti со связыванием bindingi.

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