Jezike tehnologije 1 Gramatike linearne nezavisne od konteksta

  • Slides: 31
Download presentation
Jezičke tehnologije 1 Gramatike: linearne, nezavisne od konteksta, zavisne od konteksta

Jezičke tehnologije 1 Gramatike: linearne, nezavisne od konteksta, zavisne od konteksta

Primer 3. 1 • Gramatika koja definiše jezik L 3 = {an bn |

Primer 3. 1 • Gramatika koja definiše jezik L 3 = {an bn | n > 0} je: – Σ = {a, b} – N = {S} – P = {S → a. Sb | ab} završni alfabet nezavršni alfabet (početni simbol) skup pravila • Gramatika koja definiše jezik L 5 = {an bn | n 0} je: – P = {S → a. Sb | ε} skup pravila

Neposredno izvođenje • Ako u gramatici < ∑, N, P, S > postoji pravilo

Neposredno izvođenje • Ako u gramatici < ∑, N, P, S > postoji pravilo α → β P onda za bilo koje dve niske γ, δ (Σ N)* važi: – γ α δ G γ β δ • Tada se kaže da se iz niske γ α δ u gramatici G neposredno izvodi niska γ β δ • Za izvođenje jedne niske iz početnog simbola u datoj gramatici obično je potrebno više koraka neposrednog izvođenja, a međukoraci tog izvođenja su niske nad alfabetom (Σ N)*

Definicija rečenične forme i rečenice • Rečenična forma (ili gramatička forma) u gramatici G

Definicija rečenične forme i rečenice • Rečenična forma (ili gramatička forma) u gramatici G se rekurzivno definiše: – Početni simbol S gramatike G je rečenična forma; – Ako je γ α δ rečenična forma i α →G β P onda je i γ β δ rečenična forma. • Rečenica u gramatici G je rečenična forma koja pripada Σ* (niska koja sadrži samo simbole završnog alfabeta).

Definicija izvođenja • Izvođenje u gramatici G je niz rečeničnih formi – α 0,

Definicija izvođenja • Izvođenje u gramatici G je niz rečeničnih formi – α 0, α 1, α 2, . . . , αn • takvih da je – α 0 = S – αi-1 αi za svako i [1, n] • Dakle, iz početnog simbola S može se neposredno izvesti niska α 1, a iz nje se neposredno može izvesti niska α 2, iz nje niska α 3 itd.

Označavanje izvođenja u n koraka, pozitivnom, proizvoljnom broju koraka • n-ti stepen relacije označava

Označavanje izvođenja u n koraka, pozitivnom, proizvoljnom broju koraka • n-ti stepen relacije označava se sa n – α n β, β se izvodi iz α u n koraka. • Tranzitivno zatvorenje relacije označava se sa + – α + β, β se izvodi iz α u konačnom broju koraka i α β. • Tranzitivno i refleksivno zatvorenje relacije označava se sa * – α * β, β se izvodi iz α.

Druga definicija rečenične forme • Pod rečeničnom formom u gramatici – G = <

Druga definicija rečenične forme • Pod rečeničnom formom u gramatici – G = < ∑, N, P, S > podrazumeva se svaka niska – α (Σ N)* takva da važi: S * α • Primer: – Za gramatiku Σ = {a, b}, N = {S}, P = {S → a. Sb | ab} : • • • S, a. Sb, aa. Sbb, aaabbb su rečenične forme; aaabbb je rečenica S 3 aaabbb jer S a. Sb aa. Sbb aaabbb S + aaabbb S * aaabbb

Definicija jezika preko gramatike • Jezik opisan gramatikom G = < ∑, N, P,

Definicija jezika preko gramatike • Jezik opisan gramatikom G = < ∑, N, P, S > , u označava se sa L(G), je – L(G) = {x | x Σ* i S * x} • Kaže se da gramatika G generiše ili proizvodi jezik L(G). • Za nisku x se kaže da je generisana gramatikom G. • Jezik opisan zadatom gramatikom čine sve niske završnih simbola zadate gramatike koje se mogu izvesti iz početnog simbola.

Ekvivalentni jezici • Za gramatike – G 1 = < ∑, N 1, P

Ekvivalentni jezici • Za gramatike – G 1 = < ∑, N 1, P 1, S 1 > i – G 2 = < ∑, N 2, P 2, S 2 > – kažemo da su ekvivalentne ako je – L(G 1) = L(G 2)

3. 2 Primer ekvivalentnih jezika • Neka je G 1 = < {a, b},

3. 2 Primer ekvivalentnih jezika • Neka je G 1 = < {a, b}, {S, X, Y}, P 1, S> gde je P 1 – S → a. X – X → a. X | b. Y – Y → b. Y | ε • Ova gramatika generiše jezik – L 2 = {an bm | n, m > 0} • Za nisku aaabb imamo sledeće izvođenje – S a. X aaab. Y aaabb

3. 2 Primer ekvivalentnih jezika (2) • Neka je G 2 = < {a,

3. 2 Primer ekvivalentnih jezika (2) • Neka je G 2 = < {a, b}, {R, A, B}, P 2, R> gde je P 2 – R → AB – A → a. A | a – B → b. B | b • I ova gramatika generiše jezik – L 2 = {an bm | n, m > 0} • Za nisku aaabb imamo sledeće izvođenje – R AB aaa. B aaabb • Prema definiciji gramatike G 1 i G 2 su ekvivalentne.

Primer 3. 3 • Neka je data gramatika G = < ∑, N, P,

Primer 3. 3 • Neka je data gramatika G = < ∑, N, P, S > gde je ∑ = {0, 1, 2}, N = {S, A, B, C} , a P je: – S → AB – C 1 → 1 C A → 0 A 1 C CB → B 2 A→ε 1 B → 1 • Ova gramatika generiše jezik – L = {0 n 1 n 2 n | n > 0} • Jedno izvođenje niske 012 je – S AB 0 A 1 CB 0ε 1 CB 01 B 2 012 • Plavom bojom je data niska koja je u pravilu s leve strane i koja se zamenjuje, poduvučena je niska koja je u pravilu s desne strane i koja je dobijena zamenom.

Primer 3. 3 (nastavak) • Neka je data gramatika G = < ∑, N,

Primer 3. 3 (nastavak) • Neka je data gramatika G = < ∑, N, P, S > gde je ∑ = {0, 1, 2}, N = {S, A, B, C} , a P je: – S → AB – C 1 → 1 C A → 0 A 1 C CB → B 2 A→ε 1 B → 1 • Ova gramatika generiše jezik – L = {0 n 1 n 2 n | n > 0} • Jedno izvođenje niske 001122 je – S AB 0 A 1 CB 00 A 1 C 1 CB 00ε 1 C 1 CB 0011 CB 2 0011 B 22 001122

Primer 3. 4 • Neka je data gramatika G = < ∑, N, P,

Primer 3. 4 • Neka je data gramatika G = < ∑, N, P, S > gde je ∑ = {a}, N = {S, Q, N, R} , a P je: – S → QNQ – RQ → NNQ QN→ QR N→a RN → NNR Q→ε • Ova gramatika generiše jezik (niske koje se sastoje od simbola a čiji je broj ponavljanja stepen broja 2) – L = {am | m= 2 n, n 0} • Jedno izvođenje niske aa je – S QNQ QRQ QNNQ ε a a ε • Plavom bojom je data niska koja je u pravilu s leve strane i koja se zamenjuje, poduvučena je niska koja je u pravilu s desne strane i koja je dobijena zamenom.

Primer 3. 4 (nastavak) • Gramatika je G = < ∑, N, P, S

Primer 3. 4 (nastavak) • Gramatika je G = < ∑, N, P, S > gde je ∑ = {a}, N = {S, Q, N, R} , a P je: – S → QNQ – RQ → NNQ QN→ QR N→a RN → NNR Q→ε • L = {am | m= 2 n, n 0} • Jedno izvođenje niske aaaa je – S QNQ QRQ QNNQ QRNQ QNNRQ QNNNNQ * aaaa • Jedno izvođenje niske aaaa je – S QNQ QRQ QNNQ QRNQ QNNRQ QNNNNQ QRNNNQ QNNRNNQ QNNNNRNQ QNNNNNNRQ QNNNNQ * aaaa

Primer 3. 4 (nastavak) • Gramatika je G = < ∑, N, P, S

Primer 3. 4 (nastavak) • Gramatika je G = < ∑, N, P, S >, gde je ∑ = {a}, N = {S, Q, N, R} , a P je: – S → QNQ – RQ → NNQ QN→ QR N→a RN → NNR Q→ε • L = {am | m= 2 n, n 0} • Iz početnog simbola može se generisati i a – S QNQ ε a ε a • Da li je to niska jezika L? Jeste, jer je 20=1, a a 1=a.

Klasifikacija jezika prema strukturi pravila • Gramatike iz prethodna dva primera nemaju neposrednog značaja

Klasifikacija jezika prema strukturi pravila • Gramatike iz prethodna dva primera nemaju neposrednog značaja za obradu prirodnih jezika. • One omogućavaju da se uspostavi hijerarhija među jezicima na osnovu strukture njihovih pravila. • Ovu hijerahiju je formulisao američki lingvista Noam Čomski (Noam Chomsky).

Hijerarhija gramatika G = < ∑, N, P, S > 1. Desno-linearna gramatika ili

Hijerarhija gramatika G = < ∑, N, P, S > 1. Desno-linearna gramatika ili gramatika tipa 3, sva pravila su oblika A → a. B ili A → a ili A → ε A, B N, a Σ. 2. Kontekstno-slobodna gramatika ili gramatika tipa 2, sva pravila su oblika A → α gde A N, α (Σ N)*. 3. Kontekstno-osetljiva gramatika ili gramatika tipa 1, sva pravila su oblika α → β gde |α| |β| i α, β (Σ N)* (ne postoji ε pravilo) 4. Gramatika bez ograničenja, opšta gramatika ili gramatika tipa 0, nema ograničenja na strukturu pravila.

Hijerarhija jezika prema gramatikama • Jezik opisan desno-linearnom gramatikom je desno-linearni jezik. • Jezik

Hijerarhija jezika prema gramatikama • Jezik opisan desno-linearnom gramatikom je desno-linearni jezik. • Jezik opisan kontekstno-osetljivom gramatikom je kontekstno-slobodni jezik. • Jezik opisan kontekstno-osetljivom gramatikom je kontekstno-osetljiv jezik. • Jezik opisan gramatikom bez ograničenja je jezik bez ograničenja.

Šta proizilazi iz ovako definisanih tipova gramatika i jezika • Desno-linearne i kontekstno-slobodne gramatike

Šta proizilazi iz ovako definisanih tipova gramatika i jezika • Desno-linearne i kontekstno-slobodne gramatike dopuštaju ε pravila. Kontekstno osetljive ne dopuštaju ε pravila jer su ona oblika α → ε i važi |α| 1 > |ε|. • Levo-linearne gramatike imaju pravila oblika A → Ba ili A → ε. Levo-linearne gramatike opisuju istu klasu jezika kao i desno-linearne gramatike. • Svaki desno-linearni jezik je i kontekstno-slobodan, ali obrnuto ne važi. Npr. , ne postoji desno-linearna gramatika koja opisuje jezik L 3 = {an bn | n > 0} • Desno-linearne (kao i levo-linearne) gramatike opisuju istu klasu jezika kao regularni izrazi.

Tip gramatike iz primera 3. 3 • Gramatika G = < ∑, N, P,

Tip gramatike iz primera 3. 3 • Gramatika G = < ∑, N, P, S >: – S → AB – C 1 → 1 C A → 0 A 1 C CB → B 2 A→ε 1 B → 1 • koja generiše jezik L = {0 n 1 n 2 n | n > 0} • je tipa 0 jer ima ε-pravilo, a za pravilo 1 B → 1 važi |1 B| > |1|

Tip gramatike iz primera 3. 4 • Gramatika G = < ∑, N, P,

Tip gramatike iz primera 3. 4 • Gramatika G = < ∑, N, P, S > : – S → QNQ – RQ → NNQ QN→ QR N→a RN → NNR Q→ε • Generiše jezik L = {am | m= 2 n, n 0} • tipa je 0 jer ima ε pravilo.

Ekvivalentna gramatika jezika iz primera 3. 3 • Neka je data gramatika G =

Ekvivalentna gramatika jezika iz primera 3. 3 • Neka je data gramatika G = < ∑, N, P, S > gde je ∑ = {0, 1, 2}, N = {S, A, B, C, D} , a P je: – – – S → AB A → 0 D 1 A → 01 D → 0 D 1 C D → 01 C C 1 → 1 C CB → B 2 1 B → 12 S AB 012 S AB 0 D 1 B 001 C 1 B 0011 CB 0011 B 2 001122 • Ova gramatika je kontekstno-osetljiva jer nema ε pravilo.

Zadatak 3. 1 • Za gramatiku G = < ∑, N, P, S >

Zadatak 3. 1 • Za gramatiku G = < ∑, N, P, S > gde je ∑ = {0, 1, 2, . . . , 9, ”, ”}, skup neterminala je N = {S, M, C}, a skup pravila P je: – S → M | MCC | S, CCC – M → = 1 | 2 |. . . | 9 – C→ 0|M • Odrediti jezik koji gramatika generiše.

Zadatak 3. 1 - rešenje – S → M | MCC | S, CCC

Zadatak 3. 1 - rešenje – S → M | MCC | S, CCC – M → = 1 | 2 |. . . | 9 – C→ 0|M • Jedno izvođenje: – S S, CCC, CCC MC, CCC * 10, 000 • Gramatika generiše cele brojeve u kojima se razdvajaju zarezom po tri cifre (za brojeve veće od 1000).

Zadatak 3. 2 • Koji jezik generiše gramatika G = < ∑, N, P,

Zadatak 3. 2 • Koji jezik generiše gramatika G = < ∑, N, P, S > gde je ∑ = {a, b, c, d}, skup neterminala je N = {S} , a skup pravila P = {S → a. Sd | bc} • Jedno izvođenje: – S a. Sd aa. Sdd aaa. Sddd aaabcddd • Gramatika generiše jezik – L = {x | x = anbcdn, n 0} • Za ovaj jezik ne postoji desno-linerna gramatika (jer jezik podrazumeva “brojanje”).

Zadatak 3. 3 • Sastaviti kontekstno-slobodne gramatike za jezike nad alfabetom ∑ = {a,

Zadatak 3. 3 • Sastaviti kontekstno-slobodne gramatike za jezike nad alfabetom ∑ = {a, b}: a) {x | x=anbn, n > 0} – S → a. Sb | ab – S a. Sb aa. Sbb aaabbb b) {x | x=α α R, α Σ+} – S → a. Sa | b. Sb | aa | bb – S a. Sa aa. Saa aab. Sbaa aaba. Sabaa aabab|babaa

Zadatak 3. 3 (nastavak) c) {x | x=anbnak, n, k > 0} – S

Zadatak 3. 3 (nastavak) c) {x | x=anbnak, n, k > 0} – S → a. Qb. T Q → a. Qb | ε T → a. T | a – S a. Qb. T aa. Qbb. T aaa. Qbbb. T aaaabbbbaa (a 4 b 4 a 2) d) {x | x=akbnan, n, k > 0} – S → a. S | a. T T → b. Ta | ba – S aaa. T aaab. Ta aaabb. Taa aaabbb. Taaa aaabbbbaaaa (a 3 b 4 a 4)

Zadatak 3. 4 • Za datu gramatiku G = < ∑, N, P, S

Zadatak 3. 4 • Za datu gramatiku G = < ∑, N, P, S > gde je ∑ = {a, +, *}, skup neterminala je N = {S} , a skup pravila P = {S → SS+ | SS* | a} naći jedno izvođenje niske aa+aa+* • S SS* SS+SS+* * aa+aa+* • Ova gramatika opisuje jezik izraza u poljskoj notaciji: – Izrazu aa+aa+* – Odgovara izraz (a+a)*(a+a)

Zadatak 3. 5 • Formulisati gramatiku koja generiše jezik regularnog izraza – (ab)n n

Zadatak 3. 5 • Formulisati gramatiku koja generiše jezik regularnog izraza – (ab)n n > 0 • Kontekstno-slobodna gramatika – < ∑, N, P, S >; ∑ = {a, b}; N = {S}; P = {S → ab. S | ab} • Desno-linearna gramatika – < ∑, N, P, S >; ∑ = {a, b}; N = {S}; P = {S → a. B; B → b. S | b} – Npr. izvođenje niske ababab: – S a. B ab. S aba. B abab. S ababa. B ababab

Zadatak 3. 6 • Opisati kontekstno-slobodnom gramatikom regularni izraz – (xy*x + yx*y)* •

Zadatak 3. 6 • Opisati kontekstno-slobodnom gramatikom regularni izraz – (xy*x + yx*y)* • G = < ∑, N, P, S > , ∑ = {x, y}, N = {S} , P: – S → x. Yx. S | y. Xy. S | ε – X → x. X | ε – Y → y. Y | ε • S x. Yx. S xyyyεx. S xyyyxy. Xy. S xyyyxyxxεy. S xyyyxyxxyε (xy 3 xyx 2 y) • xy 4 xxy 2 x pripada jeziku • xy 4 x 4 y 2 = xy 4 x xy 2 ? ne pripada jeziku