-----------------------------------------------
-- Пример программы на Акторном Прологе. --
-- (c) 2003, Алексей А. Морозов, ИРЭ РАН. --
-- Построение теоретико-модельной семантики. --
-----------------------------------------------
-- Шаг 2. Все конструкторы процессов в --
-- тексте программы заменяются обычными --
-- конструкторами экземпляров классов. --
-- Тем самым параллельная программа --
-- преобразуется в последовательную. --
-----------------------------------------------
project: (('Example'))
-- В определении проекта двойные
-- скобки оставлены, чтобы не нарушать
-- синтаксис Акторного Пролога.
-- На корректность осуществляемых
-- преобразований это не влияет.
-----------------------------------------------
class 'Example':
--
p1 = ('C1'); -- Шаг 2
--
p2 = ('C2', -- Шаг 2
target=p1,
protecting:output=data);
--
p3 = ('C3', -- Шаг 2
receiver=p1,
suspending:input=data);
--
data;
--
[
goal.
]
-----------------------------------------------
class 'C1':
--
internal_data;
--
[
goal:-
accept(internal_data).
--
accept(_).
--
message1(A):-
internal_data== A.
--
function1()= 100.
function1()= 300.
function1()= internal_data.
]
-----------------------------------------------
class 'C2':
--
target;
output;
--
data = target ?? function1();
--
[
goal:-
output == data.
]
-----------------------------------------------
class 'C3':
--
input;
receiver;
--
[
goal:-
receiver <- message1(input).
]
-----------------------------------------------
|