Процес створення компілятора вхідної мови

Поняття компілятора та теоретичні основи його роботи. Введення коду програми завантаженням текстового файлу. Опрацювання тексту лексичним та синтаксичним аналізаторами. Генерація та оптимізанія об'єктного коду. Побудова графічного інтерфейсу програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 22.01.2014
Размер файла 586,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

// Спеціальна умова, ящо це корінь

if (parent == null)

{

root = nodeToDelete.right;

return;

}

if (parent.left == nodeToDelete)

parent.right = nodeToDelete.right;

else

parent.left = nodeToDelete.right;

nodeToDelete = null; // Очистка видаленого вузла

_count--;

return;

}

// Одне із посилань вузла null, тоді

// видаляємо вузол і виставляємо ненульове посилання на його місце

if (nodeToDelete.right == null)

{

// Спеціальна умова, ящо це корінь

if (parent == null)

{

root = nodeToDelete.left;

return;

}

if (parent.left == nodeToDelete)

parent.left = nodeToDelete.left;

else

parent.right = nodeToDelete.left;

nodeToDelete = null; // Очистка видаленого вузла

_count--;

return;

}

// Обидва посилання мають значення, тоді шукаємо наступника і

// заміняємо видалений вузол наступником

// Цей попередник стає попередником наступника

TTreeNode successor = findSuccessor(nodeToDelete, ref parent);

// Зробимо тимчасову копію вузла-наступника

TTreeNode tmp = new TTreeNode(successor.name, successor.value);

// Знайдемо, на яку гілку наступника вказує попередник

// і видалимо наступника

if (parent.left == successor)

parent.left = null;

else

parent.right = null;

// Повертаємо назад значення наступників

nodeToDelete.name = tmp.name;

nodeToDelete.value = tmp.value;

_count--;

}

// Функція схематичного малювання дерева

private string drawNode(TTreeNode node)

{

if (node == null)

return "empty";

if ((node.left == null) && (node.right == null))

return node.name;

if ((node.left != null) && (node.right == null))

return node.name + "(" + drawNode(node.left) + ", _)";

if ((node.right != null) && (node.left == null))

return node.name + "(_, " + drawNode(node.right) + ")";

return node.name + "(" + drawNode(node.left) + ", " + drawNode(node.right) + ")";

}

/// <summary>

/// Виводить вигляд дерева строкою, що виглядає як

/// 50(40(30(20, 35), 45(44, 46)), 60)

/// </summary>

/// <returns>Повертає вигляд дерева</returns>

public string drawTree()

{

return drawNode(root);

}

}

}

Додаток В

Структурний вигляд згенерованої COM-програми

;==ПАРАМЕТРИ COM-ФАЙЛУ==

.model tiny

.code

org 100h

.386

;==КОД ОСНОВНОЇ ЧАСТИНИ ПРОГРАМИ==

main: ;--Ініціалізація ES та DS, обнулення edx--

mov ax,cs

mov ds,ax

mov es,ax

xor edx,edx

;--Встановлення відеорежиму:

mov ah,00h

mov al,02h ;80x25 чорнобілий текстовий режим

int 10h

;--Ставимо курсор в початок координат:--

mov ah,02

mov bh,00 ;сторінка відеопам'яті

mov dh,0 ;строка

mov dl,0 ;стовпчик

int 10h

[тут йде згенерований код тіла програми, операції, виведення на екран і т.і.]

ret

;==КІНЕЦЬ ГОЛОВНОЇ ПРОГРАМИ==

;==ПОЧАТОК БЛОКУ ПРОЦЕДУР==

;--Функція виведення на екран строки (Використовувати LEA EDX,ім'яізмінної перед викликом):--

PSB proc ;Print String in Bios int

xor ecx,ecx

;--Підрахунок кількості символів:--

pks:

mov al,[EDX+ECX]

cmp al,"$"

je pksg

inc cx

mov i,cx

jmp pks

pksg:

xor esi,esi

psbd1:

;--Друк символу:--

mov ah,0Eh

mov al,[EDX+ESI] ;ASCII-код символу

mov bh,00;сторінка відеопам'яті

mov cx,01h

int 10h

;--команди циклу:--

inc si

cmp si,i

je psbd2

jmp psbd1

psbd2:

ret

PSB endp

;--Процедура переведення курсору на новий рядок:--

ENT proc

mov ah,03h

mov bh,00h

int 10h

mov ah,02h

mov bh,00h

inc dh

mov dl,00h

int 10h

ret

ENT endp

;--Ф-я виведення слова в шістнадцятковій системі (необх. слово заносимо в wpt перед використанням):--

WORDPRINT proc

pusha

mov cx,16d

l1:

sub cx,4h

mov ax, wpt

shr ax, cl

and ax,0fh ;маскою виділяємо молодший розряд

cmp al,9h

jbe pc ;cifra

cmp al,0Fh

jbe pb ;bukva

pc:

add al,30h

jmp prnt

pb:

add al,37h

jmp prnt

prnt:

mov asciitemp,al

call PSymB

jcxz l2

jmp l1

l2:

popa

ret

WORDPRINT endp

;--Функція виведення на екран символу (символ в asciitemp):--

PSymB proc

pusha

;--Друк Символа власною персоною:--

mov ah,0Eh

mov al,asciitemp

mov bh,00h

mov cx,01h

int 10h

popa

ret

PSymB endp

;--Виведення одного біту слова: (вик-є wpt - слово та n - номер біту)--

PBB proc

mov ax,wpt

mov bx,01h

mov cl,n

shl bx,cl ;Підготовка маски

and ax,bx;Накладання маски

mov al,30h ;Код нуля

jz endpbb

mov al,31h ;Код одиниці

endpbb:

;--Друк:--

mov ah,0Eh

mov bh,00h

mov cx,01h

int 10h

ret

PBB endp

;==КIНЕЦЬ БЛОКУ ПРОЦЕДУР==

;==ПОЧАТОК БЛОКУ ОГОЛОШЕННЯ ЗМІННИХ==

;змінні процедур:

i dw ?

n db ?

wpt dw ? ;wordprint temp

asciitemp db ?

;змінні тіла програми:

[сюди генератор заносить числові та строкові змінні]

;==КIНЕЦЬ БЛОКУ ОГОЛОШЕННЯ ЗМIННИХ==

end main

Размещено на Allbest.ru


Подобные документы

  • Методика розробки компілятору з вхідної мови програмування Pascal, оболонка, якого розроблена в середовищі програмування Borland C під операційну систему Windows. Блок-схема програми. Розробка оптимізатора та генератора коду. Тестування компілятора.

    курсовая работа [218,6 K], добавлен 04.06.2011

  • Огляд існуючих методів розробки компіляторів, детальний опис мови. Характеристика та специфіка процесу розробки програми компілятора на рівні блок-схем і тексту програми. Подання тексту компілятора, а також результатів тестування розробленої програми.

    курсовая работа [510,2 K], добавлен 03.06.2011

  • Побудова інформаційно-математичної моделі задачі. Визначення структури даних, розробка інтерфейсу. Складання коду програми за допомогою мови програмування Delphi 7.0. Реалізація проекту у візуальному середовищі. Інструкція з експлуатації програми.

    курсовая работа [601,3 K], добавлен 03.09.2009

  • Побудова інформаційно-математичної моделі та алгоритм задачі. Визначення структури даних. Розробка інтерфейсу програми з користувачем. Складання коду програми. Реалізація проекту у візуальному середовищі. Тестування та інструкція з експлуатації програми.

    курсовая работа [1,3 M], добавлен 14.04.2009

  • Розробка програми, яка вираховує з введених чисел парні та непарні та додає парні числа. Особливості синтаксису й семантики операторів мови С++. Перевірка коректності введення кількості чисел. Написання коду програми, проведення її тестування на прикладі.

    лабораторная работа [860,5 K], добавлен 20.12.2012

  • Вивчення складових частин, основних принципів побудови і функціонування компіляторів. Поняття хешування, сутність алгоритму роботи лексичного аналізатора. Практичне освоєння методів побудови простих компіляторів для заданої вхідної мови - Borland Delphi.

    дипломная работа [763,6 K], добавлен 27.05.2013

  • Основи Web-програмування. Використання мови HTML. Базові елементи HTML. Форматування тексту. Вирівнювання тексту та горизонтальна лінія. Значення RGB- коду. Таблиці та списки, посилання та робота з ними. Створення посилань на документи і файли.

    курсовая работа [40,9 K], добавлен 12.02.2009

  • Характеристика дослідження методу введення обмежених обсягів текстової інформації в ЕОМ. Аналіз механізму розробки програми, що передбачає можливість запису текстової інформації до файлу, а також завантаження тексту з файлу. Порядок роботи з програмою.

    курсовая работа [74,1 K], добавлен 05.02.2010

  • Розробка резидентної програми за допомогою мови асемблер, яка дозволить перехопити зміст текстового та графічного екрану у файл (відповідно TXT і BMP). Вибір та обґрунтування методу розв'язки даної задачі. Алгоритм і реалізація програми, системні вимоги.

    курсовая работа [14,9 K], добавлен 08.08.2009

  • Зчитування числової інформації з файлу DATA.txt, аналізування, обробка та виконання графічного відображення. Редагування файлу тексту програми. Метод відображення кнопки з надписом на екрані. Створення нових класів на основі інших, вже створених.

    курсовая работа [196,2 K], добавлен 14.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.