Re: Refal interpreter


Subject: Re: Refal interpreter
From: A.A.Vladimirov (vladimi@mech.math.msu.su)
Date: Fri Jan 21 2005 - 16:39:08 MSK


> 1. Что представляет реализуемое Вами подмножество языка Рефал и его синтаксис.
Если в общих чертах, то реализуется нечто типа первоначального Рефала, а
именно:
1) типы переменных - e, s, и w; имена состоят из произвольного числа
букв и заключаются в "/";
2) функции пишутся через "k" и ".";
3) красивостей (вроде where- и with-выражений) не предусмотрено.
4) комментарии начинаются с "#" (вместо "*"), строки "склеиваются"
посредством "\" (вместо "+");
5) строки делятся на:
        5.1) пустые (состоят только из пробелов и табуляций) - игнорируются.
        5.2) начинающиеся с символа "$" - это "команды интерпретатора" (см.
ниже)
        5.3) начинающиеся с буквы - определения функций; должны состоять из
имени функции и первой формулы подстановки
        5.4) начинающиеся с пробела или табуляции - продолжение определения
функции; состоит из формулы подстановки.
6) $-команды: $use (подключение библиотеки встроенных функций); $include
(включение в программу другого рефал-файла; аналогично команде из C);
$start (определение начального поля зрения).
7) кодировкой, на которой пишется скрипт, является UTF-8 (в частности,
можно применять чистый ASCII).
8) все символы - натуральные числа (начиная с нуля и заканчивая
переполнением ОЗУ). Соответственно, строка типа 'ля-ля-ля' с внутренней
точки зрения представляет собой последовательность номеров входящих в
неё букв.

Например, всеми любимое оборачивание строк, берущихся из файла
'1.txt' (и записанных в любой однобайтовой кодировке), с записью
результата в '2.txt' (в той же кодировке) может выглядеть так, как это
сделано в программе из вложенного архива. Надеюсь, синтаксис
используемых функций интуитивно понятен :)

> 2. Вы обещали поменять комментарии на более читабельный (нежели "ломаный Эсперанто" :-) )
> язык. Но относится ли это намерение к идентификаторам в программе? Глядя на имя
> "nterp_preni_nomon", возникает какая-то ассоцияция с интерпретацией, но не более.

Ну, комментарии - это вопрос понятный. А идентификаторы - неужели же они
действительно столь нечитаемы? Лексика-то всё же интернациональная (хотя
чаще - романская, а не германская)...

> Кстати, мне часто попадалось имя "kuranta", что оно означает?

"Текущий". Обычно указывает на обрабатываемый в данный момент элемент
списка.

С уважением,
Антон Владимиров




This archive was generated by hypermail 2b25 : Fri Jan 21 2005 - 16:39:57 MSK