Національний університет “Львівська політехніка”
Інститут комп’ютерної техніки, автоматики та метрології
Кафедра “Електронні обчислювальні машини”
Курсова робота
з предмету “Системне програмування”
на тему: Розробка транслятора з вхідної мови програмування.
Варіант № 45
Анотація
В даній курсовій роботі розроблено транслятор з вхідної мови програмування z45. Дана робота носить навчальний характер, але є важливою, оскільки розробка програмних модулів і компонент системного програмування є актуальним завданням на сьогоднішній час. Транслятор розроблений в середовищі C++ Builder 2010 та поданий у пояснювальній записці, а також в електронному варіанті. Для побудови транслятора використано низхідний метод граматичного розбору. В пояснювальній записці подано огляд існуючих методів розробки трансляторів, детальний опис мови, а також описано процес розробки програми транслятора на рівні тексту програми. До проекту додано результати тестування програми та вихідний текст програми транслятора.
Зміст
Завдання на кусрову роботу 4
Вступ 6
1. Огляд методів та способів проектування трансляторів 7
2. Формальний опис вхідної мови програмування 9
2.1 Деталізований опис вхідної мови в термінах EBNF 9
2.2 Опис термінальних символів та ключових слів 11
3. Розробка транслятора вхідної мови програмування 12
3.1 Проектування таблиць транслятора 13
3.2 Розробка лексичного аналізатора 14
3.2.1 Розробка граф-схеми алгоритму 16
3.2.2 Опис програми реалізації лексичного аналізатора 18
3.3 Опис синтаксичного та семантичного аналізатора 20
3.3.1 Дерево граматичного розбору 21
3.3.2 Розробка граф-схеми алгоритму 22
3.3.3 Опис програми реалізації синтаксичного та семантичного аналізатора 23
3.4 Розробка генератора коду 24
3.4.1 Розробка граф-схеми алгоритму 25
3.4.2 Опис програми реалізації генератора коду 26
4. Опис інтерфейсу та інструкції користувача 27
5. Відлагодження та тестування програми 28
5.1 Виявлення лексичних помилок 28
5.2 Виявлення синтаксичних помилок 29
5.3 Виявлення семантичних помилок 30
5.4 Загальна перевірка коректності роботи транслятора 31
Висновки 32
Список літератури 33
Додаток А лістинг програми транслятора 34
Додаток Б лістинг програми заготовки початкового коду 62
Завдання на курсову роботу
Розробити транслятор заданої вхідної мови програмування, до якої висуваються наступні вимоги:
Кожна програма починається зі слова program і закінчується словом end. Після program йде розділ оголошення змінних var після розділу оголошення змінних починається блок коду словом begin.. Програма має надавати можливість працювати зі змінними таких типів: integer_2 – цілі числа. Регістр ключових слів нижній. Регістр ідентифікаторів нижній та верхній при цьому перший символ повинен бути ‘_’ , а довжина ідентифікаторів не повинна бути більшою за вісім символів.
Присвоєння змінних виконується оператором присвоєння >> . Наприклад _X >> _Y + 5;
Над змінними виконуються наступні операції.
Арифметичні: +, -, *, /, % додавання, віднімання, ділення, множення, залишок від ділення;
Логічні: not, and, or.
Порівняння: =, <>, >=, <= рівність, нерівність, більше або рівно , менше або рівно;
Ввід даних зі стандартного вводу відбувається оператором scandata, а вивід оператором printdata. Наприклад scandata(_a); printdata(“A=”); printdata(_a);.
Для реалізації циклів виконується оператор for
Наприклад for( _x>>0 ; _x<=4; _x>>_x+1;){ блок коду }
Коментування певних частин коду здійснюється оператором коментаря // КОМЕНТАР.
Потрібно також розробити середовище, яке б включало текстовий редактор з можливістю набору, редагування програми; зчитування та запису її на диск, запуску трансляції.
На вхід розробленого компілятора має подаватися текстовий файл, написаний на заданій мові програмування. На виході розробленого компілятора мають з’являтися три файли:
файл з результатом лексичного аналізу,
файл з результатом синтаксичного аналізу,
файл з результуючим програмним кодом на мові асемблер,
файл з інформацією...