Реферат на тему:
Інтерпретатор 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)
Проміжки, дужки, коми, одинарні та подвійні лапки, крапка, крапка з комою відіграють спеціальну роль в Ліспі. Одинарним Escape-символом є . Багатократним Еscape-символом є |. Спеціальні літери можуть використовуватися у PRINT-іменах символів, але для цього перед ними треба ставити , або весь рядок брати в |. Вирази |q w e| та |sym(bol| є символами. Для використання літер та | в символах необхідно ставити перед ними . Якщо виводиться на екран символ, який містить спеціальні літери, то він виводиться з багатократним escape-символом. Програмна змінна *PRINT-ESCAPE* булевського типу відповідає за виведення escape-символів. Якщо вона дорівнює NIL, то escape-символи на екран не виводяться. Подвійні лапки “ грають роль літери |. Розглянемо приклади (спочатку *PRINT-ESCAPE*=T):
$ (SETQ |sym(bol| 3) $ (SETQ a |q w e|) $ sa $ sa
$ |sym(bol| $ a sa |sa||
3 |q w e|
$ (SETQ *PRINT-ESCAPE* NIL) $ (SETQ a |q w e|) $ (SETQ “sa” 2)
$ sa $ a $ |sa|
sa q w e 2
Число є іншим примітивним об’єктом. Воно може бути цілим або дробовим . Ціле число вводиться як послідовність цифр, перед якою може стояти знак мінус. За внутрішнім поданням цілі числа діляться на малі цілі (до 65536) та великі цілі. Оскільки значенням числа завжди є саме число, то немає необхідності перед ним ставити апостроф. Чотири атрибути характеризують число як об’єкт даних:
— елемент тотожності. Це є вказівник на саме число. Він доступний як CAR-елемент числа.
— знак. Він містить один з наступних символів, які характеризують тип числа:
додатне від’ємне $ (CDR 5.6) $ (CAR 5.6)
мале NIL T MACRO 5.6
велике LAMBDA NLAMBDA $ (CDR 1212) $ (CDR -121212)
дробове MACRO SPECIAL NIL NLAMBDA
Значення атрибута знака доступне як CDR-елемент числа.
— довжина. Якщо число є малим цілим, то цей атрибут містить значення цілого. Якщо число — велике ціле, то елемент ‘довжина’ містить довжину слова вектора числа. Якщо число дробове — елемент містить вказівник на його чисельник, який обов’язково повинен бути цілим (додатним або від’ємним).
— вектор. Якщо число мале ціле,
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.