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