Subject: Scp4's news.
From: Andrei P. Nemytykh (nemytykh@math.botik.ru)
Date: Sat Sep 02 2000 - 23:57:48 MSD
Об'явление.
На страничке http://www.botik.ru/pub/local/scp/refal5/
выложена новая версия SCP4.
Что нового:
-----------------------------------------------------------------
- Данная версия SCP4 ТРЕБУЕТ версии РЕФАЛА-5 с НОВЫМ синтаксисом
(которую можно взять на той же странице ).
Под старой версией Рефала-5 данная версия SCP4 работать НЕ будет.
- ВХОДНОЙ ЯЗЫК Scp4 ИЗМЕНЁН. Scp4 преобразовывает программы
в новом синтаксисе Рефала-5.
Необходимо ПЕРЕНЕСТИ ВСЕ Ваши модули под НОВЫЙ синтаксис.
- Scp4 для старого синтаксиса Рефала-5 не поддерживается.
- Scp4 под операционной системой MS DOS не поддерживается.
- Исправлено несколько ошибок.
Большое спасибо Александру Корлюкову , за пересланные мне тесты на
ошибки.
- Входной язык Scp4 расширен:
-- реализована специальная стандартная функция
ScpArg.
Эта функция может быть вызвана из
преобразовываемой
программы <ScpArg s.number> и должна быть
объявлена в ней
как внешняя и исполняемая. Если Вы вызываете
Scp4 с
дополнительным аргументом вида
user+string1+string2...+stringN ,
тогда результат вызова этой функции в момент
суперкомпиляции
будет строка с номером s.number. Функция
существует только в
момент суперкомпиляции.
( Например: SYSTEM> scp4 config.mst
user+my_file.txt+your_file.txt
<ScpArg 0> ==> 'user'
<ScpArg 1> ==> 'my_file.txt'
<ScpArg 2> ==>
'your_file.txt'
<ScpArg 3> ==>
/* empty */
)
- Появился новый псевдокомментарий:
*$VERSION e.version;
-- он позволяет описывать желаемую версию Scp4.
inref4.bat выдаст предупреждение, если
актуальная версия не
совпадает с объявленной.
-- имя текущей версии можно узнать двумя способами:
-- вызвать внешнюю исполняемую
функцию <Scp4Version>
из программу, которая
будет преобразовываться;
-- посмотреть определение этой
функции в модуле KEY.REF
- Появился новый файл TRACE.TXT, где даны некоторые комментарии к
Scp4-трассировке.
- Добавлено несколько новых демонстрационных примеров.
(Например:
программа #1:
$ENTRY Go { s.1 (e.x) = <Subst (s.1 s.1) e.x>; }
Subst {
(s.what e.value) = ;
(s.what e.value) s.what e.where
= e.value <Subst (s.what e.value) e.where>;
(s.what e.value) s.1 e.where
= s.1 <Subst (s.what e.value) e.where>;
(s.what e.value) (e.1) e.where
= (<Subst (s.what e.value) e.1>) <Subst (s.what e.value)
e.where>;
}
преобразуется к Go { s.1 (e.x) = e.x; }
программа #2:
$ENTRY Go { e.x = <Fbc <Fab e.x>>; }
Fab { 'a' e.x = 'b' <Fab e.x>;
s.1 e.x = s.1 <Fab e.x>;
= ;
}
Fbc { e.x = <Fbc1 e.x> (e.x); }
Fbc1 { 'b' e.x = 'c' <Fbc1 e.x>;
s.1 e.x = s.1 <Fbc1 e.x>;
= ;
}
преобразуется к
$ENTRY Go { e.41 , <F46 e.41 >:e.130 = <F11 e.41 > (e.130 )
; }
F46 { 'a' e.41 = 'b' <F46 e.41 > ;
s.118 e.41 = s.118 <F46 e.41 > ;
= ;
}
F11 { 'a' e.41 = 'c' <F11 e.41 > ;
'b' e.41 = 'c' <F11 e.41 > ;
s.103 e.41 = s.103 <F11 e.41 > ;
= ;
}
)
( см. DOC/USE.TXT и сами примеры DEMO/)
Андрей Немытых.
This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:58 MSD