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

бесплатно 0
4.5 135
Формальний опис мови програмування Z30 в термінах розширеної нотації Бекуса-Наура. Розробка лексичного, синтаксичного та семантичного аналізатора. Побудова таблиці ідентифікаторів. Проведення тестування транслятора та виявлення помилок роботи компілятора.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Міністерство освіти, науки, молоді та спорту України. КУРСОВА РОБОТА з дисципліни: "Системне програмування" на тему: "Розробка системних програмних модулів та компонент систем програмування"Одним із їх завдань є переведення написаного тексту програми у машинний код чи код іншої мови програмування, який повинен відповідати комп‘ютерній системі. Оскільки теперішній час - час стрімкого розвитку комп‘ютерної техніки, то створений машинний код з часом стає застарілим, тобто не відповідає принципу оптимального використання апаратних ресурсів. І одним із способів запобігання цієї проблеми стало створення нових трансляторів, які б відповідали потребам теперішнього часу. По своїй суті транслятор - це той самий компілятор, з тією різницею, що генерую він не обєктний код а код на іншій мові програмування. Граматика визначає форму або синтаксис допустимих виразів мови.Транслятором називається програма перекладу (трансляції) початкової програми, записаної вхідною мовою, в еквівалентну їй обєктну програму. Якщо мова високого рівня є вхідною, а мова асемблера чи машинна - вихідною, то такий транслятор називається компілятором. Програма, записана мовою високого рівня, найчастіше має два етапи - компіляції та виконання.Фази лексичного (ЛА) та синтаксичного (СА) аналізів розкладають початкову програму на частини. Генерація коду проміжною мовою (ГПК), оптимізація (ОК) та генерація коду (ГК) асемблера синтезують програму на вихідній мові. Лексичний аналіз обєднує літери в лексеми - службові слова, ідентифікатори, знаки операцій та пунктуації. Лексеми можна кодувати цілими числами, наприклад, do-одиницею, " " - двійкою, ідентифікатор - трійкою, константу - четвіркою тощо. Синтаксичний аналіз групує лексеми в синтаксичні структури, які можуть бути складовими інших синтаксичних структур; наприклад, А В може входити в оператор чи вираз.При реалізації транслятора одна чи декілька фаз (можлива частина фази) обєднуються в програмні модулі, названі проходами. За кожного проходу прочитується з файлу початкова програма чи результат попереднього проходу; здійснюється перетворення, задане його фазами; записується результат у проміжний або в результатний файл. Число проходів та методика обєднання фаз у прохід визначаються особливостями вхідної та вихідної мов. Результат одного проходу, потрібний іншому, завдяки синхронізації та буферам дозволяє побудувати необхідний інтерфейс між фазами.Існують спеціальні засоби (компілятори компіляторів, генератори компіляторів тощо) для полегшення конструювання компіляторів чи трансляторів.Для цього використовують різні способи формального опису, серед яких я використаю розширену нотацію Бекуса-Наура (Backus/Naur Form - BNF). Правила написання правил у розширеній нотації Бекуса-Наура: · нетермінальні вирази записуються у кутових дужках: "" ; · символ "::=" відділяє праву частину правила від лівої; · символи "[", "]" означають необовязковість (вираз в дужках може бути відсутнім); · символи "{", "}" означають повторення.Транслятор розроблений в даній курсовій роботі працює за схемою поданою в додатку Б. Він включає в себе три головні фази: - лексичний аналізТранслятор в даній роботі представлено класом Translator, який інкапсулює в собі дані та методи потрібні для роботи програми. До методів відноситься лексичний, синтаксичний аналізатор, генератор коду, методи для збереження проміжних даних у файл, процедури для перевірки операторів мови. Клас Token відповідає певній лексемі, містить інформацію про її місце розташування в тексті, унікальний номер лексеми, адресу в таблицях стрічок, змінних чи міток. Клас містить наступні поля: Lexem поле задане перечисленням enum однзначно ідентифікує кожну лексему. Value поле задає стрічку яка представляє лексему в тексті програмиОсновна задача лексичного аналізу - розбити вихідний текст, що складається з послідовності одиночних символів, на послідовність слів, або лексем, тобто виділити ці слова з безперервної послідовності символів для передачі в синтаксичний аналізатор. Всі символи вхідної послідовності розділяються на символи, що належать яким-небудь лексемам, і символи, що розділяють лексеми. При цьому за допомогою регулярних виразів задаються правила виділення лексем, ідентифікаторів, міток з подальшим утворенням таблиці лексем і ідентифікаторів. Розбір виконується взалежності від правила виділення лексеми, заданого регулярним виразом, при чому ними можна виділити не лише базові одиниці мови, але й коментарі, пробільні символи і навіть лексичні помилки. При виділенні лексеми вона розпізнається та записується у таблицю лексем за допомогою відповідного номера лексеми, що є унікальним для кожної лексеми із усього можливого їх набору.Проте, зважаючи на неможливість здійснити оцінку смислу вхідної програми загалом та існуючі обмеження мов програмування на етапі генерації коду ми ніколи не отримаємо на 100% еквівалентну програму мовою асемблер.

План
ЗМІСТ

ВСТУП

1. Огляд методів та способів проектування трансляторів

1.1 Введення в трансляцію

1.2 Структура транслятора

1.3 Проходи транслятора

1.4 Засоби побудови трансляторів

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

2.1 Деталізований опис вхідної мови в термінах розширеної нотації Бекуса-Наура

2.2 Термінальні символи та ключові слова

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

3.1 Вибір технології програмування

3.2 Проектування таблиць транслятора

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

3.4 Розробка синтаксичного аналізатора

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

4. Опис інтерфейсу та інструкція користувача

5. Відлагодження та тестування програми

5.1 Виявлення помилок

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

ВИСНОВКИ

СПИСОК ЛІТЕРАТУРИ

Додаток A. Завдання на курсову роботу

Додаток Б. Загальний алгоритм роботи транслятора

Додаток В. Текст коректної програми на мові Z30

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?