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

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

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