Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DM-6_lec.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.32 Mб
Скачать

Общие свойства абстрактных машин.

Определение.

Абстрактная машина (АМ) - способ формализованного задания алгоритма для математически строго описываемых языков.

(АМ) - характеризуется множеством регистров, множеством состояний регистров и правилами перехода от состояния к состоянию.

два регистра памяти

быстрого доступа

Три стека

Правила перехода из состояния в состояние задаются кодом АМ.

Информация о состоянии регистров может быть представлена в некоторой структуре данных.

Структура [исходное состояние] => Структура [итоговое состояние]

<Новое состояние>=<Функция перехода>(старое состояние).

Функция, описывающая действие оператора кода АМ, имеет в качестве своих аргументов регистры этой машины с содержащимися в них данными, при этом переход машины из

одного состояния в другое соответствует шагу редукции дерева программы исходного языка.

Определение.

Верификация - способ проверки правильности программ на основе теоретических знаний.

Категориальная абстрактная машина (кам).

КАМ состоит из трех регистров: два стека (код и стек) и регистр терм.

Код Стек

Терм

И элементы стека, и элементы терма - символьные выражения, в них могут размещаться структуры символьных данных.

В начале программа в виде кода содержится в стеке ''кода'', ''стек'' пуст.

В конце «код» пуст, в “ терме ” содержится результат. Правила перехода из состояния в состояние определяются набором инструкций машины.

Определение.

Состоянием машины называется тройка <T,C,S>, где T-терм как структурированное значение, например граф; C - код; S - стек или дамп (вспомогательная память).

Закон функционирования КАМ изменяет старую тройку на новую: <T, C, S>→<T|,C|,S|>.

Входной язык КАМ: <,>;Fst; Snd; Λ; ’; (,); app

КАМ – это вариант КЛ, вовлекающий ДЗК, а также техническое устройство, вычисляющее значение выражений.

Средства КЛ имеют категориальный характер, т.е. в категориях используются композиции и тождества, в декартовых категориях дополнительно вводят произведение с использованием спаривания < , > , а также проекции Snd и Fst. Декартовы замкнутые категории дополнительно содержат каррирование Λ, апплицирование и средства экспонирования, т.е. средства построения функциональных правил.

Цикл работы кам

1) Выбор категориального терма, построенного из комбинаторов.

2) Означивание этого терма производится путем его аппликации к среде.

Начальное состояние

Конечное состояние

Терм

Код

Стек

Терм

Код

Стек

(S,t)

car:C

A

S

C

А

(S,t)

cdr:C

A

T

C

А

S

(quoteB)C

A

B

C

А

S

(cur C) C1

A

[C:S]

C1

А

( [C:S] , t )

app. C1

A

(S,t)

C:C1

А

T

cons C

S:A

(S,t)

C

А

S

push.C

A

S

C

S:A

T

swap.C

S:A

S

C

T:A

А - вектор содержимого стека,

”:” - разделитель,

[C:S] - совокупность.

В языке ДЗК (декартово замкнутые категории) использовано 8 символов, которым ставятся в соответствие инструкции КАМ:

Сar = Fst - получает терм (s,t) и заменяет его на s.

Cdr = Snd - получает терм (s,t) и заменяет его на t.

Quote = ’ - получает терм s и оставляет его без изменений

Cur = Λ - замещает терм s на С:s, где C - код, инкапсулированный в Λ.

Cons = > - строит совокупность из вершины стека и терма, заменяет терм на эту

совокупность и проталкивает стек.

app = App - получает терм (C:s,t), замещает его на (s,t), а оставшейся части кода

устанавливает префикс C.

swap = , - меняет содержимое терма и вершины стека местами.

push = < - берет терм и помещает его в вершину стека.

Стек Код

3

(()…3)

cаr

что-то

еще

А С Вместо рор используется пара из swap и cons.

App○<x,y> Term

App(<x,y>Term)

Код: push,[x],swap,[y],cons,app

Пример КАМ кода: сложение 2 и 3

((+2)3) –это аппликация (+ к 2 ) →(+2) к 3

push push quote + swap quote 2 cons app swap quote 3 cons app

<<’+,’2>App,’3>App

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]