
- •Курсова робота
- •Виконав ст. Гр. Кі-35:
- •Завдання на курсову роботу:
- •Анотація
- •1. Огляд методів та способів проектування трансляторів 7
- •Огляд методів та способів проектування трансляторів
- •Формальний опис вхідної мови програмування
- •Деталізований опис вхідної мови в термінах розширеної нотації Бекуса-Наура(Backus/NaurForm - bnf).
- •2.2.Термінальні символи та ключові слова
- •Розробка транслятора вхідної мови програмування
- •Вибір технології програмування
- •Проектування таблиць транслятора
- •Розробка лексичного аналізатора
- •Опис лексичного аналізатора
- •3.3.2. Розробка граф-схеми алгоритму
- •Розробка синтаксичного та семантичного аналізатора
- •Опис синтаксичного аналізатора
- •Повне дерево граматичного розбору
- •Розробка генератора коду
- •Опис генератора коду
- •Опис програми(в тому числі граф-схем)
- •Опис інтерфейсу та інструкція користувачеві
- •Відлагодження та тестування програми
- •Виявлення лексичних помилок.
- •Список літератури
- •Додаток а. Лістингпрограми.
- •Додаток б. Приклад програми із лексичними та синтаксичними помилками та текст файлу з повідомленням про помилки.
- •Додаток в. Приклад коректної програми та результат її виконання.
- •Додаток г. Граф-схема алгоритму виконання програми через використання функцій.
МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра ЕОМ
Курсова робота
з дисципліни: “Системне програмування”
на тему: “Розробка системних програмних модулів та компонент систем програмування.”
Індивідуальне завдання “Розробка транслятора з вхідної мови програмування”
Виконав ст. Гр. Кі-35:
Іващишин Р.Р
Прийняв:
Грос В.В.
Львів – 2013
Завдання на курсову роботу:
Цільова мова транслятора асемблер (i86).
Для отримання виконавчого файлу на виході розробленого транслятора скористатися програмами tasm.exe і tlink.exe.
Мова розробки транслятора: ANSIC або C++.
Реалізувати оболонку або інтерфейс командного рядка.
На вхід розробленого транслятора має подаватися текстовий файл, написаний на заданій мові програмування.
На виході розробленого транслятора мають створюватись чотири файли: файл з повідомленнями про помилки (або про їх відсутність), файл на мові асемблера, об’єктний та виконавчий файли.
Назва вхідної мови програмування утворюється від першої букви у прізвищі студента та номера його варіанту. Саме таке розширення повинні мати текстові файли, написані на цій мові програмування.
Назва виконавчого файлу транслятора утворюється від назви мови програмування додаванням літери “с” (від compiler).
Блок тіла програми:
STARTPROGRAM VARIABLE…;STARTBLOK - ENDBLOK
Операториуводу-виводу: SCANDATA, PRINTDATA
Оператор присвоєння: :=
Оператор:if - then [- else] (Паскаль)
Регістр ключових слів: Up
Регістр ідентифікаторів: Up-Low2 перший символ _
Арифметичні операції: +; -; *; DIV; %
Операції порівняння: ==; <>; >>; <<
Логічні операції: NOT; AND; OR
Типи даних: INTEGER16_T
Коментар: @@
Анотація
В даній курсовій роботі реалізується програма, яка транслює файл з деякої віртуальної мови, заданої завданням, в файл Асемблера з подальшою його компіляцією і створенням виконавчого файлу. Крім того, дана програма перевіряє на помилки (синтаксичні, семантичні, лексичні) вхідний файл і при їх присутності видає у файл повідомлення про помилки і зупиняє свою роботу до їх виправлення.
На прикладі даної програми нами вивчалася можливість створення достатньо потужних трансляторів в мову низького рівня (наприклад, Асемблер), - завдання, реалізація якого є достатньо потрібною на сучасному етапі розвитку програмування.
В ході виконання курсової роботи студенти повинні навчитися самостійно працювати з літературою, розробляти типові елементи системних програм, програмуючи роботу з таблицями, словниками, інформаційними базами, виконуючи лексичний та синтаксичний аналіз, а також семантичну обробку, здійснювати їх програмну реалізацію та відлагодження на сучасних обчислювальних системах.
ЗМІС
Виконав ст. гр. КІ-35: 1
Завдання на курсову роботу: 2
Анотація 3
Вступ 7
1. Огляд методів та способів проектування трансляторів 8
2. Формальний опис вхідної мови програмування 13
2.1. Деталізований опис вхідної мови в термінах розширеної нотації Бекуса-Наура(Backus/NaurForm - BNF). 13
2.2.Термінальні символи та ключові слова 14
3. Розробка транслятора вхідної мови програмування 15
3.1. Вибір технології програмування 15
3.2. Проектування таблиць транслятора 15
3.3. Розробка лексичного аналізатора 16
3.3.1. Опис лексичного аналізатора 16
3.3.2. Розробка граф-схеми алгоритму 18
3.4. Розробка синтаксичного та семантичного аналізатора 19
3.4.1. Опис синтаксичного аналізатора 19
3.4.2. Повне дерево граматичного розбору 21
3.5. Розробка генератора коду 22
3.5.1. Опис генератора коду 22
4. Опис програми(в тому числі граф-схем) 23
4.1. Опис інтерфейсу та інструкція користувачеві 27
5. Відлагодження та тестування програми 28
5.1. Виявлення лексичних помилок. 28
5.2. Виявлення синтаксичних помилок. 28
5.3. Виявлення семантичних помилок. 28
5.4. Загальна перевірка коректності роботи транслятора. 28
Висновки 29
Список літератури 30
ДОДАТОК А. Лістингпрограми. 31
ДОДАТОК Б. Приклад програми із лексичними та синтаксичними помилками та текст файлу з повідомленням про помилки. 62
ДОДАТОК В. Приклад коректної програми та результат її виконання. 63
ДОДАТОК Г. Граф-схема алгоритму виконання програми через використання функцій. 71
Вступ 6