В.Н. Пильщиков - Язык Плэнер, страница 17
Описание файла
DJVU-файл из архива "В.Н. Пильщиков - Язык Плэнер", который расположен в категории "". Всё это находится в предмете "искусственный интеллект" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 17 - страница
В самом деле, такое значение не равно никакому 1 списку, поэтому и простое обра>цзине к константе не соответствует никакому 1 списку, а раэ так, то, согласно правилу десегментации, сопоставление сегментного обращения к константе с любым сегментом оказывается неудачным. Таким образом, если константа Р имеет значение [+ 2 +), а константа !) — значение А, то [13 (1 (:Р 3) (1+ 2+3)) -> () [13 (1:)'В) (А В)) () Аналогично сегментным обращениям к константам ведут себя !.-переменные, име>ощие значения, и сегментные обращения к .функциям. Здесь для удачного исхода сопоставления также требуется; чтобы значением переменной или функции был Ь-список и чтобы последовательность элементов этого списка совпадала с сопоставляемым сегментом. Например, если переменная Х имеет б В.
Н, Пвльщвнов аначеиие (КОЗЬМА ПРУТКОВ), а Т вЂ” эпачепие (СМОТРИ В КОРЕНЬ), то [1Я (!.Х ГОВОРИЛ: !.Т) (КОЗЬМА ПРУТКОВ ГОВОРИЛ: СМОТРИ В КОРЕНЬ)] — Т [1Я ((ВЕЯТ 2 Х>»2) (КОРЕНЬ УРАВНЕНИЯ)] -» Т, 2:= УРАВНЕНИЯ [1Я ((3 Х)»2) (КОРЕНЬ УРАВНЕНИЯ)] -» () Теперь рассмотрим, как сопоставляются !»-переменные и !.-переменные, не имеющие эпачений. Согласно правилу десегментацни, сопоставление образца !»Х с сегментом а~ аэ ...
э, эквивалентно сопоставлению образца»Х со списком (а, ат ... аа). Отсюда следует такое правило сопоставления !»-переменной или !.-переменной, не имеющей значения: этому сегментному обраэцу соответствует любой сегмент, причем при сопоставлении переменная получает новое значение, которым является Ь-список, составленный из элементов того сегмента, с которым сопоставлялся данный образец. Например, сопоставления [ВО [1ЛМАЯЯ16К Х] [1Я (огни ьх) (огни москвы)ц [ГЯ (ОГНИ !«У) (ОГНИ НОЧНОЙ МОСКВЫ)] удачны, и при атом значением переменной Х становится список (МОСКВЫ), а аначением переменной т' — список (НОЧНОИ МОСКВЫ).
Поскольку !«-переменной (как и 1;переменной, не имеющей эяачения) соответствует любой сегмент, то, естественно, воаникает вопрос: а какой именно сегмент анализируемого списка ставится в соответствие атому сегментному образцу? Ответ такой: сегмент подбирается так, чтобы было соответствие и для других элементов сопоставляемых списков.
Если в обрааце-списке всего одна !»-переменная, то выбор сегмента не вызывает аатруднений. Например, при сопоставлении [1Я (1 !«Х»У) (1+2+3+4)] на долю образца !»Х приходится сегмент + 2 + 3 +, так как только в этом скучав есть соответствие и всем другим элементам образца-списка и анализируемого списка. Тем самым по окончании сопоставления переменная Х будет иметь значение (+ 2 + 3 +), а переменная Т вЂ” эиачение 4.
Если !»-переменных в обрааце-списке несколько, то выбор сегментов усложняется, но и эдесь ои ва многих случаях очевиден. Так,при сопоставлении [1Я (!»Х — !«Т) (1 + 2 + 3 — 4)] 82 на долю образца !»Х приходится сегмент 1 + 2 + 3, а на долю образца !» т' — сегмент из одного элемента 4. Только в атом случае второй элемент образца-списка будет иметь соответствие в анализируемом списке. Следовательно, после сопоставления значением переменной Х станет список (1 + 2 + 3), а значением переменной У вЂ” список (4).
В то же время при сопоставлении [1Я (!»Х — !»У) (1 + 2 + 3 + 4)] ни при каком распределении сегментов между образцами !«Х и !«У не будет соответствия второму элементу образца-списка, потому данное солоставлеине неудачно. Еще несколько примеров подобного типа: (!Б (!«Х + !«У + !«2) <+ А — В+ С)] -» Т, Х:= (), Ъ':= (А — В), 2:= <С) <!Б (!«Х «Р !»У .Р !»2) (1 — 2+ 3+ 4)] » Т, Х: = <1 — 2), Р: = +, Ъ". = (3), 2: = (4) (!Б («Р !«Х .Р !»У) (1 + 2 + 3)] -» () В ряде случаев возможно нескольке вариантов удачного исхода сопоставления сппсков. Например, сопоставление (!Б (!»Х + !«У) (1 + 2 + 3 + 4)] является удачным при любом из следующих вариантов распреде- ления сегментов между образцами !«Х и !»У: 1 и 2+ 3-(-4 1+2 и 3+4 1+2+3 и 4 Какой из этих вариантов выбирается при сопоставления? Втэ важно знать, поскольку от выбора варианта зависит, какие значения получат переменные Х и Т.
В подобных ситуациях из всех возможных вариантов удачного распределения сегментов между !«-переменными (или !.-переменными, ие имеющими значений) всегда выбирается тот, в котором на долю самой левой !«-переменной образца-списна приходится наикратчайший сегмент. Если после этого все равно осталось несколько вариантов, то из ннх выбирается тот, где на долю второй по порядку !»-переменной приходится наикратчайший сегмент.
Если снова нет однозначности, тогда выбирается вариант с наикратчайшим сегментом для третьей по порядку !«-переменной, и т. д. Согласно этому правилу, в нашем последнем примере выбирается вариант, в котором обраацу !»Х поставлен в соответ- бе ЯЗ ствие сегмент иа одного элемента 1, а образцу !«г — сегмент, 2 + 3 + 4, Следовательно, по окончании сопоставления переменная Х будет иметь значение (1), а переменная У вЂ” значение (2 + 3 + 4). Другие примеры подобного типа: [13 (!еХ (еУ) (А + В + С)) -ь Т, 'Х:= (), У:= (А + В + С) [РВ(! Х+! У+! К) ((А+В) +С вЂ” В+Е+Р)) -ь Т, Х:= ((А + В)), У:= (С вЂ” В), Рп= (Е + Р) [13 (!еХ !»У ()е3 + !.Х) (е0) (В+ С вЂ” (А+ В+ С) — (В+ В))) -ь Т, Х: (В), У:= (+ С вЂ” (А + В + С) — ), 3:= (В), 1):= () Отметим, что во втором иа этих примеров обраацу !еХ противопоставляется сегмент из одного алемепта (А + В), а не конструкция (А, поскольку атом + с верхнего уровня образца- списка не может соответствовать никакому атому с более глубоких уровней анализируемого списка.
Болев того, конструкция [А не является сегментом, ибо представляет собой последовательность сииволов, но ие последовательность Правильных плэнерсних выражений. Сказанного выше и приведенных примеров, по-видимому, достаточно для понимания правил сопоставления образцов-списков, содержащих сегментные алементы. Однако для большей четкости приведем точный алгоритм такого сопоставления. Пусть образец-список Р, среди элементов которого есть сегментные обраацы, сопоставляется с выражением Е.
Если Е не является 1 списком или если длина списка Е меньше числа песегментных элементов списка Р, то сопоставление Р с Е неудачно. Иначе осуществляется последовательный слева направо просмотр элементов списка Р. Если очередной элемент иэ Р— это простой обрааец, то он сопоставляется с очередным элементом из Е, а если этот элемент является сегментным образцом, то он сопоставляется (с учетом правила десегментации) с последовательностью очередных элементов из Е, которая определяется следующим образом. Если данный алемент является последним сегментным образцом в Р, то берется такой сегмент из Е, чтобы на дол~о оставшихся алементов списка Р приходилось по одному элементу иа оставшейся части списка Е.
Для сегментного обрааца, не являющегося последним' в Р, выбор сегмента зависит от тина этого образца. Для !.-яеременной, имеющей аначение, и для сегментного обращения н константе или функции выбирается сегмент, длина которого равна длине значения данной переменной, константы или функции. Но его делается только в том случае, если значением переменной, константы или функции являетея 1 список и если в оставшейся части списка Е хватает элементов для оставшихся иесегментных елементов образца-списка Р. Если зги условия не выполнены, соответствия данному сегментному обраацу нет.
Для остальных типов сегментных образцов (для !.-переменных, не имеющих значений, для !е-переменных и для сегментных обращений к сопоставителям) сегмент определяется подбором. Сначала сегментный образец сопоставляется с пустым сегментом. Если это сопоставление неудачно, обравец сопоставляется с сегментом из одного (очередного) элемента списка Е. Если и вто не привело к удаче, к сегменту добавляется следующий элемент из Е, затем — еще один злемеит и т. д.
Такое наращивание продолжается до тех пор, пока не будет наиден сегмент„ который соответствует данному сегментному обраацу, либо станет невозмовшым наращивание етого сегмента (в списке Е не хватит элементов для оставпшхся несегментных элементов из Р).
В первом случае соответствие сегментному образцу найдано, во втором— соответствия нет. Последовательное слева направо сопоставление списков Р и Е продолжается до тех пор, пока не будет найдено соответствие всем злемептам списка Р или пока не встретится елемент ив Р, для которого нет соответствии в списке Е. В первом случае сопоставление списков заканчивается, оио удачно, и при этом сохраняют свою силу все побочные аффекты сопоставления Во втором же случае происходит возврат назад — к последнему па рассмотренных ранее сегментных элементов (с верхнего уровня) списка Р, для которого возможно наращивание сопоставляемой с ппм последовательности злементов списка Е. Причем при возврате уничтожаются все побочные аффекты, которые имели место как во время предыдущего сопоставления этого сегментного обрааца, так и после.