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

Описание типа

Данная структура используется для хранения информации об описании некоторого типа

type

E_type_state = ( TYS_NAMED, TYS_GENERIC );

E_type_cons = ( TC_ERR, TC_INTEGER, TC_RATIONAL, TC_ALIAS, TC_RANGE, TC_ENUM, TC_ARRAY );

//--- P_type_desc

P_type_desc = ^T_type_desc;

//--- T_type_desc

T_type_desc =

object

name: string;

//

type_state: E_type_state;

type_cons: E_type_cons;

//

ordinal: boolean;

//

alias_type,

index_type,

base_type: P_type_desc;

//

left_bound,

right_bound,

variants,

size: integer;

//

next: P_type_desc;

//

out_idx: integer;

//

procedure calc_sizes;

end;

Имя поля

Описание

name

Идентификатор типа

type_state

Классифицирует тип

TYS_NAMED

Для создания поименованных типов

TYS_GENERIC

Для создания временных типов

type_cons

TC_ERR

Ошибка

TC_INTEGER

Целый тип (integer)

TC_RATIONAL

Рациональный тип (rational)

TC_ALIAS

Унаследованный тип

TC_RANGE

Тип диапазон

TC_ENUM

Перечислимый тип

TC_ARRAY

Тип массив

ordinal

Определяет перечислим ли тип

alias_type

Если (cons = TC_ALIAS), то содержит ссылку на тип-родитель

index_type

Если (cons = TC_ARRAY), то содержит ссылку на индекс

base_type

Если (cons = TC_ARRAY|TC_RANGE), то содержит ссылку на тип базы массива

left_bound

Если тип перечислим, то определяет левую границу диапазона

right_bound

Если тип перечислим, то определяет правую границу диапазона

variants

Если тип перечислим, то определяет мощность диапазона

size

Определяет размер типа в байтах

out_idx

Определяет номер типа в таблице типов

procedure calc_size

Вычисляет размерность типа, основываясь на древовидном представлении типа

Таблица описаний типов

Данная структура используется для хранения информации об описании некоторого типа.

//--- T_type_table

T_type_table =

object

first: P_type_desc;

//

constructor init;

procedure clear;

function add: P_type_desc;

procedure add_internal_types;

function find( tn: string ): P_type_desc;

//

procedure file_dump( fn: string );

end

      1. Имя поля

        Описание

        first

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

        constructor init

        Инициализация, обнуление указателей, добавление встроенных типов

        procedure clear

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

        function add

        Добавить ячейку и вернуть указатель

        procedure add_internal_types

        Добавить встроенные типы 'integer', ‘rational’ и ‘boolean’

        function find

        Найти тип по имени и вернуть указатель

        procedure file_dump

        Вывести содержимое таблицы в память

Представляется списком, каждый элемент которого – описание типа. На момент запуска ДМП процессора список состоит из следующих элементов:

3

1

boolean NAMED ENUM Ord Nil Nil Nil 0 1 2 4

2

rational NAMED RAT N-Ord Nil Nil Nil 0 0 N-Ord 8

3

integer NAMED INT Ord Nil Nil Nil -32768 32767 65536 4

-------------------------------------------------------------------------------

Name |Type |Cons |Ord? |Alias|Idx |Base|LeftB |RightB |Variant|Size |

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