Формальні мови та їх завдання, Детальна інформація

Формальні мови та їх завдання
Тип документу: Реферат
Сторінок: 5
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 12.3
Скачувань: 1341
{ A, B, C, D },

{ A \xF0AE BC, A \xF0AE BD, A \xF0AE B, B \xF0AE a, C \xF0AE 1, D \xF0AE 2 },

A )

можна переписати у вигляді

{ A \xF0AE B [ C | D ], B \xF0AE a, C \xF0AE 1, D \xF0AE 2 }.\xF0E7

Як бачимо, продукції граматики дуже схожі на БНФ як за формою, так і за змістом – лише замість знака "::=" вживається "\xF0AE ". Проте в лівій частині їх продукцій може бути не поодинокий нетермінал, а цілий ланцюжок, у якому обов'язково є нетермінал. За рахунок такого узагальнення граматики виявляються більш потужним засобом задання мов, ніж системи БНФ, тобто існують мови, які задаються граматиками, але не задаються БНФ. Тепер опишемо спосіб, у який граматика G = (X, N, P, S) задає мову.

1. На множині слів об'єднаного алфавіту (X\xF0C8 N)* означається відношення безпосередньої виводимості, позначене знаком \xF0DE G (або \xF0DE , коли відомо, якою саме є G):

v \xF0DE G w, якщо v = x1 u x2 , w = x1 y x2 , u \xF0AE y \xF0CE P.

При цьому кажуть, що w безпосередньо виводиться з v застосуванням продукції u\xF0AE y. Наприклад, у граматиці G1 із прикладу 21.3 BC\xF0DE aC застосуванням продукції B\xF0AE a, aC\xF0DE a1застосуванням C\xF0AE 1.

2. На множині (X\xF0C8 N)* означається відношення виводимості, позначене \xF0DE *G (або \xF0DE *, коли відомо, якою саме є G): v\xF0DE *w, якщо v=w або існує послідовність w1, w2, … , wn слів, де n\xF0B3 1, така, що v\xF0DE w1, w1\xF0DE w2, … , wn-1\xF0DE wn, wn=w. Так, у граматиці G1 BC\xF0DE *a1, оскільки BC\xF0DE aC, aC\xF0DE a1. Послідовність v\xF0DE w1\xF0DE w2\xF0DE …\xF0DE wn називається виведенням wn із v, а n – довжиною виведення. Інколи довжину записують замість '*' таким чином: v\xF0DE nw, наприклад, BC \xF0DE 2a1.

3. Якщо S\xF0DE G*w, то послідовність S\xF0DE …\xF0DE w називається виведенням слова w у граматиці G, а слово w – вивідним. Так, слова A, BC, aC, a1 вивідні в граматиці G1.

4. Вивідні слова в алфавіті X називаються породжуваними, а множина їх усіх – мовою, що задається (породжується) граматикою G: L(G) = {w | w\xF0CE X* та S \xF0DE * w }.

Приклади

4. Граматика G1 із прикладу 21.3 задає мову { a, a1, a2 }.\xF0E7

5. Граматика

G2 = ( { a, …, z, 0, …, 9 }, { I, L, D },

{ I \xF0AE L | IL | ID, L \xF0AE a | … | z, D \xF0AE 0 | ... | 9 },

I )

породжує множину ідентифікаторів.\xF0E7

6. Граматика G3 = ( { (, ) }, { S }, { S \xF0AE \xF065 | ( S ) }, S ) задає множину "вкладених дужок" { (n)n | n \xF0B3 0 }.\xF0E7

7. Граматика

G4 = ( { a, b, c }, { S, A, B, C},

{ S \xF0AE aSBC | abC, CB \xF0AE BC, bB \xF0AE bb, bC \xF0AE bc, cC \xF0AE cc },

S )

визначає мову { anbncn | n \xF0B3 1 }.\xF0E7

Граматики називаються еквівалентними, якщо задають ту саму мову. Наприклад, граматика

( { a, 1, 2 }, { A }, { A \xF0AE a [ 1 | 2 ] }, A )

еквівалентна граматиці G1, граматика

( {a, …, z, 0, …, 9}, {I, C}, {I \xF0AE (a|…|z)C, C \xF0AE \xF065 |C(a |…|z|0|…|9)}, I )

– граматиці G2.

The online video editor trusted by teams to make professional video in minutes