Теми рефератів
Авіація та космонавтика Банківська справа Безпека життєдіяльності Біографії Біологія Біологія і хімія Біржова справа Ботаніка та сільське гос-во Бухгалтерський облік і аудит Військова кафедра Географія
Геодезія Геологія Держава та право Журналістика Видавнича справа та поліграфія Іноземна мова Інформатика Інформатика, програмування Історія Історія техніки Комунікації і зв'язок Краєзнавство та етнографія Короткий зміст творів Кулінарія Культура та мистецтво Культурологія Зарубіжна література Російська мова Маркетинг Математика Медицина, здоров'я Медичні науки Міжнародні відносини Менеджмент Москвоведение Музика Податки, оподаткування Наука і техніка Решта реферати Педагогіка Політологія Право Право, юриспруденція Промисловість, виробництво Психологія Педагогіка Радіоелектроніка Реклама Релігія і міфологія Сексологія Соціологія Будівництво Митна система Технологія Транспорт Фізика Фізкультура і спорт Філософія Фінансові науки Хімія Екологія Економіка Економіко-математичне моделювання Етика Юриспруденція Мовознавство Мовознавство, філологія Контакти
Українські реферати та твори » Информатика, программирование » Розробка компілятора з вхідної мови програмування

Реферат Розробка компілятора з вхідної мови програмування

МІНІСТЕРСТВО освіти и науки України

Національний университет "Львівська політехніка"

Курсова робота

З дісціпліні: В«Системне програмуванняВ»

на тему:

"Розробка компілятора з вхідної мови програмування "

Виконала: студ. гр. КІМ-21з

Мевшук Г.Г.

Львів 2011


Анотація

Згідно заданого Завдання в даного курсового проекті розроблено компілятор з вхідної мови програмування Pascal. Оболонка компілятора розроблено в середовіщі програмування Borland C Під операційну систему Windows и в опис проекту не входити. Сам компілятор Написати на мові Pascal, та поданий у пояснювальній запісці, а кож разом з Оболонков в електронной варіанті. У пояснювальній запісці подано детальний опис мови, огляд існуючіх методів Розробка компіляторів, а кож описано процес Розробка Програми компілятора на рівні блок-схем и тексту прогр. До проекту додано результати тестирование прогр.


Зміст

Вступ

1. Завдання на курсовий проект

2. Формально опис вхідної мови програмування

3. Розробка компілятора вхідної мови програмування

3.1 Розробка лексічного аналізатора

3.1.1 Розробка блок-схеми Програми

3.2 Розробка синтаксичною аналізатора

3.2.1 Обробка синтаксичних помилок

3.3 Розробка семантичності аналізатора

3.4 Розробка оптімізатора коду

3.5 Розробка генератора коду

4. Відладка та тестирование компілятора

4.6.1 Виявлення лексічніх помилок

4.6.2 Виявлення синтаксичних помилок

4.6.3 Виявлення семантичності помилок

4.6.4 Загальна Перевірка коректності роботи транслятора

Висновки

Література

додатка


Вступ

Компілятор - ції программа, Яки чітає текст прогрів, напісаної на одній мові - початковій, и транслює (переводити) Його в еквівалентній текст на іншій мові - цільовій. Одним з Важливе моментів трансляції є Повідомлення користувача про Наявність помилок в початковій Програмі.

Створення компіляторів є одною з невід'ємніх частин системного програмного забезпечення. Одним Із Завдання компілятора є переведення написаного тексту Програми у машинний код, Який винен відповідати комп'ютерній сістемі. Оскількі сьогоднішній годину - годину великого розвітку комп'ютерної Галузі, то створеня машинний код з годиною стає застарілім, тобто НЕ відповідає принципу оптимального Використання комп'ютерних ресурсів. Тому для Запобігання цього Явища необхідно створюваті Нові компіляторі, які б відповідалі потребам теперішнього часу.

Проблема компіляції полягає в пошуках відповідності тексту вхідної Програми конструкціям, Що візначені Граматик. Граматика візначає форму або синтаксис допустимих віразів мови. Тому текст вхідної мови Зручний подаваті у вігляді послідовності лексем, Що є неподільнімі Одиниця мови. За допомог компілятора програміст винен мати можлівість редагуваті текст вхідної мови. Для цього компілятор має виявляти ВСІ невідповідності тексту Програми конструкціям мови и у випадка відсутності помилок генеруваті об'єктній код або виконавчий модуль.

на Першому погляд, різноманітність компіляторів пріголомшує. Вікорістовуються тісячі Початкова мов, от традіційніх, таких Як Fortran и Pascal, до спеціалізованіх, вінікаючіх у Всіх областях комп'ютерних технологій. Цільові мови не менше різноманітні - ції можут буті Інші мови програмування, Різні машінні мови - от мов мікропроцесорів до суперкомп'ютерів. Іноді компіляторі класіфікують Як однопрохідні, багатопрохідні, віконуючі, відлагоджуючі, оптімізуючі - залежних від призначення и Принципів та технологій їх Створення. Чи не дівлячісь на уявним складність и різноманітність, Основні Задачі, віконувані різнімі компіляторамі, по суті, одні и ті ж. Розуміючі ці Задачі, ми можемо створюваті компіляторі для різніх Початкова мов и цільовіх машин з використаних одних и тих же базових технологій. Знання про організацію и написання компіляторів істотно зрослі з часів дерло компіляторів, Що з'явилися на качанах 1950-х рр.. СЬОГОДНІ доладно візначіті, коли самє з'явився на світ Перший компілятор, оскількі в ті роки проводить Багато експеріментів и розробок різнімі Незалежності групами. В основного метою ціх розробок Було перетворення в машинний код аріфметічніх формул. У 50-х роках про компіляторі ходила слава Як про прогрів, украй складні в напісанні (Наприклад, на написання Першого компілятора Fortran Було вітрачено Людиною 18 - РОКІВ роботи). З тих пір розроблені різноманітні сістемні технології Рішення багатьох задач, Що вінікають при компіляції. Крім того, розроблені хороші мови реалізації, програмні середовища и Програмний інструментарій. Проблема компіляції полягає в пошуках відповідності тексту вхідної Програми конструкціям, Що візначені Граматик. Граматика візначає форму або синтаксис допустимих віразів мови .. Тому текст вхідної мови Зручний подаваті у вігляді послідовності лексем, Що є неподільнімі Одиниця мови. За Допомога компілятора програміст винен мати можлівість редагуваті текст вхідної мови. Для цього компілятор має виявляти ВСІ невідповідності тексту Програми конструкціям мови и у випадка відсутності помилок генеруваті об'єктній код або виконавчий модуль. СЬОГОДНІ от компілятора вімагається кож Створення оптімізованого коду прогр. Того Створення ефективного Виконавче коду є Дуже проблеми в наш час, бо для Створення цього необхідно враховуваті ВСІ можліві варіанті покращеної апаратної частині, Розвиток якої досяг СЬОГОДНІ теоретичної Межі продуктівності.

Завдякі цьому "солідній компілятор "може буті реалізованій навіть Як курсова робота по Проектування компіляторів.


1. Завдання на курсовий проект

Розробити компілятор з вхідної мови програмування короткий опис якої подано ніжче (у відповідності з завданні варіантом) з віводом необхідної проміжної інформації на шкірному кроці. Розробити інтерфейс користувача (інтегроване середовище програмування вхідною мовою).

Варіант № 13

У табліці варіанта Завдання Використана наступні позначені:

A: Тип даніх: byte (1).

B: Додаткова аріфметічна Операція: ^ (піднесення до степеня).

C: Додаткова логічна Операція: NOT.

D: Оператор циклу: do-while (2).

№ A B C D 13 1 (byte) ^ NOT do-while


2. Формально опис вхідної мови програмування

Розробити компілятор заданої вхідної мови програмування.

- три тіпі даніх: логічній тип даніх (boolean), знакові цілочісельній тип (1byte) та беззнакових цілочісельній тип розміром 1 байт;

- змінніх з довільної довжина;

- аріфметічні Операції над цілімі: +, -, *, /, "-" (унарний мінус), ^ (Операція піднесення до ступеня);

- символи групування аріфметічніх операцій "(", ")"

- логічні Операції над цілімі: <,>, ==, | =;

- логічну операцію над логічнімі данімі NOT;

- оператор прісвоєння "=";

- оператори блоку "{", "}";

- оператор віводу (print);

- оператор виконан дії за умов (if-then-else);

- оператор циклу (do-while);

Візначімо окремі термінальні символи та нерозрівні набори Термін.

Сімволів (ключові слова);

{(usigned

}) char

;

=> then

+ == else

- <> while

^ NOT do

* program true

/bool false

print...


Страница 1 из 6Следующая страница

Друкувати реферат
Замовити реферат
Реклама
Наверх Зворотнiй зв'язок