Re: Refal+ abstract syntax


Subject: Re: Refal+ abstract syntax
From: Andrey Slepuhin (pooh@msu.ru)
Date: Thu Dec 16 1999 - 06:11:08 MSK


Добрый день всем!

Извиняюсь за некоторую паузу в дискуссии.
Я еще раз внимательно посмотрел на проект абстрактного синтаксиса
и сделал свой вариант. Он лежит на

http://forest.nmd.msu.ru/~pooh/refal_abstract_syntax.html

На самом деле принципиальных различий практически нет, так что
я думаю, что утверждение окончательного варианта не за горами.
Что я изменил (по порядку):

1) t.ProgramFile заменено на t.Module (чисто косметическая замена :-))
2) t.Source удалено - вместо этого нужно использовать прагмы
   (тем более, что абстрактный синтаксис не обязательно может
   иметь какой-то исходный текст)
3) t.Import удалено - на уровне абстрактного синтаксиса нельзя ничего
   вытащить из других модулей, т.к. их представление в АС может и не
   существовать. Вместо этого каждый объект имеет свой описатель
   IMPORT/EXPORT/LOCAL. Если нужно сохранить информацию о том,
   из каких модулей импортировались объекты - можно использовать прагмы.
4) Описания определений всех объектов изменены в соответствии с 3).
5) Добавлен оператор FLUSH - см. мое письмо от 26 ноября в 16:14.
   В принципе возможна альтернатива - результаты по умолчанию
замещаются,
   но есть оператор CONC.
6) NOT и ITER сохранены как есть. С моей точки зрения их раскрытие
   слишком далеко двигает нас в сторону виртуального кода и может
   привести к менее удобному представлению при компиляции в
   императивные языки.
7) Немного изменены прагмы - но это не существенно.
8) В конце приведен вариант синтаксиса, в котором есть нераскрытые
константы.

Кроме того, он, мне кажется, красивее выглядит :-)))
Так что изменения лучше будет вносить туда.

Всего доброго,
Андрей.

P.S. Вопрос: Что такое t.Initializer и с чем его едят? По смыслу это
похоже на конструкторы глобальных объектов в C++. Верно ли, что это
расширение из Рефала-6?



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:58 MSD