Языки программирования. Практический сравнительный анализ




Языки программирования. Практический сравнительный анализ - стр. 39


В этом смысле левая часть предложения служит образцом структуры ведущего терма (терм и предложение согласуются, если структура терма соответствует образцу), а правая - образцом для синтезируемого заменяющего выражения.                                

 

Упражнение. Покажите, что если ведущий терм согласуется с некоторым предложением, то соответствующее согласование единственно.

Подсказка. Оно либо левое, либо правое.

2.2.3. Исполнитель (рефал-машина)

Теперь легко объяснить, как действует исполнитель, имея в поле зрения обрабатываемое выражение, а в поле определений - программу (т.е. кортеж предложений). Он выполняет следующий цикл.

Во-первых, выделяет ведущий терм. Если такового нет, останавливается. Выражение в поле зрения считается результатом.

Во-вторых, ищет первое по порядку предложение, которое согласуется с ведущим термом. Соответствующее согласование всегда единственно. Значит, единственна и изображаемая при соответствующей интерпретации переменных марковская подстановка. Она и применяется к ведущему терму. И цикл начинается сначала с обновленным полем зрения.

Если нет согласующихся с ведущим термом предложений, то исполнитель останавливается с диагностикой "согласование невозможно".

2.2.4. Программирование "в стиле рефала"

Задачу перевода в ПОЛИЗ (с учетом старшинства операций) решает следующая программа.

 

     {e1+e2}R -> {e1}{e2}+

     {e1*e2}R -> {e1}{e2}*

     {(e)} -> {e}

     {e} -> e

Упражнение 1. Доказать, что это правильная программа.

[Обратите внимание: действиями исполнителя полностью управляет структура обрабатываемых данных.] .

Упражнение 2. Можно ли эту программу написать короче? Например, так:

 

       {e1 s:(+I*) e2}R -> {e1}{e2}S

       {(e)} -> {e}

       {e} -> e

Упражнение 3. Можно ли здесь отказаться от правого согласования?    

Задача. Напишите на рефале программу аналитического дифференцирования многочленов по переменной "x".




Содержание  Назад  Вперед