Главная » Просмотр файлов » В.Н. Пильщиков - Язык Плэнер

В.Н. Пильщиков - Язык Плэнер (1156455), страница 21

Файл №1156455 В.Н. Пильщиков - Язык Плэнер (В.Н. Пильщиков - Язык Плэнер) 21 страницаВ.Н. Пильщиков - Язык Плэнер (1156455) страница 212019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 21)

Это чотрицавиез образца ра1. Сопоставитель Р(ОН соответствует сопоставляемому с ним выражению тогда и только тогда, когда это выражение не соответствует обраэцу раь Например: [1Я [ИОН [АТОМ]] А] -«() [1Б (<11ЯТ «Н) [НО)Ч А] ( )) (А А В)] -«Т, Н:=2 Отметим, что при любом исходе сопоставления выражения с данным сопоставителем все побочные аффекты этого сопоставления уничтожаются. Действительно, если обраэец рот ле соответствует аналиаируемому выражению, то побочных эффектов нет, а если рот соответствует выражению, тогда сам сопоставитель МОХ сигнализирует о неудаче, поэтому побочные эффекты все равно будут отменены. Например: [1Б [)ЧОН («Х А)] (А В)] -«Т [1Б [1(ОН «Х] А] -«() и в обоих случанх переменная Х не иаменит своего вначения.

Сопоставителэ ЕТ: [ЕТ рот~ ... рагь], РАВЕ, й > 1, Это «конъюнкция» образцов раап сопоставитель ЕТ соответствует анализируемому выражению, только если оно соответствует всем образцам расс. Более точно, сопоставнтель просматривает слева направо свои аргументы-обраэцы н по очереди сопоставляет их с выражением. Если все эти сопоставления удачны, то считается, что сопоставитель соответствует этому выражению. Но если сопоставление какого-'то образца ратг с выражением неудачно, то оставшиеся образцы не рассматриваются, побочные эффекты сопоставления предыдущих аргументов-обраэцов уничтожаются и сопоставление ЕТ с выражением аавершается неудачей.

Примеры: [1Б [ЕТ [1ХТ] [СЕ 0]] 5] -«Т [1Я [ЕТ [1ЛЯТ 3] (А!«Х)] (А В С)] -«Т, Х:=* (В С) [1Б [ЕТ («Х + «У) ([1В] + [ЖОМ]Ц (А + В)] -ч- () [1Я [ЕТ «Х [АВБ,Х]] А] ошибка Отметим, что в предпоследнем примере переменные Х и У не меняют своих вначений, а ошибка в последнем примере выэвана тем, что полученное переменной Х нечисловое эначение А испольэовалось как аргумент функции АВЯ, что эапрещепо правилами яаыка. Наиболее часто сопоставитель ЕТ используется в тех случаях, когда требуется некоторой переменной Х присвоить в качестве эпачения аналиэируемый объект, но только при условии, что этот 99 объект обладает свойством,'которое проверяется некоторым образцом рах Сделать это можно, построив обрааец (ЕТ ра«»Х], который сначала проверяет, обладает ли аналиаируемый объект нужным свойством, а затем, если объект прошел проверку, присваивает его переменной Х.

Например, найти среди алементов списка Е самое левое число и присвоить его переменной Х можно так: [1Б (() [ЕТ [ЕОМ] »Х] ( )) .Ц ' Сопоставитель БАМЕ. Обращение к этому сопоставнтелю имеет следующий вид: [БАМЕ (и«о» ... о„) рвц ... ра«»], РАВЕ, т>~0, )«)>1. Сопоставитель БАМЕ действует аналогично ' сопоставителю ЕТ, но на время своей работы вводит локальные переменные согласно их описали«о (о~ и» ...

о ), что делается так же, как в функции РКОО (см. 1 1.9). Например: [1Я [БАМЕ (Х) [Е(ЯТ 4] (»Х ( ) .Х)] (А В С А)] -~ Т СопОставитель АУТ«[АОТ ра«, ... ра«»], РЯОВК, й ) 1, Это «дизыонпция» образцов уа««. Сопоставитель просматривает слева направо свои аргументы-образцы и по очереди сопоставляет их с анализируемым выражением. Если все эти сопоставления неудачны, то соответствия между сопоставителем и выражением нет.

Если же нашелся образец раап которому соответствует анализируемое выражение, тогда сопоставитель, не рассматривая оставшиеся аргументы, аавершает сво«о работу с удачей. Пример: [1Б [А()Т («Х В) (А «Х) («Х С)] (А С)] -~- Т, Х:=С Рассмотрим иа примере сопоставителя А()Т принцип построения сегментных образцов; такое построение нередко вызывает затруднения у программирующих на планере.

Предположим, что требуется написать образец, которому соответствует пустой сегмент или сегмент иэ одного элемента +. Ясно, что этот образец должен быть сегментным, раз он сопоставляется с сегментами, но вот сообразить сразу, каков конкретно атот образец, наверное, трудно. Выйти из затруднения помогает правило десегментации, согласно которому простой вариант данного образца должен соответствовать пустому списку ( ) или списку (+). Построить же такой простой обрааец легко — зто [АПТ () (+)]. Теперь, возвращаясь к сегментному варианту, получаем искомый образец: (АОТ () (+) г» Примеры использования этого обрааца: [1Я (<А()Т () (+) > А — В) (А — В)] -» Т [1Я (<А()Т () (+)> А — В) (+ А — В)] -ь Т [1Я (<А11Т () (+) > А — В) ( — А — В)] -~- () Таким обрааом, сегментный обрааец сначала следует строить так, как если бы он был простым образцом, который сопоставляется с 1 списками, и лишь затем следует перейти к сегментному варианту, т.

е. ваменить внешние квадратные скобки простого обрааца па угловые (ничего пе мепяя при етом «внутри» обрааца). Сопоставитель %НЕХ, Это условный сопоставитель. Он относится к классу РЯБВК. Обращение к нему имеет следующий вид: [ЪЧНЕХ (Ра«раг д ... рог»,„) ... [Рать ра«„... рогам )), где 5 ~ 1, т«) О. Данный соиоставитель действует так.

Сначала он по очереди сопоставляет анализируемое выражение с образцами ро㫠— первыми элементами своих аргументов (клауа). Если выражение не соответствует ии одному из них, то соответствия между сопоставителем и выражением нет. Если же нашелся обрааец рог«, которому соответствует аналиаируемое выражение, тогда остальные клаувы уже не рассматриваются и действие сопоставителя сводится к последовательному сопоставлению выражения с оставшимися обравцами иа этой ьй клаузы, а точнее, к сопоставлению выражения с образцом [ЕТ расы Ра»ш ...

Рог«ю.] (при и» вЂ”вЂ” О такое сопоставление считается удачным). Например, образец [ЪЧНЕХ ([Ш] А) ([Х()М] [ОЕ 2] [ЬЕ 5]) ([])] иа всех идентификаторов соответствует только идентификатору А, из чисел — только числам от 2 до 5, а из выражений иных типов — чему угодно. В последи«ою группу встроеппых сопоставителей языка входят сопоставители ЫХЕАВ, ЯТАВ, ОХЕ-ОР, РАТ, ВЕ и НАЯ. Сопоставитель ЫХЕАК. Обращение к нему таково: [ЫХЕАВ Ра«Ра«а ...

Ра»ь), РЯСВК, Ь)б. В отличие от всех других встроенных сопоставителей, у етого сопоставителя аргументами могут быть как простые обравцы, так и сегментные. Сопоставителю ЫХЕАВ соответствуют списки с любыми скобками, при атом правила его сопоставления аналогичны правилам сопоставления образца-списка [раг' рог' ...- рог'1 1 2''" » Таким образом, данному сопоставителю соответствует любой список, если такой же список, во в круглых скобках, соответствует указанному образцу-списку. Например: [1Я [11ХЕАВ 1ХВЕХ 1»Х [ЧАВ]] [ОСОТЕ <1ХОЕХ 1 2:А>]] Т, Х:= (1 2) 101 Сопоставитель ЯТАК: [ЯТАВ рог], РЯОВВ.

Данный сопоставитель соответствует любому списку, каждый злемевв которого соответствует образцу рад Более точно, сопоставнтель БТАВ, проверив, что аналивируемое выражение является списком (с любыми скобками), сопоставляет образец рос по очереди с каждым элементом этого списка. Пустым спискам данный сопоставитель соответствует всегда.

Например, образец [ЯТАВ [10]] соответствует любому списку, все элементы которого — идентификаторы, а обравец (БТАК [1О]> соответствует любому сегменту из идентификаторов: [1Б [БТЛН [1О]] (Л В С)] т [1Б [БТАВ [10Ц (Л В 2.4 С)] -«() [1Б ($«Х (БТАВ [1О]>) (1 2 А В)] -«Т, Х:= (1 2) Напомним, что, согласно общему принципу сопоставления, побочные аффекты удачного сопоставиения сохраняются, а в случае неудачи ояи уничтожаются.

Поэтому [1Я [ЯТАВ «Х] (Л В С)] -«Т, Х:= С [ВО [ОНАЯБ16М Х] [1Б [БТАН .Х] (А А)]] -«Т, Х:=А [)>О [13МАЯЯ1ОМ Х] [1Б [ЯТАВ.Х] (А В)Ц -«() (в последнем примере переменная Х остается без значения). Сопоставитель ОНЕ-(УР: [СНЕ-ОР 1], ЯУВВ. Значением аргумента должен быть список. Сопоставитель соответствует анализируемому выражению тогда и только тогда, когда это выражение равно одному иа элементов данного списка. Например: [ОО [БЕТ Х (Л В С)] [1Я [ОНЕ-ОР .Х] О]] -«() [1Я ()«Х (ОНЕ-ОР (+ — )] ( >) (А — В + С)] -«Т, Х:= (А) Сопоставитель РАТ: [РАТ е], БОВИ. Значением аргумента должно быть выражение, которое может выступать в роли простого образца.

РАТ сопоставляет этот образец с анализируемым выражением. Если ато сопоставление удачно, то сопоставитель РАТ соответствует выражению,'неудачно — не соответствует. Данный сопоставитель применяется в тех случаях, когда с анализируемым выражением надо сопоставить обравец, который заранее неизвестен, а является значением какой-нибудь перяменной или строится во время вычисления программы. 102 Пусть, к примеру, значением переменной Х является список (А «У). Тогда [1Б [РАТ .Х) (А В)) -» Т, У:= В В то же время [1Б .Х (А В)) -» . () Действительно, если в первом примере вначение переменной Х рассматривается как обрааец, который с о и оставляется со списком (А В), то во втором примере зто значение просто ар а впиваетсяя, а зти деа списка не равны.

Сопоставнтель ВЕ: [ВЕ е), Б()ВВ. Данный сопоставитель «игнорирует» сопоставляемое с ним выражение и интересуется только значением своего аргумента. Если оно равно (), то сопоставитель не соответствует никакому выражению, а при других значениях аргумента сопоставитель соответствует л«сбоку выражению.

Сопоставптель ВЕ испольауется обычно в тех случаях, когда в процессе сопоставления надо что-то выполнить с помощью функций. Например,при сопоставлении [РБ (( ) [ЕТ [АТОМ) еХ [ВЕ [РЕПА .Х)]) (Р) ((А) (В С) П Е)) -» Т переменной Х будет присвоено аначение П и зтот атом будет выдан на печать. В $1Л6 была. описана встроенная функция ЕХ(Т, с помощью которой можно прекратить выполнение любой объемлинцей процедуры. Там был рассмотрен выход иа функций, здесь же мы рассмотрим выход из сопоставителей. Пусть дано обращение к функции ЕХ1Т: [ЕХ1Т «гя я7) и пусть значением аргумента уя является идентификатор' РК— нмя некоторого сопоставителя, объемлющего данное обращение. Тогда функция ЕХ1Т завершает работу этого сопоставителя; объявляя выполняемое им сопоставление неудачным, если значенизм аргумента е является пустой список (), или удачным, если значение аргумента е отлично от (); В случае «неудачного» выхода все побочные аффекты, имевщие место с начала выполнения сопоставителя, отменяются, при «удачном» же выходе побочные эффекты сохраняются.

Третий аргумент функции ЕХ1Т указывает, из какого по счету объемлющего сопоставителя с именем РУ осуществляется выход. Если етого аргумента нет или если его значение У равно 103 нулю, тогда имеется в виду ближайший объемлющий сопоставитель Р)У, при других вначениях — ()У+1)-й по счету сопоставитель РХ Если среди объемлющих процедур нет.нужного сопоставителя, тогда функция ЕХ1Т осуществляет выход на верхний уровепь программы (см. $116).

С учетом сказанного образец [БАМЕ (Х) [ОУПЕН ([ЛТОМ] [1111М]) (еХ [ВЕ [ЕХ!Т .Х БАМЕЦ ) ] ] выражений из всех атомов соответствует только числам, а из нных типов — чему угодно, кроме пустого списка (). Сопоставитель НАБ. Обращение и ному имеет вид [НАЯ 1лй~ рац ... 1лбь разд], РБОВВ, й рв 1. Этот сопоставитель соответствует только идентификаторам, причем таким, чьи списки свойств удовлетворяют следующему требованию: значения свойств с названиями 1110~ (это значения аргументов 1лА) должны соответствовать образцам разо Более точно сопостаэнтель НЛЯ действует так.-Если анализпруемое выражение — пе идентификатор, сопоставление неудачно. Иначе сопоставптель вычисляет аначеиие 1)УВ, своего аргумента 1ийь находит в списке свойств идентификатора свойство с названием 1Р10, и значение этого свойства (либо пустой список (), если такого свойства нет) сопоставляет с обраацом разз. Если данное сопоставление удачно, то сопоставитель выполнлет аналогичные действия по отношению к следующей паре аргументов — 1ибз и разо и.

Характеристики

Тип файла
DJVU-файл
Размер
3,34 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее