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

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

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

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

Затем к сопоставляемому с этим образцом сегменту добавляется очередной злемент списка Е, и процесс сопоставления возобновляется с этой точки. Может окаааться, что в списке Р уже не осталось ии одного сегментного образца, для которого возможно наращивание сопоставляемого с ним сегмента. В таком случае сопоставление списков прекращается — оно неудачно. При этом все его побочные аффекты уничтожаются. Поясним описанный алгоритм сопоставления на следузощем примере: (!Я ((еХ еТ.Х !»Х) (А'+ В Х (А + В) / СЦ Здесь образцу )еХ сначала ставится в соответствии пустой сег- мент, поэтому переменная Х получает значение ().

Затем обраэец «У сопоставляется с атомом А, в результате чего переменной т присваивается вначение А. Теперь сопоставляются .Х и +. Зто сопоставление неудачно (неременная Х имеет сейчас эначение ()), поэтому переменные Х и г «теряют» свои значения () и А и происходит возврат к первому элементу обраэца-списка. На этот рав образцу 1«Х ставится в соответствии сегмент иэ одного элемента А, и переменная Х получает теперь значение (А).

После этого образец «У удачно сапоставится с атомом +, однако обраэцу .Х вновь не будет соответствия. Поэтому снова происходит воэврат к обраацу 1«Х, и т. д. В конце концов этому образцу будет поставлен в соответствие сегмент А + В, и переменная Х получит вначение (А + В). Далее образец « т' удачно сопоставится с атомом )(, в результате чего переменной х присвоится значение »(.

Сопоставление образца .Х с очередным элементом анализируемого списка — с подсписком (А + В) — на этот раэ удачно, поэтому далее ищется соответствие обраэцу 1«Е. Поскольку этот сегментный образец является последним в образцесппске, ему ставится в соответствие весь остаток аналиэируемого списка, т. е. сегмент иэ элементов / и С. Следовательно, переменная Е получает аначенке (/ С). Ыа атом сопоставление списков завершается, оно удачно. За переменными Х, г и Е сохраняются значения, полученные ими во время сопоставления: (А + В), )( и (/ С). Отметим, что иэ описанного алгоритма сопоставления списков вытекает следующее правило: если имеется несколько вариантов удачного сопоставления простого абраэца с выражением, то всегда рассматривается только один иэ иих. В частности, при сопоставлении списков невозможен возврат к сегментным образцам, находящимся не на верхнем уровне обрааца-списка.

В связи с этим сопоставление [Б ((1«Х А 1«У) .Х) ((А В А) (А В) Ц неудачно. Действительно, при сопоставленин первых элементов (подсписков) переменная Х получает эначение (), а перемениаи »' — значение (В А), после чего сопоставление вторых влементов окааывается неудачным.

Но несмотря на это, другой воэможиый вариант удачйого сопоставления подсписков, в котором переменная Х получила бы аначение (А В), а переменная г — эначение (), не рассматривается. 2.4. Примеры использования образцов Приведем два примера использования образцов для аналиаа структуры данных. Первый пример в это символьное дифференцирование много- членов. Под «многочлепом» будем понимать «одпочлеп» или до- Зб следовательность «одночленов», соединенных анаками +. «Одно- член> — это «переменная» (плэнерский идентификатор), либо неотрицательное число, либо «степень» вида х 7 и, где и — «переменная», а и — целое чнсло, большев или равное 2; либо последовательность таких конструкций, соедпненных сивками Х.

Весь многочлен эаключается в круглые скобки. Примеры таких много- членов: (2), (Х Х У), (6 Х Х + Х ) 3 Х У + Х [ 2) Следующая функция строкт список, представляющий собой запись производной многочлена Р по переменной Ч: ,[ВЕРН»)Е 01Р (ЬАМВВА (Р Ч) [РВОО (Т) [СОЖ0 ([1»(ОТ [МЕМВ .Ч .Р]] (О)) ([13 (Ч) .Р] (1)) ([13 (!»Т + гвР) .Р] (<01Р.Т.Ч>+ <01Р.Р.Ч>)) ([13 (!»Т Х !»Р) .Р] ((01Р .Т .Ч) Х !.Р + !.Т Х (01Р .Р Ч>)) ([13 ( Ч Ф 2) Р] (2 Х .Ч)) ([13 (.Ч ) «Т) .Р] (Т Х .Ч '! [ — .Т 1]))] ])] В первой клаузе условного выражения проверяется, входит лн в многочлен Р переменная, по которой ведется дифференг[ирование.

Во второй клаузе выявляется случай, когда многочлен состоит только иэ этой переменной. В остальных клауэах с помощью обраэцов определяется структура многочлена: сумма ли это, одно- член или степепь (особо выделен случай степени с понаэателем 2, чтобы избежать появления в производной степеней с показателем 1). Этими же обраэцами мпогочлеи раэбявается иа отдельные компоненты. Например, у многочлена (6 Х Х' + Х 7 3 Х У + Х ) 2) выделяются первое слагаемое Т = (6 Х Х) и остальные слагаемые Р = (Х 7 3 Х У + Х 7 2). После этого по соответствующей формуле дифференцирования строится список, являющийся проиаводной многочлена. Так, для укааанного выше многочлена применяется формула (Т + Р)' = (Т' + Р'), причем для получения производных Т' и Р' рекурсивно применяется сама функция 01Р (считаем, что значением Ч явлнется атом Х): (01Р.Т.Ч> -» О Х Х+ 6 Х 1 (01Р .Р Ч> 3 Х Х ] 2 Х У+ Х ( 3 Х О+ 2 Х Х Далее эти производные соединяются анаком + и ааключаются в круглые скобки, что и дает прои»водную исходного многочлена: (О Х Х+ 6 Х 1 + 3 Х Х ] 2 Х У + Х] 3Х О+2ХХ) 67 Как.видно, полученную производную следовало бы упростить, однако мы не будем ааниматься этой проблемой.

Следующий пример, который мы рассмотрим,— это задача интерпретации программ, записанных на некотором модельном языке. Синтаксис этого языка описывается следующпми металингвистическимн формулами (в ннх для большеи 'наглядности пробелы указываются явно, уголки же используются как метасимволы, а не как плзнерские скобки): (програмиа):: = ((описание) (операторы)) <описание):: = (ЧАК <переменные)) (переменные) :: = (пусто)!(переменная) (переменные) (операторы) :: = (пусто)((оператор) (операторы) (оператор)::= ((непомеченный оператор)) ) ((метка) : (непомеченный оператор)) (непомеченный оператор)::= (оператор перехода) [ (оператор вывода) ) (оператор присваивания) ) (условный оператор) (оператор перехода):: = СОТО (метка) (оператор вывода):: ОСТР()Т (выражение) (оператор присваивания):: = (переменная) = (выражение) (условный оператор>::= 1Р <условие) ТНЕХ ((непомеченный оператор)) ЕЬБЕ ((непомеченный оператор)) (условие):: = ((выражение) (знак отношения) (выраже.

ние)) (анак отношения):: = Ф [ = (выражение):: (чнсло) [ (переменная) [ (переменная) + (число) Под «моткойэ и «переменнойэ понимается любой плэнерский идентификатор, под «числом» вЂ” любое плзнерское число. Семантика описанного языка естественна и очевидна. Пример программы на атом языке: ((ЧАК Б 1) (Я = О) (1 = О) (1: 1 = 1 +.Ц (Я = Я + 2) (1Р (1 ~ 20) ТНЕН (СОТО Ь) Е1 ЯЕ (0()ТРСТ Я))) Интерпретатор этого языка мы опишем в виде нескольких функций.

Основной из них является функция 1г)ТЕКР, аргумент которой — интерпретируемая программа. [ВЕР1НЕ 1ХТЕКР (ЬАМВВА (РКОС) [РКОО (УАКЯ (АЬ ()) ОРЯ ОР ЬАВ) [СОХО ([1Я ((ЧАК !«УАКБ) (эРКОО) .РКОО)) (Т [ЕКК 1 ( )))) [100Р Ч .ЧАНЯ [СОНЭ ([10 .Ч] [БЕТ АЬ (!.АЬ (.Ч ())Ц) (Т [ЕВК 2 .Ч]Ц] [БЕТ ОРЯ .РКОО] Ь [СОР)П ([Р1Р! ОР ОРЯ] [КЕТОВА ЕР!О])] [18 («1.АЭ: !«ОР) .ОР] [ЕЧОР .ОР] [6(г ь]])] Эта функция строит список АЬ, в котором будут храниться переменные интерпретируемой программы и их значения. Первоначально этот список имеет вид ((«~ ( )) (из ( Ц ...

(«ь ( Ц),. где ие — переменные, описанные в начале интерпретируемой программы, а ( ) означает отсутствие значения у переменной. В дальнейшем в зтот список будут ааноситься значения, получаемые переменными зь Например, когда переменной из будет присвоено значение 5, список АЬ будет преобразован к виду ((и, 5) (о. ()) ") ' Возмошпо, что описание переменных в интерпретируемой программе задано неправильно. Тогда функция 1Р!ТЕКР передает управление функции ЕВК, которая печатает оообщение об ошиб-' ке и прекращает интерпретацию. После обработки описания функция 1г(ТЕКР начинает последовательное выполнение операторов интерпретируемой программы. Список всех операторов атой программы хранится в переменной РВОО, а список операторов, начиная с того, который должен быть выполнен в текущий момент,— в переменной ОРЯ. Если список ОРЯ пуст, тогда функция 1НТЕВР завершает интерпретацию и выдает значение ЕНП.

Иначе от списка ОРЯ отделяется первый оператор ОР, из которого удаляется метка, если она есть. Получившийся непомеченный оператор выполняется с помощью функции ЕЧОР. Далее описанный цикл повторяется. [ПЕР!г!Е ЕЧОР (ЬАМВРА (ОР) [РВ06 (Е Ь Ч В ОР! ОР2) [СОНЭ ([18 (ОСТРОТ !«Е) .ОР) [РВ1Р(Т [ЕЧЕХР,Е]]) ([18 (СОТО «Ь) .ОР] [СОТО .Ь]) ([18 («Ч = !»Е) .ОР] [РПТЧАЬ .Ч [ЕЧЕХР .Е]]) ([18 (1Р «В ТНЕ!Ч «ОР! ЕЬЯЕ «ОР2) .ОР) [СОг)П ([ЕЧВ001 .В] [ЕЧОР .ОРЦ) (Т [ЕЧОР .ОР2])]) (Т [ЕВВ 3 .ОР]Ц ]Ц 89 Функция ЕУОР интерпретирует действия непомеченного оператора.

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

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

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

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