РЕФАЛ

РЕФАЛ

sergey shishkin

Характеристикой системы может быть не только, используемые концепции, но и общепринятые неиспользуемые концепции. В частности, РЕФАЛ не использует концепцию ТИПОВ. Основная концепция РЕФАЛ - символьная строка. РЕФАЛ определяет "рекурсивную функцию" как переписывание термов строки, сопоставляя с шаблоном. Программа состоит из одного или несколько модулей (файлов), которые состоят из функцией. Структура функции - набор предложений, состоящих из образца и шаблона. На вход подается выражение, которое последовательно сравнивается с образцами предложений. Это и есть процесс вычисления, который завершается при успешном поиске первого совпадающего образца, на основании шаблона которого формируется новое выражение. Иначе авария. В качестве термов в выражениях используются числа, символы, метки, переменные с предопределёнными типами (?!), выражения в скобках и выражения в угловых скобках для вызова функций. Последние запрещено использовать образцах. Семантика языка Рефал описывается в терминах виртуальной машины, называемой «рефал-машина» или «рефал-автомат». Машина имеет поле зрения, в котором может находиться произвольное рефал-выражение, не содержащее рефал-переменных. Выполнение программы состоит из шагов рефал-автомата, на каждом из которых выполняется применение функции к выражению. Для этого рефал-машина отыскивает в своём поле зрения самое левое из самых внутренних активных выражений; иначе говоря, отыскиваются парные угловые скобки, не содержащие других угловых скобок, а если таких пар имеется несколько, выбирается та из них, которая текстуально в поле зрения находится левее остальных. Первый терм выражения, заключённого в угловые скобки, должен представлять собой символ-метку, служащую именем функции; оставшаяся часть выражения используется как аргумент функции.

Среди предложений, составляющих функцию, находится первое такое, образец которого можно сопоставить с аргументом функции; в ходе сопоставления приписываются значения переменным, содержащимся в образце. Затем шаблон, взятый из того же предложения, берётся за основу для формирования результата вычисления функции; попросту говоря, результатом объявляется выражение, полученное из шаблона заменой переменных на их значения. Необходимо отметить, что шаблон может содержать только переменные, имеющиеся в образце; таким образом, все переменные, входящие в шаблон, окажутся при формировании результата заменены на соответствующие выражения, и результат уже содержать переменные не будет. С другой стороны, шаблон вполне может содержать выражения в угловых скобках. В завершение шага рефал-автомат заменяет в своём поле зрения только что вычисленное активное выражение (включая ограничивающие его угловые скобки) на полученный в ходе вычисления функции результат. Следует отметить, что количество угловых скобок, находящихся в поле зрения рефал-машины, может при этом и возрасти. Выполнение программы заканчивается, когда в поле зрения рефал-машины не окажется больше угловых скобок. Выражение, содержащееся в этот момент в поле зрения, объявляется результатом выполнения рефал-программы.

https://telegra.ph/Koncepcii-10-01

Report Page