- •4.Основні частини компілятора.
- •5Лексичний аналіз роботи з таблицями
- •6. Синтаксичний та семантичний аналіз, дерева
- •7. Польський запис, тетради.
- •8. Формальне визначення мови, операції над мовами.
- •9. Граматики
- •11.Регулярний вираз
- •12) Нормальна форма Бекуса-Наура
- •13. Ієрархія Хомського
- •14. Регулярні граматики.
- •15. Скінченні автомати
- •16. Детерміновані і недетерміновані кінцеві автомати.
- •18. Побудова детермінованих кінцевих автоматів за недетермінованими кінцевими автоматами.
- •19. Програмування сканера.
- •20. Таблиці символів, хеш-функції, хеш-адресація
- •21. Колізія, ре хешування
- •23.Контекстно-выльны граматики.
- •24. Синтаксично-керований переклад
- •25. Переклад інфіксної форми запису у польську
- •26. Алгоритм синтаксично-керованого перекладу:
- •27. Автомати з магазинною пам’яттю
- •28. Операторні граматики
- •29.Алгоритм розборуоператорних грамматик.
- •37. Оптимізація булевих виразів, циклів.
- •38. Генерація коду. Скп на мову Асамблер.
- •39. Інтерпретатори, адресація, представлення ідентифікаторів.
- •40 Компілятор компіляторів.
- •41 Генератор лексичних аналізаторів.(lex)
- •42. Генератор синтаксичних аналізаторів.
- •43. Приклади застосування генераторыв.
25. Переклад інфіксної форми запису у польську
Інфіксна форма – це форма, при якій оператор записується між оперантами. Цей запис є дуже незручним для синтаксичної обробки. Альтернативною до інфіксної форми є так звана польська форма запису виразів. Тут є 2 форми запису: 1)Префіксна(операція перед оперантами)2) постфіксна(операція після оперантів)
26. Алгоритм синтаксично-керованого перекладу:
1) в стек заноситься символ #;
2) до вмісту стеку заноситься яке-небудь правило із списку правил;
3) якщо ніяких правил не можна застосувати то заноситься символ аналізованої послідовності вх. Послідовності.
Приклад:
S –стек, R –символ, що розбивається, -вх ланцюжок, - те що ще не розібрано.
Розбір у вигляді таблиці.
S |
R |
|
Nправ |
Польс. запис |
# #a #F #T |
a * * * |
|
9 6 |
a a a |
#T* #T*( #T*(b |
( b + |
b+c)# +c)# c)# |
9 |
a a ab |
#T*(F #T*(T #T*(E #T*(E+ #T*(E+c #T*(E+F #T*(E+T #T*(E #T*(E) #T*F #T #F #z
|
+ + + c ) ) ) ) # # # # # |
c)# c)# c)# )# # # # # |
6 2
9 6 3
10 7 2 1 stop |
ab ab ab ab abc abc abc+ abc+ abc+ abc+* abc+* abc+* abc+* |
Недолік: повний перебір усіх можливих правил граматики. Його виключати можна внесенням певних правил, умов.
27. Автомати з магазинною пам’яттю
Теоретично скінченні автомати застосовуються лише до регулярних граматик. Для контексто-вільної:
G=({a,+,_,*,/,(,)}, {E,T,F},P,E)
P={E T E+T E-T
T F T*F T/F
E a F}. Створення складних автоматів неможливо. Граматики існує більш складні структури, автомати з магазинною пам’ятю – стековий автомат (СА) – це сітка.
- скінченно вхідний алфавіт, вхідний словник, - скінченна множина станів, Г – скінченність стекових (магазинних)символів, - початковий стан кер. пристроїв , - символ, що знаходиться в стекі в початковий момент часу , Т – множина заключних станів , Р – правило перех. відображення мн. виду у множину скінченних підмножин множини
а1 |
а2 |
|
|
ак |
|
|
аn |
|
|
-
z1
z2
….
zm
Конфігурація стекового автомата називається трійка.
~z , де q – поточний стан пристрою, w- не використана частина вхідного ланцюжка 1-й символ цього ланцюжка знаходиться на ланцюжку зчитування, - вміст магазину, самий лівий елемент , якщо а=е то магазин порожній.
Такт роботи степового автомату: , якщо а=е, то такий такт називається порожнім (е-такт). Тут вхідний символ не приймається до уваги і вхідна головка не зчитує змісту. =е з магазину знищується верхній символ. - початковий стан. Ланцюжок w допуск. стек. Автоматом, якщо існує множина переходів для деяких і , - порожній ланцюжок. В розш. стек. авт. вхідні символи мають той самий зміст
, де - відображення множини у множині скінченної підмножини . Розш. авт. може продовж. Роботу навіть тоді, коли магазин порожній.
Теорема: Нехай існує G конкретно-вільна граматика по гр. G можна побудувати такий автомат СА, що L(R)=L(G), тобто можна побудувати R, що мова яка породжується еквівалентна пам’яті дорівнює мові, що створюється граматикою.
Приклад:
}
Визначимо СА :
Р: (1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
,
Зауваження: (1)і (2) застосовується лише тоді, коли наступним вхідним символом є . Пріорітет виконується правил визнач. вмістом стеку. Якщо доповнити авт. з маг. пам’ятю набором семент. процедур, то крім розпізнання він ще буде формувати польський запис. СА можна вважати більш формальним викладенням синт. кер. перекладу.