неділю, 1 жовтня 2017 р.

Лінгвістичне забезпечення САПР 2017

Для захисту лабораторних робіт студент повинен мати при собі протокол. Протоколи до лабораторних робіт мають бути роздруковані без титульного листа, але з зазначенням прізвища студента на кожному аркуші.
Для успішної здачі лабораторної роботи студент має вільно відповідати на теоретичні та практичні питання за темою роботи та відповідно до програмного коду роботи. Якщо простежується несамостійне виконання роботи, студенту надається можливість здати роботу наступного разу.
За умови вчасної успішної здачі лабораторної роботи студент отримує максимальну кількість балів. За кожні два тижні запізнення знімається по 10% від максимально припустимої оцінки. 

Лабораторна робота №1

Розробити програму, що реалізує лексичний аналізатор (ЛА) мови, метод та особливості мови відповідають варіанту (що є номером студента в списку групи).
На вхід програми подається текст, написаний відповідною мовою, на виході необхідно видавати вихідну таблицю лексем, ідентифікаторів, констант і (якщо передбачено завданням) міток. Окрім лексичних помилок програма повинна виявляти деякі семантичні помилки: повторне оголошення ідентифікатора (мітки), використання неоголошених ідентифікаторів (міток). За можливості реалізувати ще одну семантичну функцію: виявлення типу змінних. Усі повідомлення про помилки повинні супроводжуватися номером рядка, в якому мала місце помилка.

Склад протоколу:
  1. граматика мови програмування;
  2. таблиця лексем;
  3. показовий приклад програми (з усіма операторами та видами констант);
  4. вихідні таблиці лексичного аналізатора для прикладу;
  5. діаграма станів;
  6. таблиця переходів скінченного автомата.


Лабораторна робота №2

Реалізувати синтаксичний аналізатор (СА) на основі методу рекурсивного спуску. СА повинен мати зручний графічний інтерфейс користувача; надавати можливість вводити вхідний текст програми, записувати його в файл та відкривати файл з текстом; надавати можливість перегляду вихідних таблиць лексичного аналізатора; видавати лексичні та синтаксичні помилки. Усі повідомлення про помилки повинні супроводжуватися номером рядка, в якому було знайдено помилку.

Склад протоколу:
  1. протокол до першої роботи;
  2. перетворена граматика.


Лабораторна робота №3

Реалізувати синтаксичний аналізатор на основі автомата з магазинною пам'яттю (МПА). Окрім вихідних таблиць ЛА, програма повинна надавати можливість перегляду МПА у формі таблиці переходів, а також виводити таблицю розбору. Замість таблиці розбору можна реалізувати режим покрокового синтаксичного аналізу, при чому на кожному кроці буде підсвічуватися поточний стан, поточна лексема та наступне положення автомата.

Склад протоколу:
  1. протокол до першої та другої роботи;
  2. скінченний автомат у вигляді діаграми станів;
  3. скінченний автомат у вигляді таблиці переходів.

Лабораторна робота №4

Розробити програму, яка автоматично буде встановлювати відношення передування за граматикою (що відповідає варіанту). У разі виникнення протиріч, програма повинна повідомляти про це.

Склад протоколу:
  1. протокол до першої роботи;
  2. граматика, приведена до виду граматики простого передування.

Індивідуальні варіанти для груп
Оцінювання
Перескладання заліку буде відбуватися в моєму кабінеті (501-А).
ДатаЧас
22.01.20188:30
25.01.20188:30
Крім того можете прийти 20.01.2018 на другу пару (ближче до кінця) до заочників, але в заочників буде пріоритет, тому не обіцяю, що зможу виділити для вас багато часу.

Семестр 2

Лабораторна робота № 5

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

Склад протоколу:
  1. протокол до першої роботи;
  2. граматика простого передування.

Лабораторна робота № 6

Реалізувати побудову та виконання ПОЛІЗу арифметичного виразу під час синтаксичного аналізу методом висхідного розбору за рахунок виконання семантичних підпрограм. Вигляд арифметичного виразу відповідає завданню на граматику. СА повинен мати зручний графічний інтерфейс користувача; надавати можливість вводити арифметичний вираз, записувати його в файл та відкривати файл з текстом; надавати можливість перегляду вихідних таблиць лексичного аналізатора, а також граматики з відповідними семантичними підпрограмами, матриці відношень передування та таблицю розбору (вхід, стек, відношення, основа, ПОЛІЗ), таблицю обчислення ПОЛІЗу (див. посібник ІІ частина, С.13); видавати лексичні, синтаксичні помилки та помилки виконання. Усі повідомлення про помилки повинні супроводжуватися номером рядка, в якому було знайдено помилку.
Склад протоколу:
  1. протокол до першої роботи;
  2. граматика простого передування.

Лабораторна робота № 7. Побудова ПОЛІЗ за алгоритмом Дейкстри

Реалізувати побудову ПОЛІЗу для мови (згідно варіанту) за алгоритмом Дейкстри. Програма повинна виконувати лексичний розбір (лаб. №1), далі синтаксичний розбір (відповідно до варіанту курсової роботи), а після цього будувати ПОЛІЗ.
Інтерфейс програми повинен надавати усі можливості відповідних лескичного та синтаксичного аналізаторів, а крім того виводити таблицю покрокової побудови ПОЛІЗ і результуючий ПОЛІЗ окремо. Додатково можна виконати оптимізацію ПОЛІЗ за рахунок видалення визначень міток та присвоєння їм відповідних значень (посилань на комірки ПОЛІЗ / відповідних номерів комірок ПОЛІЗу). Таблиця побудови ПОЛІЗ повинна складатися принаймні з наступних полів (див. приклад в посібнику, С.48):
  1. символ вхідного рядка,
  2. стек,
  3. ПОЛІЗ.
Якщо граматика включає цикл перелічення, таблиця ПОЛІЗ (див. приклад в посібнику, С.52-53) також має включати поля:
  1. ознака циклу,
  2. зміна параметра циклу,
  3. додаткові функції (опціонально)
Склад протоколу:
  1. протокол до першої роботи;
  2. протокол до роботи, що відповідає синтаксичному розбору;
  3. таблиця пріоритетів операцій;
  4. опис побудови ПОЛІЗ умовного оператора, циклу та вводу й виводу:
    • загальний вигляд оператора,
    • блок-схема його виконання (крім вводу й виводу),
    • опис особливостей обробки службових слів.

Лабораторна робота № 8. Виконання ПОЛІЗ

Реалізувати виконання ПОЛІЗу. що будується відповідно до лабораторної №7. Програма повинна виконувати лексичний розбір (лаб. №1), далі синтаксичний розбір (відповідно до варіанту курсової роботи), будувати ПОЛІЗ (лаб №7), а потім виконувати ПОЛІЗ.
Інтерфейс програми повинен надавати усі можливості відповідних попередніх робіт, а також мати поле виконання програми, куди відбувається виведення та графічний інструмент зчитування даних. Крім того, має бути можливість переглянути таблицю покрокового виконання ПОЛІЗу з полями стеку та ПОЛІЗу, а також опису дії.

Склад протоколу (використовується протокол попередньої роботи):
  1. протокол до першої роботи;
  2. протокол до роботи, що відповідає синтаксичному розбору;
  3. таблиця пріоритетів операцій;
  4. опис побудови ПОЛІЗ умовного оператора, циклу та вводу й виводу:
    • загальний вигляд оператора,
    • блок-схема його виконання (крім вводу й виводу),
    • опис особливостей обробки службових слів.

Лабораторна робота № 9. Методи організації таблиць символів транслятора

  1. Запрограмувати методи, що вказані в індивідуальному завданні. Для отримання додаткового балу (+2) необхідно при цьому реалізувати відповідні інтерфейси колекцій (що було викладено в курсі Крамар).
  2. Вибрати розмір таблиці. 
  3. Заповнити таблицю обраним методом на 10%. 
  4. Зробити спробу занести в таблицю (але не заносити) ще 100 елементів, підраховуючи при цьому сумарну кількість проб таблиці. 
  5. Обчислити середню кількість проб, необхідних для запису одного елемента. 
  6. Заповнити таблицю на 50% та на 90% і повторити п.4,5. 
  7. Вивести результати дослідження та пояснити їх.
Склад протоколу:
  1. відповідні індивідуальним завданням функції хешування.
Методи, що порівнюються
  1. Лінійне рехешування.
  2. Квадратичне рехешування.
  3. Випадкове рехешування.
  4. Таблиці з внутрішніми ланцюжками.

Індивідуальні завдання:
Варіанти
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Методи, що порівнюються
1
1
1
2
2
2
3
3
3
4
4
4
2
3
3
3
4
4
4
2
3
4
3
4
1
1
2
4
3
2
1
1
1
2
4
3
2
1