UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75843
останнє поновлення: 2016-12-04
за 7 днів додано 10

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

реферати, курсові, дипломні:

Українські рефератиРусские рефератыКниги
НазваІнтерпретатор muLisp (реферат)
Авторdimich
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось1865
Скачало264
Опис
ЗАКАЧКА
Замовити оригінальну роботу

Реферат на тему:

 

Інтерпретатор muLisp

 

1. Примітивні об’єкти даних

 

Примітивними об’єктами даних є символи, числа та конси. muLisp має

безліч функцій розпізнання, порівняння, комбінування та обробки цих

об’єктів. Це дозволяє конструювати будь-які складні об’єкти даних. Як

було сказано раніше, muLisp має два типи даних: атоми та списки. Атоми

поділяються на символи та числа. Списки є підмножиною об’єктів, які

мають більш загальну структуру — бінарне дерево. Вони створені за

допомогою консів.

 

Кожний об’єкт даних конкретного типу складається із фіксованої кількості

елементів - вказівників. Ці елементи можуть вказувати на інші об’єкти

даних. Множина усіх об’єктів даних утворює зв’язану мережу вказівників,

яка називається область даних MuLisp.

 

Символ є об’єктом даних, з яким пов’язано 4 атрибути, кожен з яких є

вказівником на:

 

— PRINT - ім’я. Це унікальний рядок ASCII символів, за допомогою якого

система ідентифікує символ при операціях введення-виведення. PRINT -

ім’я не може бути змінене. Імена обмежені за розміром: вони повинні мати

не більше ніж 65536 символів. Жодні два символи не можуть мати однакових

PRINT -імен. Коли PRINT - ім’я генерується або читається, спрацьовує

алгоритм хешування, який визначає існування атома з таким іменем. Якщо

такий атом існує, то саме він і використовується, інакше – утворюється

новий атом з новим PRINT - ім’ям.

 

— поточне значення. Значенням символа може бути будь-який об’єкт даних,

який зберігається в комірці пам’яті. Якщо в середовищі Ліспу ввести

PRINT-ім‘я символу, то на виході буде його значення. Поточне значення

доступно як CAR - елемент символа.

 

— список властивостей. Містить значення властивостей символа,

проіндексованих за ключем. Його форма має вигляд: (ім’я1 значення1 ім’я2

значення2 ... ім’яN значенняN). При ініціалізації системи список

властивостей є порожнім (дорівнює NIL). Його можна змінити за допомогою

функцій властивостей та прапорців. Доступний як CDR - елемент символа.

 

— визначення функції. При створенні символу в muLisp цей атрибут

дорівнює “функція невизначена”. Визначення функції складається або за

шаблонами машинної мови, або на D-коді. Значення цього атрибута можна

отримати в результаті виконання функції флагів (GETD символ).

 

SYMBOLP є функція, яка розпізнає символ. Вона повертає Т, якщо аргумент

є символом і NIL в протилежному випадку.

 

$ (SYMBOLP ‘XYZ) $ (SYMBOLP 41)

 

T NIL

 

$ (SYMBOLP ‘(q w)) $ (SYMBOLP ‘())

 

NIL T

 

В Коммон Ліспі (файл common.lsp) визначені функції SYMBOL-VALUE, яка

повертає значення символа, та SYMBOL-PLIST, яка повертає весь список

властивостей символа.

 

(DEFUN SYMBOL-VALUE (SYM) (DEFUN SYMBOL-PLIST (SYM)

 

((SYMBOLP SYM) (CAR SYM) ) ) ((SYMBOLP SYM) (CDR SYM) ) )

 

Узагальненою функцією присвоєння є SETF, яка визначена в common.lsp.

Вона заносить данні в комірку пам’яті символа: (SETF <комірка пам’яті>

<значення>). Через функцію SETF можна представити описані раніше функції

SET та SETQ.

 

(SETQ x y) це (SETF x y)

 

(SET x y) це (SETF (SYMBOL-VALUE x) y)

-----> Page:

0 [1] [2] [3] [4] [5] [6]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ