Teoretyczne podstawy informatyki Wykad 7 bis Jzyki formalne
Teoretyczne podstawy informatyki Wykład 7 bis Języki formalne i gramatyki Jerzy. Nawrocki@put. poznan. pl http: //www. cs. put. poznan. pl/jnawrocki/tpi/ J. Nawrocki, Języki formalne i Copyright, 2003 © Jerzy R. Nawrocki gramatyki
Plan wykładu • Podstawowe pojęcia • • Klasyfikacja Chomsky’ego Zbiory FIRST i follow Metoda zejść rekurencyjnych Atrybuty i translacja J. Nawrocki, Języki formalne i gramatyki
Pojęcia analizy składniowej ? ? ? 1 + * 2 3 Teraz OK. 1 + J. Nawrocki, Języki formalne i gramatyki 2 * 3
Pojęcia analizy składniowej Gramatyka formalna: reguły budowy zdań T = zbiór symboli terminalnych + * (. . . N = zbiór symboli nieterminalnych Wyrażenie Składnik Czynnik P = zbiór produkcji gramatyki Składnik: Noam Chomsky Czynnik 1 * Czynnik 2 S = symbol początkowy (S N) Wyrażenie J. Nawrocki, Języki formalne i gramatyki
Pojęcia analizy składniowej Wywód zdania Symbol początkowy Forma zdaniowa (T N)+ Zdanie (T)+ J. Nawrocki, Języki formalne i gramatyki Zdanie
Pojęcia analizy składniowej Produkcja gramatyki (T N)+ Jeśli w zbiorze gramatyki jest , to x y J. Nawrocki, Języki formalne i gramatyki
Wyrażenia arytmetyczne 1. W S 2. W W + S 3. S C 4. S S * C 5. C L 6. C ( W ) 7. L D 8. L L D 9. D 1 10. D 2 11. D 3 W W+S S+S C+S L+C*C D+L*L C+S*C C+C*C L+L*L D+D*D 1+D*D 1+2*D 1+2*3 J. Nawrocki, Języki formalne i gramatyki
Pojęcia analizy składniowej Domknięcie zwrotne relacji wywodu Forma 1 Forma 2 . . . Forma k Forma 1 * Forma 1 J. Nawrocki, Języki formalne i gramatyki
Pojęcia analizy składniowej Język formalny L(G) = { x: S * x x T* } Symbol początkowy * J. Nawrocki, Języki formalne i gramatyki Zdanie
Plan wykładu • Podstawowe pojęcia • Klasyfikacja Chomsky’ego • Zbiory FIRST i follow • Metoda zejść rekurencyjnych • Atrybuty i translacja J. Nawrocki, Języki formalne i gramatyki
Klasyfikacja Chomsky’ego Gramaty ki liniowe J. Nawrocki, Języki formalne i gramatyki
Gramatyki liniowe a+ b + 1. 2. 3. 4. 5. S AB A Aa A a B Bb B b Lewoliniowa 1. 2. 3. 4. 5. S AB A a. A A a B b. B B b Prawoliniowa Twierdzenie. Dla każdego wyrażenia regularnego istnieje gramatyka lewoliniowa (prawoliniowa) opisująca Języki formalne i gramatyki ten. J. Nawrocki, sam język.
Klasyfikacja Chomsky’ego Gramatyki konteksto we Gramatyki bezkontekst owe Gramaty ki liniowe J. Nawrocki, Języki formalne i gramatyki
Gramatyka bezkontekstowa 1. 2. 3. 4. 5. 6. 7. S a. XY S a. SXY a. X ab b. X bb c. X cc b. Y bc c. Y cc Kontekstowa J. Nawrocki, Języki formalne i gramatyki 1. W S 2. W W + S 3. S C 4. S S * C 5. C L 6. C ( W ) 7. L 1 8. L 2 9. L 3 Bezkontekstowa
Klasyfikacja Chomsky’ego 1. 2. 3. S a ab Gramatyki klasy 0 Gramatyki konteksto we Gramatyki bezkontekst owe Gramaty ki liniowe J. Nawrocki, Języki formalne i gramatyki
Plan wykładu • Podstawowe pojęcia • Klasyfikacja Chomsky’ego • Zbiory FIRST i follow • Metoda zejść rekurencyjnych • Atrybuty i translacja J. Nawrocki, Języki formalne i gramatyki
Zbiór FOLLOW(X) follow (X) = {a T: S * X a } gdzie: S = symbol pocz. , (T N)* S *. . X a. . J. Nawrocki, Języki formalne i gramatyki
Zbiór FOLLOW(X) = {a T {$}: S $ * X a } S follow(B) = ? 1. S 0 B 2. B 1 $ FOLLOW(B) bowiem 1 0 B$ S$ J. Nawrocki, Języki formalne i gramatyki $ *. . X a. .
Podsumowanie FOLLOW(X) = {a T {$}: S $ * X a } Y XZ Z . . first(Z) = {b T: Z * b } Tw. F 2 Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ ; FOLLOW( S) Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( S) Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( S) FOLLOW( K) Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( S) FOLLOW( K) Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( $ S) FOLLOW( K) Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( $ S) FOLLOW( K) FOLLOW( Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( $ S) FOLLOW( K) FOLLOW( Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( $ S) FOLLOW( e, f K) FOLLOW( Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) first(K) FOLLOW(P) first(K) = {e, f} J. Nawrocki, Języki formalne i gramatyki
Przykład %% S: P K ; P: ‘ 0‘ | ‘ 0’ P ; K: ‘e’ | ‘f’ $; FOLLOW( $ S) FOLLOW( e, f K) FOLLOW( Tw. F 2’ first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F 1 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F 0 $ FOLLOW(S) first(K) FOLLOW(P) first(K) = {e, f} J. Nawrocki, Języki formalne i gramatyki
Plan wykładu • Podstawowe pojęcia • Klasyfikacja Chomsky’ego • Zbiory FIRST i follow • Metoda zejść rekurencyjnych • Atrybuty i translacja J. Nawrocki, Języki formalne i gramatyki
Metoda zejść rekurencyjnych E W= W S+W W S–W S C*S C L C (W) L DL D 0 D 1 function Current: char; (* podgląd *) function Current. In(s: Set. Of. Char): Boolean; (* Czy Current należy do s? *) function Take(t: char): Boolean; (* Czy Curren = t ? Jeśli nie to sygnalizuj błąd. Następny Current *) procedure Next; (* Weź następny element z wejścia *) J. Nawrocki, Języki formalne i gramatyki
Metoda zejść rekurencyjnych E W= W S+W W S–W S C*S C L C (W) L DL D 0 D 1 fuction D: Boolean; begin if Current = ‘ 0’ then D: = Take(‘ 0’) else D: = Take(‘ 1’) end; J. Nawrocki, Języki formalne i gramatyki
Metoda zejść rekurencyjnych FOLLOW(L)= FOLLOW(C) = {*} E W= FOLLOW(S)= W S {*, -, +} FOLLOW(W)= {*, W S + W , +, ), =} W S – W first(L)= fuctionfirst(D)= L: Boolean; {0, 1} S C var ok: Boolean; S C*S begin C L ok: = D; C (W) if Current. In(Follow. L) then L: = ok L D else if Current. In(First. L) then L: = L DL ok and L D 0 else Expected("0, 1, *, +, - , ), =") D 1 end; J. Nawrocki, Języki formalne i gramatyki
Metoda zejść rekurencyjnych E W= W S+W W S–W S C*S C L C (W) L DL D 0 D 1 first(L)= first(D)= {0, 1} fuction C: Boolean; begin if Current. In(First. L) then C: = L else if Curren = ‘(‘ then C: = Take(‘(‘) and W and Take(‘)’) else Expected("0, 1, (") end; J. Nawrocki, Języki formalne i gramatyki
Plan wykładu • • Podstawowe pojęcia Klasyfikacja Chomsky’ego Zbiory FIRST i follow Metoda zejść rekurencyjnych • Atrybuty i translacja J. Nawrocki, Języki formalne i gramatyki
Metoda zejść rekurencyjnych E W= W S+W W S–W S C*S C L C (W) L DL D. v: = 0 D. v: = 1 D 1 fuction D(var v: integer): Boolean; begin if Current() = ‘ 0’ then begin D: = Take(‘ 0’); v: = 0 end else begin D: = Take(‘ 1’); v: = 1 end J. Nawrocki, Języki formalne i gramatyki
Metoda zejść rekurencyjnych E W = writeln(W. v) W S W 1 S + W 2 W 1 S – W 2 S C S 1 C * S 2 C L C (W) L D L 1 D L 2 D 0 D. v: = 0 J. Nawrocki, Języki formalne i gramatyki fuction E: Boolean; var v: integer; begin if Current. In(First. W) then begin E: = W(v); writeln(v) end;
Metoda zejść rekurencyjnych E W = writeln(W. v) W S W. v: = S. v W 1 S + W W 2 1. v: = S. v + W 2. v W 1 S – W W 2 1. v: = S. v – W 2. v S. v: = C. v S C S 1. v: = C. v * S 2. v S 1 C * S 2 C L C. v: = L. v C (W) C. v: = W. v L D L. v: = D. v; L. r: =2 L 1 D L 2 L 1. v: = D. v*L 2. r + L 2. v; L 1. r: = L 2. r * 2 D 0 D. v: = 0 J. Nawrocki, Języki formalne i gramatyki
Podsumowanie Wreszcie! Gramatyka formalna Produkcje gramatyki Wywód zdania Klasyfikacja Chomsky’ego Metoda zejść rekurencyjnych Zbiory FIRST i follow Atrybuty J. Nawrocki, Języki formalne i gramatyki
Ocena wykładu 1. Wrażenie ogólne? (1 - 6) 2. Zbyt wolno czy zbyt szybko? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co poprawić i jak? J. Nawrocki, Języki formalne i gramatyki
- Slides: 39