----------------------------------------------- -- Пример программы на Акторном Прологе. -- -- (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). ] ----------------------------------------------- |