734
ГЛАВА 13. СЕНТЕНЦИАЛЬНЫЕ МЕТОДЫ
и объектное выражение
AhAhAh ’OhOhOh’ (Ugu’,’Udgu) ’(((’ Basta’!’
(13.5)
Имеется 11 вариантов конкретизации (13.4) в (13.5) (проверьте!).
Если у метавыражения
Me
есть много вариантов конкретизации в
E
, то
они упорядочиваются по предпочтительности в следующем порядке.
Пусть
Env1
и
Env2
—два варианта конкретизации
Me
в
P
.Рассмотрим все
вхождения переменных в
Me
. Если
Env1
и
Env2
не совпадают, они приписы-
вают некоторым переменным различные значения. Найдем в
P
самое первое
слева вхождение переменной которому
Env1
и
Env2
приписывают разные
значения и сравним длину этих значений. Та из конкретизаций, в которой
значение, приписываемое данному вхождению переменной, короче, предше-
ствует другой и имеет приоритет перед ней.
Например, сопоставим объектное выражение
(A1 A2 A3)(B1 B2)
с образ-
цом
e.1 (e.X s.A e.Y) e.2
. В результате получится следующее множество ва-
риантов сопоставления:
{e.1 = , eX = , sA = A1, eY = A2 A3, e.2 = (B1 B2) }
{e.1 = , eX = A1, sA = A2, eY = A3, e.2 = (B1 B2) }
{e.1 = , eX = A1 A2, sA = A3, eY = , e.2 = (B1 B2) }
{e.1 = (A1 A2 A3), eX = , sA = B1, eY = B2, e.2 = }
{e.1 = (A1 A2 A3), eX = B1, sA = B2, eY = , e.2 = }
где варианты сопоставления перечислены в соответствии с их приоритетами,
т. е. самый первый вариант находится на первом месте и т. д. Описанный
способ упорядочения вариантов сопоставления называется сопоставлением
слева направо.
Тот алгоритм конкретизации, который используется в
Рефале
, называ-
ется проецированием и согласован с введенным нами отношением порядка.
Опишем его (описание взято из учебника Турчина [90]). Обратите внима-
ние, как в данном случае общая и не всегда эффективно реализуемая опе-
рация ‘проецируется’ на свою частную реализацию, одновременно повыша-
ющую эффективность, сохраняющую общность и навязывающую методику
программирования.
Алгоритм для сопоставления объектного выражения E с образцом P
в
РЕФАЛ-5
.
Вхождения атомов, скобок и переменных будут называться элементами
выражений. Пропуски между элементами будут называться узлами. Сопо-
ставление E : P определяется как процесс отображения, или проектирова-