Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Języki formalne i gramatyki Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy.

Podobne prezentacje


Prezentacja na temat: "Języki formalne i gramatyki Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy."— Zapis prezentacji:

1 Języki formalne i gramatyki Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki Wykład 6

2 J.Nawrocki, Języki formalne i gramatyki Ulepszenia Wyrażenia regularne a gramatyki

3 J.Nawrocki, Języki formalne i gramatyki Zastosowania języków formalnych Kompilatory dla nowych języków programowania (C#, xSQL) Generowanie kodu na podstawie modeli (UML, HRT HOOD) Przypadki testowe (pokrycie, gen.) Szacowanie maksymalnego czasu wykonania programów Analiza łańcuchów DNA (wzorce) Przetwarzanie dokumentów XML

4 J.Nawrocki, Języki formalne i gramatyki Plan wykładu Podstawowe pojęcia Klasyfikacja Chomskyego Zbiory FOLLOW i first Metoda zejść rekurencyjnych Atrybuty i translacja

5 J.Nawrocki, Języki formalne i gramatyki Fazy kompilacji Analiza leksykalna.pas Środowisko czasu wykon. Analiza składniowa Generacja kodu pośr. Generacja kodu wynik..exe Wyrażenia regularne Gramatyki

6 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej JaśszkołyidziedoJaśszkołyidziedo Teraz OK. ???

7 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Teraz OK. ??? 1+*231+*23

8 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące sumą

9 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące sumą składnik

10 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące sumą składnik składnik + składnik

11 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące sumą składnik składnik + składnik składnik + składnik + składnik

12 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące sumą składnik składnik + składnik składnik + składnik + składnik składnik + składnik + składnik + składnik

13 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące sumą składnik składnik + składnik składnik + składnik + składnik składnik + składnik + składnik + składnik ( składnik + )* składnik wyrażenie:

14 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące iloczynem (czyli składnik) * * 222 * * 222 * 33 * 4 czynnik czynnik * czynnik czynnik * czynnik * czynnik czynnik * czynnik * czynnik * czynnik

15 J.Nawrocki, Języki formalne i gramatyki Wyrażenie będące iloczynem (czyli składnik) * * 222 * * 222 * 33 * 4 czynnik czynnik * czynnik czynnik * czynnik * czynnik czynnik * czynnik * czynnik * czynnik ( czynnik * )* czynnik składnik:

16 J.Nawrocki, Języki formalne i gramatyki Czynnik 1111liczba liczba | ( wyrażenie ) czynnik: ( ) ( * 33 ) ( wyrażenie )

17 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Gramatyka formalna: reguły budowy zdań T = zbiór symboli terminalnych +*(... N = zbiór symboli nieterminalnych Wyrażenie SkładnikCzynnik S = symbol początkowy (S N) Wyrażenie P = zbiór produkcji gramatyki Składnik: Czynnik * Noam Chomsky

18 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Symbol początkowy Wywód zdania Forma zdaniowa Forma zdaniowa Forma zdaniowa Zdanie Forma zdaniowa (T N) + Zdanie (T) +

19 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Spostrzeżenia Forma zdaniowa (T N) + Zdanie (T) + 1.Każde zdanie jest formą zdaniową ale nie na odwrót. 2.Symbol początkowy gramatyki jest formą zdaniową. 1.Każde zdanie jest formą zdaniową ale nie na odwrót. 2.Symbol początkowy gramatyki jest formą zdaniową.

20 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Produkcja gramatyki (T N) + (T N) + Jeśli w zbiorze gramatyki jest, to x y

21 J.Nawrocki, Języki formalne i gramatyki Wyrażenia arytmetyczne 1.W S 2.W W + S WW + S S + S 3. S C 4. S S * C C + S C + S * C 5. C L 6. C ( W ) C + C * C L + C * C L + L * C L + L * L 7. L D 8. L L D D + L * L D + D * L D + D * D 9. D D D D * D * D * 3 Wywód lewo-/prawostronny

22 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Forma 1 Forma 2 Forma k... Forma 1Forma k * Forma 1 * Domknięcie zwrotne relacji wywodu

23 J.Nawrocki, Języki formalne i gramatyki Pojęcia analizy składniowej Symbol początkowy Zdanie * Język formalny L(G) = { x: S * x x T* }

24 J.Nawrocki, Języki formalne i gramatyki Plan wykładu Podstawowe pojęcia Klasyfikacja Chomskyego Zbiory FOLLOW i first Metoda zejść rekurencyjnych Atrybuty i translacja

25 J.Nawrocki, Języki formalne i gramatyki Klasyfikacja Chomskyego Gramatyki liniowe

26 J.Nawrocki, Języki formalne i gramatyki Gramatyki liniowe 1.S A B a 2.A A a a 3.A a b 4.B B b b 5.B b Lewoliniowa Prawoliniowa 1.S A B a 2.A a A a 3.A a b 4.B b B b 5.B b aba+ b+aba+ b+ Twierdzenie. Dla każdego wyrażenia regularnego istnieje gramatyka lewoliniowa ( prawoliniowa ) opisująca ten sam język.

27 J.Nawrocki, Języki formalne i gramatyki Klasyfikacja Chomskyego Gramatyki liniowe Gramatyki bezkontekstowe

28 J.Nawrocki, Języki formalne i gramatyki Gramatyka bezkontekstowa 1.W S + 2.W W + S 3. S C * 4. S S * C 5. C L () 6. C ( W ) 1 7. L L L 3 Jeden nieterminal

29 J.Nawrocki, Języki formalne i gramatyki Gramatyki kontekstowe Klasyfikacja Chomskyego Gramatyki liniowe Gramatyki bezkontekstowe

30 J.Nawrocki, Języki formalne i gramatyki Gramatyka kontekstowa a 1. S a X Y a 2. S a S X Y aa b 3. a X a b bb b 4. b X b b cc c 5. c X c c bb c 6. b Y b c cc c 7. c Y c c

31 J.Nawrocki, Języki formalne i gramatyki Klasyfikacja Chomskyego Gramatyki liniowe Gramatyki bezkontekstowe Gramatyki kontekstowe Gramatyki klasy 0 a 1. S a a 2. S a S aa b 3. a a b

32 J.Nawrocki, Języki formalne i gramatyki Plan wykładu Podstawowe pojęcia Klasyfikacja Chomskyego Zbiory FOLLOW i first Metoda zejść rekurencyjnych Atrybuty i translacja

33 J.Nawrocki, Języki formalne i gramatyki Zbiór FOLLOW(X) S *.. X a.. gdzie: S = symbol pocz., (T N)* follow (X) = {a T: S * X a }

34 J.Nawrocki, Języki formalne i gramatyki Zbiór FOLLOW(X) FOLLOW(X) = {a T {$}: S $ * X a } 1.S 0 B 2.B 1 follow(B) = ? $ FOLLOW(B) bowiem S *.. X a..$ S $ 0 B $ 1

35 J.Nawrocki, Języki formalne i gramatyki FOLLOW(X) FOLLOW(X) = {a T {$}: S $ * X a } 1.S 0 B 2.B 1 FOLLOW(S) = ? S $ * S $ $ FOLLOW(S) Twierdzenie F0

36 J.Nawrocki, Języki formalne i gramatyki FOLLOW(X) FOLLOW(X) = {a T {$}: S $ * X a } Jeśli a FOLLOW(Y), to S $ *.. Y a.. Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Twierdzenie F1 Jeśli Y X, to.. Y a.... X a.. Zatem S $ *.. X a.. Czyli a FOLLOW(X)

37 J.Nawrocki, Języki formalne i gramatyki FOLLOW(X) i first(Z) FOLLOW(X) = {a T {$}: S $ * X a } Y X Z Z.. FOLLOW(X) = ? first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Twierdzenie F2 Jeśli S *.. Y.., to S *.. X Z.. Jeśli b first(Z), to Z * b Czyli S $ *.. X b.. Zatem b FOLLOW(X)

38 J.Nawrocki, Języki formalne i gramatyki Podsumowanie FOLLOW(X) = {a T {$}: S $ * X a } Y X Z Z.. first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0

39 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 S P K P 0 P 0 P K e K f FOLLOW(S)

40 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) $ S P K P 0 P 0 P K e K f

41 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) $ S P K P 0 P 0 P K e K f

42 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) $ S P K P 0 P 0 P K e K f

43 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) $ $ S P K P 0 P 0 P K e K f

44 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) FOLLOW(P) $ $ S P K P 0 P 0 P K e K f

45 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) FOLLOW(P) $ $ S P K P 0 P 0 P K e K f

46 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) FOLLOW(P) first(K) FOLLOW(P) first(K) = {e, f} $ $ e,f S P K P 0 P 0 P K e K f

47 J.Nawrocki, Języki formalne i gramatyki Przykład first(Z) = {b T: Z * b } Jeśli Y X Z, to first(Z) FOLLOW(X). Jeśli Y X Z, to first(Z) FOLLOW(X). Tw. F2 Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Jeśli Y X, to FOLLOW(Y) FOLLOW(X). Tw. F1 $ FOLLOW(S) Tw. F0 FOLLOW(S) FOLLOW(K) FOLLOW(P) first(K) FOLLOW(P) first(K) = {e, f} $ $ e,f S P K P 0 P 0 P K e K f

48 J.Nawrocki, Języki formalne i gramatyki Plan wykładu Podstawowe pojęcia Klasyfikacja Chomskyego Zbiory FOLLOW i first Metoda zejść rekurencyjnych Atrybuty i translacja

49 J.Nawrocki, Języki formalne i gramatyki Metoda zejść rekurencyjnych E W = W S W S + W W S – W S C S C * S C L C ( W ) L D L D L D 0 D 1 function Current: char; (* podgląd *) function CurrentIn(s: SetOfChar): 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 *) 1+2*3

50 J.Nawrocki, Języki formalne i gramatyki Metoda zejść rekurencyjnych E W = W S W S + W W S – W S C S C * S C L C ( W ) L D L D L D 0 D 1 function D: Boolean; begin if Current = 0 then D:= Take(0) else D:= Take(1) end;

51 J.Nawrocki, Języki formalne i gramatyki Metoda zejść rekurencyjnych E W = W S W S + W W S – W S C S C * S C L C ( W ) L D L D L D 0 D 1 function L: Boolean; var ok: Boolean; begin ok:= D; if CurrentIn(FollowL) then L:= ok else if CurrentIn(FirstL) then L:= ok and L else Expected("0, 1, *, +, -, ), =") end; FOLLOW(L)= FOLLOW(C) = {*} FOLLOW(S)= {*, -, +} FOLLOW(W)= {*, -, +, ), =} first(L)= first(D)= {0, 1}

52 J.Nawrocki, Języki formalne i gramatyki Metoda zejść rekurencyjnych E W = W S W S + W W S – W S C S C * S C L C ( W ) L D L D L D 0 D 1 function C: Boolean; begin if CurrentIn(FirstL) then C:= L else if Curren = ( then C:= Take(() and W and Take()) else Expected("0, 1, (") end; first(L)= first(D)= {0, 1}

53 J.Nawrocki, Języki formalne i gramatyki Plan wykładu Podstawowe pojęcia Klasyfikacja Chomskyego Zbiory FOLLOW i first Metoda zejść rekurencyjnych Atrybuty i translacja

54 J.Nawrocki, Języki formalne i gramatyki D.v:= 0 D.v:= 1 Metoda zejść rekurencyjnych E W = W S W S + W W S – W S C S C * S C L C ( W ) L D L D L D 0 D 1 function 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 end;

55 J.Nawrocki, Języki formalne i gramatyki writeln(W.v) D.v:= 0 Metoda zejść rekurencyjnych E W = 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 function E: Boolean; var v: integer; begin if CurrentIn(FirstW) then begin E:= W(v); writeln(v) end end;

56 J.Nawrocki, Języki formalne i gramatyki S.v:= C.v S 1.v:= C.v * S 2.v W.v:= S.v W 1.v:= S.v + W 2.v W 1.v:= S.v – W 2.v C.v:= L.v C.v:= W.v writeln(W.v) D.v:= 0 L.v:= D.v; L.r:=2 L 1.v:= D.v*L 2.r + L 2.v; L 1.r:= L 2.r * 2 Metoda zejść rekurencyjnych E W = 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

57 J.Nawrocki, Języki formalne i gramatyki Podsumowanie Wreszcie! Gramatyka formalna Produkcje gramatyki Wywód zdania Klasyfikacja Chomskyego Zbiory FIRST i follow Metoda zejść rekurencyjnych Atrybuty

58 J.Nawrocki, Języki formalne i gramatyki Literatura J. Cybulka, B. Jankowska, J. Nawrocki, Automatyczne przetwarzanie tekstów. AWK, Lex i YACC, Nakom, Poznań, 2002.

59 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?


Pobierz ppt "Języki formalne i gramatyki Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy."

Podobne prezentacje


Reklamy Google