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

Зубенко, Омельчук - Програмування. Поглиблений курс

.pdf
Скачиваний:
48
Добавлен:
07.03.2016
Размер:
4.72 Mб
Скачать

Розділ І. ЛОГІКО-АЛГЕБРИЧНІ УНІВЕРСАЛІЇ

Для практичного застосування LL (k )-граматик необхідно вміти зна- ходити множину значення функції FIRST . Нехай маємо КВ-граматику G = (N ,T ,P,S ) і ланцюжок w термінальних і нетермінальних символів. Розглянемо один із методів побудови множини FIRSTk (w) для КВ- граматик. Нехай x /k означає префікс слова x довжиною k . За озна- ченням x /k = x , якщо k |x |. Для мови L і натурального k покладемо, що L /k сукупність префіксів довжиною k усіх її слів. Нехай w = X1X2...Xn , Xi T N , i =1,n . Нескладно впевнитись, що

FIRSTk (w)= (FIRSTk (X1 )FIRSTk (X2 )KFIRSTk (Xn ))/k .

Тому, щоб знайти сукупність FIRSTk (w), достатньо вміти знаходити сукупності FIRSTk (X ) для X N . Зазначимо, що для Xi T {ε}

FIRSTk (Xi )= {Xi }.

Для i 0 і кожного X T N визначимо такі мови Fi (X ):

1.Fi (a )= {a}, a T ;

2.F0 (X )= {x : x T * & X xu P (x = k x < k & u = ε)};

3.Нехай Fi 1 (X ) уже визначені для всіх X N , тоді Fi (X ) = Fi 1(X )

{x : X Y1Y2...Ym P & x Fi 1 (Y1 )Fi 1 (Y2 )...Fi 1 (Ym )/k}.

Ураховуючи, що число k фіксоване та Fi 1 (X ) Fi (X ), на певному кроці l для всіх X N сукупності Fl 1(X ) та Fl (X ) будуть збігатися. За побудовою FIRSTk (X )= Fl (X ).

Приклад 1.25. Побудуємо значення функції

FIRST1 для правих

частин правил граматики G 2 :

 

FIRST

(< доданок >

[< операція1 >< доданок >])

=

1

 

 

 

= { (, a, , z, A, , Z, 0, 9};

 

FIRST1(< множник

> [< операція2 > < множник >]) =

= { (, a, , z, A, , Z, 0, 9};

 

FIRST

((< вираз >))

= { (};

 

1

(< змінна >)

= {a, , z, A, , Z};

 

FIRST

 

1

(< число >) = {0, , 9}.

 

FIRST

 

1

 

 

 

101

ПРОГРАМУВАННЯ

Очевидно, граматика G 2 є LL (1)-граматикою. Це випливає з того, що значення функції FIRST1 для всіх альтернативних правих частин

продукцій попарно не перетинаються ■ Звернемось тепер до автоматів із магазинною23 пам'яттю (МП-

автоматів) – класу процедур, призначених для розпізнавання й син- таксичного аналізу КВ-мов. Від скінченного автомата МП-автомат ві- дрізняється наявністю в загальній структурі його станів третього компонента стеку символів. Перші два компоненти функція перехо- ду МП-автомата перетворює так, як і у випадку скінченних автома- тів, а третю за допомогою стекових операцій pop (зняти) і push

(покласти елемент у стек).

МП-автомат це сімка A = (Q,X,Y ,δ,q0,Z0,F ), де:

1)Q скінченна множина внутрішніх станів;

2)Σ скінченна множина вхідних символів (вхідний алфавіт);

3)H – скінченна множина магазинних символів;

4)δ : Q ×(Σ ε)× H B (Q × H * ) функція переходів, керує роботою

автомата;

5)q0 Q початковий внутрішній стан керуючого пристрою;

6)Z0 H початковий стан стеку;

7)F Q × Σ* × H * множина заключних станів.

Зазвичай множина заключних станів має вигляд F = Qfin × Σ* × H * ,

або F = Qfin × Σ* ×{ε}, для певної підмножини Qfin Q заключних вну-

трішніх станів МП-автомата. За означенням із порожнім стеком ав- томат продовжувати обчислення не може.

Обчислення за МП-автоматом це послідовність станів, в які він переходить, читаючи або не читаючи літери вхідного слова. Перебу-

ваючи в стані (q,au,vZ ) і читаючи першу літеру a вхідного слова, не-

залежно від

моменту часу t автомат

A реалізує

перехід

δ(q,a,Z ) = (p,ω)

і переходить у новий стан

(qt +1,ut +1,vt +1 ),

в якому

внутрішній стан qt +1 = p , друга компонента ut +1 = u . Якщо ж автомат не читає літеру на вході й реалізує ε -перехід δ(q,ε,Z ) = (p,ω), то qt +1 = p , ut +1 = au . В обох випадках нове значення стеку vt +1 = vω .

23 Магазин це синонім слова "стек".

102

Розділ І. ЛОГІКО-АЛГЕБРИЧНІ УНІВЕРСАЛІЇ

При цьому ω = ε означає, що зі стеку знімається верхній елемент (операція pop ), ω ≠ ε що зі стеку знімається верхній елемент і в ньо-

го послідовно вносяться символи слова ω (серією операцій push ).

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

Введемо відношення├ безпосереднього переходу на конфігураціях МП-автомата. Оскільки значення функції переходу не залежить від часової компоненти, то останню можна не показувати в конфігураці-

ях автомата.

Покладемо (q,au,vZ )(p,u,vω)

для

переходу

δ(q,a,Z ) = (p,ω)

і (q,au,vZ )(p,au,vω) у випадку

ε -переходу

δ(q,ε,Z ) = (p,ω). Нехай├* рефлексивно-транзитивне замикання ві- дношення безпосереднього переходу.

Слово w розпізнається автоматом A , якщо (q,w,Z0 )* (p,ε,v ), де q0 початковий стан, а p F . Позначимо L (A)-мову, що розпізна-

ється МП-автоматом A .

Приклад 1.26. МП-автомат для мови L2 із прикл. 1.24.

 

Покладемо

Q = {q0,q*},

Σ = {a,b},

H = {Z0,1},

δ = {(q0,a,Z0 ) (q0,1), (q0,a,1) (q0,11), (q0,b,1)(q*,ε),

 

(q*,b,1)(q*,ε)},

F = {(q*,ε,ε)}.

Детермінований

МП-автомат

A3 = (Q,Σ,H,δ,q0,Z0,F ) із даними компонентами задає мову L2 . На-

приклад,

0

він

0

допускає

слово

aabb

таким

чином:

(q

0

 

)(q

 

0

 

(

 

)

(

 

 

)

 

 

 

,aabb,Z

 

 

,abb,1)(q

 

,bb,11)

 

q*,b,1

 

q*,ε,ε

 

F .

 

На першому, другому, третьому й четвертому кроках обчислення були застосовані перше, друге, третє й четверте за порядком правила переходу функції δ, після чого обчислення перейшло в заключний стан. Узагалі, перебуваючи в початковому внутрішньому стані q0 і

читаючи на вході літери a , автомат A3 щоразу кладе в стек символ 1 (тим самим запам'ятовується кількість підряд прочитаних літер а),

103

ПРОГРАМУВАННЯ

доки не зустріне першу літеру b і не перейде в заключний внутрішній стан q* . Перебуваючи далі в стані q* і читаючи символи b , A3 знімає зі стеку щоразу один символ 1. Перехід у єдиний заключний стан (q*,ε,ε) свідчить, що літер b було прочитано поспіль рівно стільки,

скільки спочатку літер a ■ Має місце

Теорема 1.7. Клас КВ-мов збігається з класом мов, що розпізна- ються МП-автоматами.

Доведення. Нехай G = (N ,T ,P,S ) КВ-граматика. Побудуємо для неї МП-автомат A = (Q,Σ,H,δ,q0,Z0,F ), який буде моделювати всі її ліво- сторонні виведення й розпізнавати тільки ті слова, що належать мові L (G ). Подібні МП-автомати для КВ-граматик називаються МП-

аналізаторами типу розгортки. Покладемо Q = {q}, Σ = T , H = N T , q0 = q , Z0 = S , F = {(q,ε,ε)}, а функція δ визначається так: 1) для ко-

жного правила X w P (q,w) δ(q,ε,X );

2) (δ(q,a,a ) = (q,ε) для ко-

жного a T . Нескладно перевірити,

що за побудовою

S u T * (q,u,S) * (qε,ε), тобто A є МП-аналізатором типу розгор-

тки для граматики G (вправа 27).

Для доведення зворотної теореми можна обмежитися МП- автоматами зі спустошенням. МП-автоматом зі спустошенням нази-

вається МП-автомат A

з множиною заключних станів

вигляду

F = Qfin ×{ε}×{ε}, де Qfin

Q . Нехай A = (Q,Σ,H,δ,q0,Z0,F )

довіль-

ний МП-автомат і F = Qfin × Σ* ×{ε} для певної підмножини Qfin Q . Побудуємо для A КВ-граматику G = (N,T ,P,S ), що породжує мову L(A), таким чином, щоб будь-яке лівостороннє виведення слова u Σ* у граматиці G відповідало обчисленню автомата А зі словом u

на вході.

Покладемо

N = {[qZr ]: q,r Q,Z H} {S}. Потрібно,

щоб

правила

граматики

забезпечували справедливість твердження

(*)[qZr ] u (q,u,Z )* (r,ε,ε). Необхідну сукупність правил P

мож-

на отримати так:

104

 

 

 

Розділ І. ЛОГІКО-АЛГЕБРИЧНІ УНІВЕРСАЛІЇ

1)

для переходу (r,Xn ...X1 ) δ(q,a,Z )

до P

додаються всі правила

вигляду [qZr ] a rX s

s X s

K s

X

s

для всіх можливих по-

 

 

1 1

1 2 2

 

n 1

 

n n

 

слідовностей s1,s2,...,sn

станів із Q ;

 

 

 

2)

для переходу (r,ε) δ(q,a,Z )

до P додається правило [qZr ] a ;

3)

до P додаються правила S [q0Z0q] для кожного q Q .

Нескладно перевірити, що для будь-яких q,r Q та Z H викону- ється (*) (вправа 28). Звідси випливає, що L(G ) = L(A)

МП-аналізатор типу розгортки для LL(k) -граматик досить просто

детермінізувати. Для цього достатньо, щоб він: а) мав можливість перед вибором продукції забігти наперед і прочитати наступні k нерозпізнаних вхідних символів; б) умів побудувати значення функції FIRSTk для відповідних альтернатив поточного виведення. Обидві

можливості реалізуються в межах скінченно-автоматного керування. Синтаксичні діаграми. Запропоновані Н. Віртом. Можуть розгля-

датися як графічний варіант РКВ-граматик, орієнтований на корис- тувача. Синтаксична діаграма (СД) є сукупністю певних орієнтова- них графів (піддіаграм) на площині з вершинами, що мають вигляд:

НЕТЕРМІНАЛ

Лексема

і відповідають правим частинам усіх правил РКВ-граматики. Кожно- му входженню лексеми чи нетермінального символу в праву частину правила відповідає окрема вершина піддіаграми. Вершини з'єдну- ються стрілками в тій самій послідовності, в якій зустрічаються в правилі. Кожна піддіаграма має рівно одну вхідну й вихідну стрілки. При цьому, якщо права частина є альтернативною, то піддіаграма складається з піддіаграм альтернатив, об'єднаних спільними входом і виходом. Якщо це конструкція:

1)у квадратних дужках, то до її піддіаграми додається стрілка, що з'єднує вхід і вихід;

2)у фігурних дужках, то вихід її піддіаграми зациклюється на свій же вхід і додається стрілка, що з'єднує вхід і вихід. Якщо при цьому вона має модифікатор: а) *, то піддіаграма не змінюється; б) +, то остання стрілка не додається; в) (n,m ), то піддіаграма будується про-

сто як відповідна кількість альтернатив.

Конструкція-діапазон замінюється відповідною кількістю альтернатив. Піддіаграма, що відповідає аксіомі граматики, називається головною.

105

ПРОГРАМУВАННЯ

На рис. 1.14 наведено СД для РКВ-граматики G3 із сукупністю не-

терміналів N ={<ідентифікатор>, <літера> ,<цифра>}, аксіомою <іде- нтифікатор> і правилами:

<ідентифікатор> <літера> {<літера> | <цифра>} <цифра> 0 – 9

<літера> A Z.

Граматика G3 задає клас лексем-ідентифікаторів слів, що розпо-

чинаються з латинської літери або літери _ (знак підкреслювання) і складаються з них і десяткових цифр.

А

0

В

1

Z

9

_

 

<літера>

<цифра>

 

літера 2

літера 1

цифра 1

<ідентифікатор>

Рис. 1.14

Кожному виведенню слова з аксіоми в граматиці відповідає його виведення (шлях) у СД. Виведення в СД це проходження в ній за стрілками піддіаграм, що розпочинається з головної діаграми з одно- часною конкатенацією символів-лексем, розташованих у вершинах.

106

Розділ І. ЛОГІКО-АЛГЕБРИЧНІ УНІВЕРСАЛІЇ

При цьому проходження вершини-нетермінала означає негайний тимчасовий перехід до її піддіаграми й повернення назад після вихо- ду з неї. Виведення закінчується на виході з головної піддіаграми. Ре- зультатом його є конкатенація пройдених символів-лексем. Напри- клад, ідентифікатору K_16 відповідає такий шлях: (літера,1) K →К

(літера,2) →К_ → К_(цифра, 1) → К_1 →К_1(цифра, 1) →К_15.

*Література для CР: алгебричні системи – [62, 79, 97]; узагальнені (неокласичні) алгебричні системи й логіки для них [39, 62, 94, 105, 150]; регулярні вирази, скінченні автомати [7, 23, 52, 97]; КВ-граматики та МП-автомати – [7, 20, 23]; САА та їхні застосування – [23, 24, 32, 52].

Контрольні запитання та вправи

1.Що таке алгебрична система, алгебра й реляційна система? Навести власні приклади таких систем.

2.Що таке замкнена підмножина й підсистема алгебричної системи?

3.Що таке множина твірних алгебри? Навести приклади твірних множин алгебр.

4.Що таке незалежна система твірних алгебри? Навести приклади таких множин.

5.Чим відрізняються ізоморфізм, автоморфізм і гомоморфізм систем?

6.Що таке півгрупа й підпівгрупа? Навести власні приклади півгруп, їхніх підпівгруп і твірних множин.

7.Що означає: одна система моделює іншу?

8.Дати означення наближеної, сильної й точної моделей системи.

9.Які системи називаються еквівалентними?

10.Дати означення конгуенції системи.

11.Що таке ядерна еквівалентність системи?

12.Що означає: узгодженість операцій і предикатів двох систем?

13.Нехай довільна сукупність непорожніх власних

підсистем системи А . Довести, що перетин B = ∩ D або

D

порожній, або замкнений.

14. Нехай сукупність усіх підсистем системи А , що містять

B . Довести, що перетин B* усіх систем із є найменшою

підсистемою А , що містить усі елементи B .

15. Сформулювати лему про ядерну еквівалентність гомоморфізму.

107

ПРОГРАМУВАННЯ

16. Довести, що ядерна еквівалентність гомоморфізму φ: A B системи А в систему B є конгруенцією.

17.Довести, що класи лишків за модулем p задають

конгруенцію на Z.

18.Навести інші нетривіальні конгруенції цілих чисел. Що можна сказати взагалі про їхню кількість?

19.Знайти всі конгруенції алгебри A = ({a,b,c,d},F ), де унарна

операція F

abcd

abcd

задана таблицями: а)

 

; б)

.

 

badc

bcdc

20.Що таке типізована операція?

21.Дати визначення багатосортної Ω -системи.

22.Що таке вільна Ω-система?

23.Сформулюйте теорему про вільні Ω -системи.

24.Дати визначення Ω-алгебри слів, регулярної Ω -системи мов

ісистеми алгоритмічних алгебр.

25.Довести, що система дійсних квадратних матриць розміром n ×n є півгрупою відносно додавання та множення (у

першому випадку комутативною, у другому ні). Що можна сказати про систему твірних у цих півгрупах?

26.Що таке список і лінійний список?

27.Сформулювати основні операції для лінійних списків.

28.Що таке стек і черга?

29.Сформулювати основні операції для стеків і черг.

30.Дати визначення графа, зваженого графа, мультиграфа й мережі.

31.Що таке дерево?

32.Що таке піддерево й листок дерева?

33.Довести лему 1.5 про дерево.

34.Що таке висота дерева?

35.Що таке дерево пошуку та збалансоване дерево?

36.Навести визначення скінченного, детермінованого й недетермінованого автоматів.

37.Дати визначення ізоморфізму й гомоморфізму скінченних автоматів.

38.Зобразити графічно автомат Q ={q0,q1,q*}, {q1,q*},F =

 

T ={a,b,c, }

, q

0

ε → q ; q a q ; q b q ; q c q* . Чи є

 

 

 

1

0

1

1

1

1

 

він детермінованим і яку регулярну мову розпізнає?

39

* . Довести,

що кожна скінченно-автоматна мова є

 

регулярною [23, 52].

 

 

 

 

 

40

* . Знайти найменші розв'язки: а)

лінійних рівнянь з одним

 

невідомим x

вигляду

x =ax b

та

x = xa b ; б) систем

108

Розділ І. ЛОГІКО-АЛГЕБРИЧНІ УНІВЕРСАЛІЇ

таких рівнянь. Показати, що кожна скінченно-автоматна мова є найменшим розв'язком певної системи лінійних рівнянь із б) [23, 52].

41.Побудувати регулярний вираз і детермінований автомат для множини десяткових скінченних дробів вигляду

xx...x.yy...y , де x,y довільні десяткові цифри.

42.Побудувати регулярний вираз і за ним детермінований автомат, які описують: 1) сукупність ідентифікаторів слів, що складаються з латинських літер і цифр і розпочинаються

злітери; 2) сукупність адрес електронної пошти; 3) сукупність Інтернет-адрес.

43.Те саме, що й у вправах 37-38, але застосувати: а) розширену БНФ; б) синтаксичну діаграму.

44.Детермінізувати автомат Q із вправи 15.

45.* Довести, що мова L2 ={anbn : n 0} не є регулярною.

46.Наведіть визначення КВ-граматики.

47.Побудувати за даною КВ-граматикою відповідну до неї обчислювальну процедуру.

48.Що таке еквівалентні КВ-граматики? Навести кілька прикладів таких граматик.

49.Символ X об'єднаного алфавіту N T називається

недосяжним у граматиці G = (N,Σ,P,S ), якщо в ній немає

жодного виведення вигляду S uXv,u,v (N T )* . Якщо в

граматиці відкинути всі правила, що містять недосяжні символи, то породжувана нею мова від цього не зміниться. Як знайти всі недосяжні символи граматики?

50.Довести, що для будь-якого виведення слова в граматиці G існує його лівостороннє виведення.

51.Показати, що для будь-якої РКВ-граматики існує еквівалентна КВ-граматика.

52.Наведіть визначення LL (k )-граматик. Які переваги мають

такі граматики?

Σ2n = {a1,b1,...,an ,bn } ,n > 0

53. Мовою Діка в алфавіті

називається мова D2n ,

породжена

КВ-граматикою

G4 = (Σ2n ,N,P,S ),

 

де

N = {S } ,

P = {S SS,S → ε,S aiSbi ,i =

 

} . Чи є

граматика G4

1,n

LL (k )-граматикою для деякого k > 0 ?

54.Побудувати LL (1)-граматику для сукупності ідентифікаторів.

55.Наведіть приклад не LL (1)-, а LL (2)-граматики.

109

ПРОГРАМУВАННЯ

56 * . Нетермінал

X

КВ-граматики

G

 

називається

 

ліворекурсивним,

якщо

в

граматиці

існує

виведення

 

X Xw . Довести, що граматика, яка має принаймні один

 

ліворекурсивний нетермінал, не може бути LL (k )-

 

граматикою для жодного k > 0 .

S

 

 

57. Нехай КВ-граматика

G5

з

аксіомою

має правила

 

P = {S A|B,A aAb|0,B aBbb|1} .

Яку

мову вона

 

породжує?

 

 

 

 

 

 

 

58 *

. Показати, що граматика G5

не є LL (k )-граматикою для

 

жодного k > 0 .

 

 

 

 

 

 

 

59 *

. Показати, що

для мови

L(G5 ) узагалі

не

існує LL (k )-

граматики.

60.Довести, що МП-автомат A з доведення теореми 1.4 за побудовою є МП-аналізатором типу розгортки для граматики G.

61.Довести твердження (*) з доведення теореми 1.4.

62.Довести, що для будь-якого МП-автомата A з множиною

заключних

станів F = Qfin × Σ* × H * існує еквівалентний

йому МП-автомат зі спустошенням.

63. Побудувати

КВ-граматику та МП-автомат для мови

L ={uuR : u {a,b}*}, де uR дзеркальне обернення слова u .

64.Побудувати МП-аналізатори типу розгортки для граматик із правилами: а) S AB|b , A SA|a ; б) S SS|A , A (A)|( ).

65.Побудувати МП-аналізатор для мови Діка (див. вправу 53).

66.Що таке БНФ та РБНФ?

67.Що таке синтаксична діаграма?

68.Побудувати синтаксичну діаграму та РБНФ для мови Діка в алфавіті (,),[,],{,}.

69.Побудувати синтаксичну діаграму та РБНФ для понять мови

С(див. підрозд. 3.2.2):

а) <ціле_число>; б) <дійсне_ число>; в) <літерал >; г) <коментар>;

д) <шістнадцяткова_константа>; е) <вісімкова_константа>.

110