МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
/
Пояснювальна записка
до курсової роботи
з дисципліни:
"Системне програмування" (III курс, 5-й семестр)
На тему : «Розробка системних програмних модулів та компонент систем програмування.»
Анотація
Курсова робота з дисципліни "Системне програмування" вміщає в собі весь матеріал, який ми вивчали протягом даного курсу. Вона узагальнює матеріал і закріпляє навички які ми набули при вивченні матеріалу.
В ній ми маємо продемонструвати розробку транслятора з вхідної мови програмування, яка нам була задана, на мову асемблер, компілювати код і створити виконавчий файл. Транслятор повинен виконувати: лексичний аналіз, синтаксичний аналіз, семантичний аналіз, виводити список помилок при наявності та попереджень. В цій курсовій роботі буде використовуватися лексичний аналізатор на базі скінченного автомата та на основі магазинного автомата.
Анотація……………………………………………………………………………………2
Зміст………………………………………………………………………………………3
Завдання на курсову роботу……………………………………………………………..4
Вступ………………………………………………………………………………………5
Огляд методів та способів проектування трансляторів………………………….7
Формальний опис вхідної мови програмування………………………………….8
Деталізований опис вхідної мови в термінах розширеної нотації
Бекуса-Наура………………………………………………………………………………………8
Опис термінальних символів та ключових слів……………………………………..10
Розробка транслятора вхідної мови програмування……………………………12
Вибір технології програмування………………………………………………………..12
Проектування таблиць транслятора та вибір структур даних………………13
Розробка лексичного аналізатора……………………………………………………..16
Розробка граф-схеми алгоритму…………………………………………17
Опис програми реалізації лексичного аналізатора…………………..17
Розробка синтаксичного та семантичного аналізатора……………………….19
Розробка дерев граматичного розбору…………………………………20
Розробка граф-схеми алгоритму…………………………………………21
Опис програми реалізації синтаксичного та
семантичного аналізатора…………………………………………………………………….22
Розробка генератора коду………………………………………………………………23
Розробка граф-схеми алгоритму…………………………………………23
Опис програми реалізації генератора коду…………………………….24
Опис інтерфейсу та інструкції користувача……………………………………..25
Відлагодження та тестування програми…………………………………………27
Виявлення лексичних помилок……………………………………………………………27
Виявлення синтаксичних помилок………………………………………………………28
Виявлення семантичних помилок……………………………………………………….29
Загальна перевірка коректності роботи транслятора…………………………30
Висновки…………………………………………………………………………………31
Список літератури……………………………………………………………………..32
Додатки………………………………………………………………………………….33
А. Лістинг програм………………………………………………………………………………33
Завдання на курсову роботу
Тема: Розробка транслятора з вхідної мови програмування.
- типи даних: longint, boolean, const string;
- оператор вводу: read;
- оператор виводу: write;
- блок тіла програми: startblok variable, endblok
- оператор: if goto goto (Бейсік);
- регістр ключових слів: low;
- регістр ідентифікаторів: Low8 ;
- операції арифметичні: add, sub, *, /,%;
- операції порівняння: ==, <>, <<, >>
- операції логічні: !, &, |;
- коментар: ##..
- ідентифікатори змінних, числові константи, рядкові константи;
- оператор присвоєння: :=;
Для отримання виконавчого файлу з вихідного асемблерного коду потрібно використовувати ml.ex (MASM32) вбудований в MS Visual Studio 2010.
Вступ
Компілятор (англ. Compiler від англ. to compile збирати в ціле) - комп'ютерна програма , що перетворює (компілює) програмний код, написаний певною мовою програмування, на семантично еквівалентний код в іншій мові програмування, який, як правило, необхідний для виконання програми машиною.
Перші компілятори з'явилися на початку 50-х років.
Транслятор – це той самий компілятор, з тею різницею, що генерує він не об’єктний код, а код на іншій мові програмування.
Проблема трансляції полягає в пошуку відповідності тексту вхідної програми конструкціям, що визначені граматикою. Граматика визн...