Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11656
Последний выпуск: 19.06.2015

Пример 2. Таблица имен.

(**************************************)
(*      Процедуры для таблицы имен    *)
(**************************************)
const WordLen = 32;
      TabSize = 1024;
      MaxKey = 12;
Type bloc = string [WordLen];
    EnumTag = (Dunno, TagRecord, TagInt);
      (* Ячейка таблицы имен *)
    ncell = record
       Pname : bloc;
       Tag : EnumTag;
       Ref : integer;
       Fields : integer;
    end;
    (* Таблица имен *)
var TableOfNames : array [1..TabSize] of bloc;
    TabLen : integer; (* Размер таблицы имен *)

procedure IniTab;
begin
    TabLen := 0;
    PutIn("procedure");
    PutIn("main");
    PutIn("end");
    PutIn("int");
    PutIn("record");
    PutIn("if");
    PutIn("then");
    PutIn("else");
    PutIn("close");
    PutIn("while");
    PutIn("do");
    PutIn("print");
end;

(* Найти переменную с данным именем *)
int Find (Name: bloc);
var i : integer;
begin
    Find := 0;
    for i:=MaxKey+1 to TabLen do
        if Name = TableOfNames [i].Pname;
            then Find := i;
end;

(* Создать новую запись таблицы имен
    с данным именем *)
procedure PutIn (Name:bloc);
begin
    TabLen := TabLen +1;
    With TableOfNames [TabLen] do
    begin
        Pname  := Name;
        Tag    := Dunno;
    end;
end;

(* Если номер записи не больше MaxKey,
     то это на самом деле не имя,
     а ключевое слово *)
Function KeyEntry (t:integer) : boolean;
begin
    KeyEntry := (t>0) and (t
Назад | Оглавление | Вперед

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог