Скачиваний:
10
Добавлен:
01.05.2014
Размер:
1.03 Mб
Скачать

Структуры данных дмп-процессора

Общие структуры:

{Pointers}

P_attribute_link = ^T_attribute_link;

P_attribute = ^T_attribute;

P_dmp_stack_obj = ^T_dmp_stack_obj;

P_dmp_stack = ^T_dmp_stack;

Структура данных для атрибута:

{T_attribute_link}

T_attribute_link =

record

attr: P_attribute; {Attribute ptr}

next: P_attribute_link; {Next link ptr}

end;

{T_attribute}

T_attribute =

object

idx: integer; {Attribute index}

attr_value: integer; {Attribute value}

attr_type: integer {Attribute type}

link: P_attribute_link; {Links for that attribute}

next: P_attribute; {Next attribute ptr}

{}

constructor init; {Init attribute obj}

procedure clear; {Clear attribute obj}

function add_link: P_attribute_link; {Add link}

procedure add_link_to( attr: P_attribute );

procedure copy_links_from( attr: P_attribute );

end;

Имя поля

Описание

idx

Номер атрибута

attr_value

Значение атрибута

attr_type

Тип атрибута

link

Указатель на начало списка атрибутов (копирующее правило)

next

Указатель на следующий атрибут

constructor init

Инициализация, обнуление указателей

procedure clear

Очистка памяти структуры и ее подструктур

function add_link

Добавить атрибуту ссылку и вернуть указатель на ее структуру

procedure add_link_to

Добавить атрибуту ссылку на другой атрибут

procedure copy_links_from

Скопировать список ссылок от другого атрибута

        1. Структура символа

Каждый символ грамматики имеет свой уникальный номер. Элементами стека являются объекты следующей структуры:

{T_dmp_stack_obj}

T_dmp_stack_obj =

object

state: E_alphabet; {Stack object index}

attr: P_attribute; {Attributes for object}

{}

next: P_dmp_stack_obj; {Next object ptr}

{}

constructor init; {Init object}

procedure clear; {Clear object}

function add_attr: P_attribute; {Add attribute to object}

function get_attr( i: integer ): P_attribute; {Get attribute by number}

procedure push_data_down;

end;

Имя поля

Описание

state

Конкретный символ из полного алфавита

attr

Указатель на список атрибутов

next

Указатель на следующий элемент стека

constructor init

Инициализация, обнуление указателей

procedure clear

Очистка памяти структуры и ее подструктур

function add_attr

Добавить атрибут и вернуть указатель на его структуру

function get_attr

Получить атрибут по номеру

procedure push_data_down

        1. Магазин дмп процессора

Магазин ДМП-процессора представляется списком элементов типа T_dmp_stack_obj. Помещение объекта в магазин подразумевает собой добавление его в список в качестве первого элемента. Изначально в списке содержится маркер дна магазина.

{T_dmp_stack}

T_dmp_stack =

object

first: P_dmp_stack_obj; {Root of list}

{}

constructor init; {Init of stack}

procedure clear; {Clear of stack}

function add_top: P_dmp_stack_obj; {Add one top element}

procedure del_top; {Del one top element}

{}

function add_top_symbol( t: E_alphabet; attr_count: integer ): P_dmp_stack_obj;

function step_over: P_dmp_stack_obj;

{}

procedure dump;

end;

Имя поля

Описание

first

Указатель на первый элемент стека

constructor init

Инициализация, обнуление указателей

procedure clear

Очистка памяти структуры и ее подструктур

function add_top

Добавить элемент в верхушку стека и вернуть указатель на него

procedure del_top

Удалить верхний элемент и очистить его память

function add_top_symbol

Добавить в верхушку стека заданный символ алфавита с заданным количеством атрибутов

function step_over

«Перешагнуть» через верхушку стека, вернуть указатель на бывшую верхушку, элемент пока не удалять

procedure dump

Вывести содержимое стека на экран (для отладки)

Соседние файлы в папке Бяша