Контрольні запитання
1. |
Чому вирази та інструкції в мовах програмування є рекурсивними об’єктами? |
2. |
Чи є рекурсивними об’єктами виклики функцій у мові С++? |
3. |
Чи є рекурсивними об’єктами функції мови С++? |
4. |
У чому полягає рекурсивність форм Бекуса-Наура? |
5. |
Чи можна вважати поняття послідовності букв і цифр рекурсивним? |
Вправи
1. |
Написати БНФ або РБНФ для понять:
|
2. |
Написати РБНФ із метасимволами { та }, еквівалентну:
|
3.* |
Нехай S позначає інструкцію розгалуження, A — інструкцію присвоювання, C — умову, а синтаксис інструкцій задається такою РБНФ. S ::= A | if '(' C ')' S [ else S ] Скількома способами з S можна вивести таку послідовність символів? if (C) if (C) A else A |
4. |
Написати систему БНФ або РБНФ для понять:
Загальні поняття (ім’я, інструкція та вираз) можна не розкривати. Обмежитися іменами стандартних скалярних типів мови С++ в якості можливих виразів, які задають тип. |
Вправи для допитливих
5.* |
Чи можна написати систему РБНФ, еквівалентну <A> ::= 'c' | '('<A>')', так, щоб праворуч від “::=” не було нетерміналів? |
1 Для простоти викладу нехтуємо знаками на початку арифметичних констант, а також іменуючими виразами в лівій частині виразу присвоювання, більш загальними ніж імена.
