Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.

Podobne prezentacje


Prezentacja na temat: "Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład."— Zapis prezentacji:

1 Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Jerzy.Nawrocki@put.poznan.pl www.cs.put.poznan.pl/jnawrocki/wdi/ Wprowadzenie do informatyki Wykład 10 begin goto spacer end.

2 J.Nawrocki, Gramatyki i translatory Języki programowania AnalizatorGenerator.pas.exe Kompilator

3 J.Nawrocki, Gramatyki i translatory Języki programowania Dany jest ciąg cyfr, nawiasów, znaków +, -, *, /. Czy ten ciąg jest poprawnie zbudowanym wyrażeniem arytmetycznym? 1 + 2 * 3 1 + * 2 3 = 7 = ???

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

5 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, sieci Petri’ego) Przypadki testowe (pokrycie, gen.) Szacowanie maksymalnego czasu wykonania programów Analiza łańcuchów DNA (wzorce) Przetwarzanie dokumentów XML

6 J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

7 J.Nawrocki, Gramatyki i translatory Produkcje i wywód 1+ =1+ =1+ =1+ = { 1, 11, 111,... } Symbol początkowy: S Produkcje: (reguły zastępowania) S  1 S  S 1 Wywód: 111: S 1) 2) S 1 S 1 1 1 1 1  2  2  1 1: S 1  1

8 J.Nawrocki, Gramatyki i translatory Inne produkcje S  A B A  1 A  A 1 B  0 B  B 0 Wywód: 10: SA BA B 1 B 1 0  1  2  4 1) 2) 3) 4) 5) 100:

9 J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy

10 J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B}

11 J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B} Symbole terminalne T = {0, 1}

12 J.Nawrocki, Gramatyki i translatory Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B} Symbole terminalne T = {0, 1} Produkcje

13 J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

14 J.Nawrocki, Gramatyki i translatory Domknięcie relacji wywodu S  A B A  1 A  A 1 B  0 B  B 0 Wywód: SA BA B 1 B 1 0  1  2  4 1) 2) 3) 4) 5) S 1 0  + Z S można wywieść 10 stosując 1 lub więcej produkcji

15 J.Nawrocki, Gramatyki i translatory Zbiór ciągów nad alfabetem S  A B A  1 A  A 1 B  0 B  B 0 Alfabet = Zbiór symboli terminalnych T = {0, 1} Zbiór ciągów nad alfabetem T*: Zbiór wszystkich ciągów skończonych zbudowanych z elementów zbioru T. Jeśli T = {0, 1} to T* = { , 0, 1, 00, 01, 10, 11, 000,...} Jeśli T = {a, b, c} to T* = { , a, b, c, aa, ab, ac, ba, bb, bc,...}

16 J.Nawrocki, Gramatyki i translatory Język formalny Gramatyka G = S – Symbol początkowy N – Zbiór symboli nieterminalnych T – Zbiór symboli terminalnych P – Zbiór produkcji L(G) = {x  T*: S x  + } Język formalny L zdefiniowany przez gramatykę G:

17 J.Nawrocki, Gramatyki i translatory Język formalny L(G) = {x  T*: S x  + } S  A B A  1 A  A 1 B  0 B  B 0 S 1 B  + Czy 1B należy do L(G) ? Czy 11 należy do L(G) ? 11  T* SA BA B 1 B  1  2 1) 2) 3) 4) 5)

18 J.Nawrocki, Gramatyki i translatory Równoważność gramatyk Gramatyki G1 i G2 są równoważne wtedy i tylko wtedy, gdy L(G1) = L(G2) S  A B A  1 A  A 1 B  0 B  B 0 G1 S  S 0 S  A 0 A  1 A  A 1 G2 S  1 S S  1 A A  0 A  0 A G3

19 J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

20 J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe Noam Chomsky

21 J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe Noam Chomsky

22 J.Nawrocki, Gramatyki i translatory Gramatyki kontekstowe Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe Noam Chomsky Gramatyki klasy 0

23 J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe

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

25 J.Nawrocki, Gramatyki i translatory Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe

26 J.Nawrocki, Gramatyki i translatory Gramatyka bezkontekstowa () 1. W  ( W ) 1 2. W  1 Jeden nieterminal

27 J.Nawrocki, Gramatyki i translatory 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  1 2 8. L  2 3 9. L  3 Jeden nieterminal

28 J.Nawrocki, Gramatyki i translatory Gramatyki kontekstowe Klasyfikacja Chomsky’ego Gramatyki liniowe Gramatyki bezkontekstowe

29 J.Nawrocki, Gramatyki i translatory 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

30 J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

31 J.Nawrocki, Gramatyki i translatory Problem Język liczb binarnych L = {0, 1, 00, 01, 10, 11,...}. Po liczbie jest spacja. Napisać program sprawdzania, czy x  L. N – liczba binarna (Numer binarny) C – Cyfra binarna N = C + N = {C, CC, CCC,...} N  C N N  C

32 J.Nawrocki, Gramatyki i translatory Problem Język liczb binarnych L = {0, 1, 00, 01, 10, 11,...}. Po liczbie jest spacja. Napisać program sprawdzania, czy x  L. N – liczba binarna (Numer binarny) C – Cyfra binarna N = C + N = {C, CC, CCC,...} gdzie C = {0, 1} N  C N N  C C  0 C  1

33 J.Nawrocki, Gramatyki i translatory Bufor wejściowy #define Bool int #define True 1 #define False 0 void Init() Bool Widzisz(char c) void Nastepny() 1011‘ N  C N N  C C  0 C  1

34 J.Nawrocki, Gramatyki i translatory Bufor wejściowy #define Bool int #define True 1 #define False 0 char Token; void Init(){ scanf("%c", &Token); return; } Bool Widzisz(char c){ return Token == c; } void Nastepny(){ scanf("%c", &Token); return; } 1011‘ Token N  C N N  C C  0 C  1

35 J.Nawrocki, Gramatyki i translatory Bufor wejściowy void main(){ Init(); if (N()){ printf("OK\n"); }else{ printf("Error\n"); } return; } 10110 Token N  C N N  C C  0 C  1

36 J.Nawrocki, Gramatyki i translatory Bufor wejściowy Bool C(){ if (Widzisz('0') || Widzisz('1')){ Nastepny(); return True; }else{ return False; } 10110 Token N  C N N  C C  0 C  1

37 J.Nawrocki, Gramatyki i translatory Bufor wejściowy #define N_ogr ' ' Bool N(){ Bool ok; ok= C(); if (ok && Widzisz(N_ogr)){ return ok; }else{ if (ok){ return N(); }else{ return False; } 10110 Token N  C N N  C C  0 C  1

38 J.Nawrocki, Gramatyki i translatory Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Zbiory first

39 J.Nawrocki, Gramatyki i translatory Nieterminale mogą być problemem Boolean W() 0 1. W  A 0 1 2. W  B 1 3. A ... 4. B ... void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; }

40 J.Nawrocki, Gramatyki i translatory Boolean W() { if (Current ==... ) 0 return A() & Take(‘ 0 ’); 1 else return B() & Take(‘ 1 ’); } Nieterminale mogą być problemem void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; } 0 1. W  A 0 1 2. W  B 1 3. A ... 4. B ...

41 J.Nawrocki, Gramatyki i translatory Boolean W() { if (Current ==... ) 0 return A() & Take(‘ 0 ’); 1 else return B() & Take(‘ 1 ’); } Nieterminale mogą być problemem A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 1 2. W  B 1 3. A ... 4. B ... void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; }

42 J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 1 2. W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 }

43 J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 1 2. W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 }

44 J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 1 2. W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } first(W) = first(A)  first(B)

45 J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 1 2. W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } first(W) = first(A)  first(B)

46 J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 01 2. W  0 B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } first(W) = first(A) ...

47 J.Nawrocki, Gramatyki i translatory Zbiory first A .. first(A) = {b  T: A  * b  } 0 1. W  A 0 01 2. W  0 B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } 0 first(W) = first(A)  { 0 }

48 J.Nawrocki, Gramatyki i translatory Zbiory first 0 1. W  A 0 1 2. W  B 1 () 3. A  ( A ) 3 5. B  3 B 2 4. A  2 4 6. B  4 (2 first(A) = { (, 2 } 34 first(B) = { 3, 4 } Boolean W() { (2 if (Current == ‘ ( ’ || Current == ‘ 2 ‘ ) 0 return A() & Take(‘ 0 ’); 1 else return B() & Take(‘ 1 ’); } void main(){ Init(); if (W) printf("OK”); else printf("Error"); return; }

49 J.Nawrocki, Gramatyki i translatory Podsumowanie Gramatyka formalna Wywód zdania Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych Wreszcie!

50 J.Nawrocki, Gramatyki i translatory Literatura J. Cybulka, B. Jankowska, J. Nawrocki, Automatyczne przetwarzanie tekstów. AWK, Lex i YACC, Nakom, Poznań, 2002. 

51 J.Nawrocki, Gramatyki i translatory 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 Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład."

Podobne prezentacje


Reklamy Google