Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
27.03.2016
Размер:
3.38 Mб
Скачать

Основні контрольні питання

  1. Яку роль виконує синтаксичний аналіз в процесі компіляції?

  2. Які проблеми виникають при побудові синтаксичного аналізатора і як вони можуть бути вирішені?

  3. Які типи граматик існують? Що таке КС- граматики? Розкажіть про їх використання в компіляторі.

  4. Які типи розпізнавачів для КС- граматики існують? Розкажіть про недоліки та переваги різних типів розпізнавачів.

  5. Поясніть правила побудови дерева виведення граматики.

  6. Що таке граматика простого передування?

  7. Як обчислюються відносини передування для граматик простого передування ?

  8. Що таке граматика операторного передування ?

  9. Як обчислюються відношення для граматик операторного передування ?

  10. Розкажіть про завдання розбору. Що таке розпізнавач мови?

  11. Розкажіть про загальні принципи роботи розпізнавача мови.

  12. Що таке перенесення, згортка? Для чого необхідний алгоритм «перенесення-згортка»?

  13. Розкажіть, як працює алгоритм «перенесення-згортка» в загальному випадку (з поверненнями).

  14. Як працює алгоритм «перенесення -згортка» без повернень (поясніть на своєму прикладі)?

Варіанти завдань Варіанти початкових граматик

Далі приведені варіанти граматик. У всіх варіантах символ 5 є початковим символом граматики S,T,F i E означають нетермінальні символи.

Термінальні символи виділені жирним шрифтом. Замість символу а повинні підставлятися лексеми.

Початкові граматики і типи допустимих лексем

Нижче в табл. 3.1 приведені номери завдань. Для кожного завдання вказана відповідна йому граматика і типи допустимих лексем.

Таблиця 3.1. Номери завдань для виконання лабораторної роботи

Таблиця 3.1 продовження

ПРИМІТКА

  • Римськими числами вважати послідовності великих латинських букв X. V і I.

  • Шістнадцятковими числами вважати послідовність цифр і символів «а», «b» … «f», які починаються з цифри (наприклад 89, 45ас9, 0аСс4).

  • Для виконання роботи рекомендується використовувати лексичний аналізатор, побудований в ході виконання лабораторної роботи № 2

Приклад виконання роботи Завдання для прикладу

Для виконання лабораторної роботи візьмемо ту мову яку було використано для виконання лабораторної роботи № 2.

Ця мова може бути задана, наприклад, за допомогою наступної КС- граматики з правилами Р:

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

Побудова матриці операторного передування Побудова множини крайніх правих і крайніх лівих символів

Побудову множини крайніх лівих і крайніх правих символів виконаємо згідно описаному раніше алгоритму.

На першому кроці візьмемо всі крайні ліві і крайні праві символи з правил граматики G. Отримаємо множини, представлені в табл. 3.2.

Таблиця 3.2. Множина крайніх лівих і крайніх правих символів. Крок I

З табл. 3.2 видно, що множина L(U) для символів S,E,D а також множина (U) для символів F, T, E, D містить інші нетермінальні сим воли, а тому повинні бути доповнені Наприклад L(S) повинне бути доповнене L(F), оскільки символ F входить в , а R(F) повинне бути доповнене R(Е), оскільки символ Е входить в .

Виконаємо необхідні доповнення і одержимо множини, представлені в табл. 3.3.

Таблиця 3.3. Множина крайніх лівих і крайніх правих символів. Крок 2

Практично всі множини в табл. 3.3 змінилися в порівнянні з табл. 3.2 крім множин для символу С), а значить, побудова не закінчена. Продовжимо доповнювати множини. Одержимо множини, представлені в табл. 3.4.

В таблиці 3.4 в порівнянні з табл. 3.3 змінилися множини для символів F,T та E побудова не закінчена. Продовжимо доповнювати множини. Одержимо множини, представлені в табл. 3.5.

Таблиця 3.4. Множини крайніх лівих і крайніх правих символів. Крок 3

Таблиця 3.5. Множини крайніх лівих і крайніх правих символів. Крок 4(результат)

В табл. 3.5 порівняно з таблицею3.4 і змінилися тільки множини R(U) для символів F і Т — побудова не закінчена. Продовжимо доповнювати множини. Але якщо виконати ще один крок (крок 5), то можна переконатися, що множини вже більше не зміняться (щоб не створювати ще одну зайву таблицю, цей крок тут виконувати не будемо). Таким чином, множини, представлені в табл. 3.5, є результатом побудови множини крайніх лівих і крайніх правих символів граматики G.