Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Gramatyki i translatory
(c) Jerzy Nawrocki TPI, Wykład 8 Wstęp do informatyki Wykład 14 Gramatyki i translatory Copyright, 2005 © Jerzy R. Nawrocki Procesy współbieżne
2
J.Nawrocki, Gramatyki i translatory
(c) Jerzy Nawrocki Języki programowania TPI, Wykład 8 Kompilator Analizator Generator .pas .exe J.Nawrocki, Gramatyki i translatory Procesy współbieżne
3
J.Nawrocki, Gramatyki i translatory
(c) Jerzy Nawrocki Języki programowania TPI, Wykład 8 Dany jest ciąg cyfr, nawiasów, znaków +, -, *, /. Czy ten ciąg jest poprawnie zbudowanym wyrażeniem arytmetycznym? 1 + 2 * 3 = 7 1 + * 2 3 = ??? J.Nawrocki, Gramatyki i translatory Procesy współbieżne
4
J.Nawrocki, Gramatyki i translatory
(c) Jerzy Nawrocki Plan wykładu TPI, Wykład 8 Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych J.Nawrocki, Gramatyki i translatory Procesy współbieżne
5
J.Nawrocki, Gramatyki i translatory
Produkcje i wywód 1+ = { 1, 11, 111, ... } Symbol początkowy: S Produkcje: (reguły zastępowania) S 1 S S 1 1) 2) Wywód: 1 1: S 1 2 2 1 111: S S 1 S 1 1 1 1 1 J.Nawrocki, Gramatyki i translatory
6
J.Nawrocki, Gramatyki i translatory
Inne produkcje S A B A 1 A A 1 B 0 B B 0 1) 2) 3) 4) 5) Wywód: 1 2 4 10: S A B 1 B 1 0 100: J.Nawrocki, Gramatyki i translatory
7
J.Nawrocki, Gramatyki i translatory
Gramatyka S A B A 1 A A 1 B 0 B B 0 Symbol początkowy J.Nawrocki, Gramatyki i translatory
8
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} J.Nawrocki, Gramatyki i translatory
9
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} J.Nawrocki, Gramatyki i translatory
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} Symbole terminalne T = {0, 1} Produkcje J.Nawrocki, Gramatyki i translatory
11
J.Nawrocki, Gramatyki i translatory
(c) Jerzy Nawrocki Plan wykładu TPI, Wykład 8 Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych J.Nawrocki, Gramatyki i translatory Procesy współbieżne
12
Domknięcie relacji wywodu
S A B A 1 A A 1 B 0 B B 0 1) 2) 3) 4) 5) Wywód: S A B 1 B 1 0 1 2 4 S 1 0 + Z S można wywieść 10 stosując 1 lub więcej produkcji J.Nawrocki, Gramatyki i translatory
13
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, ...} J.Nawrocki, Gramatyki i translatory
14
J.Nawrocki, Gramatyki i translatory
Język formalny Gramatyka G = {S, N, T, P} S – Symbol początkowy N – Zbiór symboli nieterminalnych T – Zbiór symboli terminalnych P – Zbiór produkcji Język formalny L zdefiniowany przez gramatykę G: L(G) = {x T*: S x + } J.Nawrocki, Gramatyki i translatory
15
J.Nawrocki, Gramatyki i translatory
Język formalny 1) 2) 3) 4) 5) S A B A 1 A A 1 B 0 B B 0 L(G) = {x T*: S x + } S A B 1 B 1 2 S 1 B + Czy 1B należy do L(G) ? 11 T* Czy 11 należy do L(G) ? J.Nawrocki, Gramatyki i translatory
16
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 J.Nawrocki, Gramatyki i translatory
17
J.Nawrocki, Gramatyki i translatory
(c) Jerzy Nawrocki Plan wykładu TPI, Wykład 8 Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych J.Nawrocki, Gramatyki i translatory Procesy współbieżne
18
Klasyfikacja Chomsky’ego
Noam Chomsky Gramatyki liniowe J.Nawrocki, Gramatyki i translatory
19
Klasyfikacja Chomsky’ego
Noam Chomsky Gramatyki bezkontekstowe Gramatyki liniowe J.Nawrocki, Gramatyki i translatory
20
Klasyfikacja Chomsky’ego
Noam Chomsky Gramatyki klasy 0 Gramatyki kontekstowe Gramatyki bezkontekstowe Gramatyki liniowe J.Nawrocki, Gramatyki i translatory
21
Klasyfikacja Chomsky’ego
Gramatyki liniowe J.Nawrocki, Gramatyki i translatory
22
J.Nawrocki, Gramatyki i translatory
Gramatyki liniowe a+ b+ S S b S A A a A A a Prawoliniowa S a S S B B b B B b Lewoliniowa Twierdzenie. Dla każdego wyrażenia regularnego istnieje gramatyka lewoliniowa (prawoliniowa) opisująca ten sam język. J.Nawrocki, Gramatyki i translatory
23
Klasyfikacja Chomsky’ego
Gramatyki bezkontekstowe Gramatyki liniowe J.Nawrocki, Gramatyki i translatory
24
Gramatyka bezkontekstowa
W S 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 Jeden nieterminal J.Nawrocki, Gramatyki i translatory
25
Klasyfikacja Chomsky’ego
Gramatyki kontekstowe Gramatyki bezkontekstowe Gramatyki liniowe J.Nawrocki, Gramatyki i translatory
26
Gramatyka kontekstowa
S a X Y S a S X Y a X a b b X b b c X c c b Y b c c Y c c J.Nawrocki, Gramatyki i translatory
27
J.Nawrocki, Gramatyki i translatory
(c) Jerzy Nawrocki Plan wykładu TPI, Wykład 8 Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych J.Nawrocki, Gramatyki i translatory Procesy współbieżne
28
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 C N N C N – liczba binarna (Numer binarny) C – Cyfra binarna N = C+ N = {C, CC, CCC, ...} J.Nawrocki, Gramatyki i translatory
29
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 N C C 0 C 1 N = C+ N = {C, CC, CCC, ...} gdzie C = {0, 1} J.Nawrocki, Gramatyki i translatory
30
J.Nawrocki, Gramatyki i translatory
Bufor wejściowy 1 ‘ ‘ #define Bool int #define True 1 #define False 0 void Init() Bool Widzisz(char c) void Nastepny() N C N N C C 0 C 1 J.Nawrocki, Gramatyki i translatory
31
J.Nawrocki, Gramatyki i translatory
Bufor wejściowy 1 ‘ ‘ Token #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(){ N C N N C C 0 C 1 J.Nawrocki, Gramatyki i translatory
32
J.Nawrocki, Gramatyki i translatory
Bufor wejściowy 1 Token void main(){ Init(); if (N()){ printf("OK\n"); }else{ printf("Error\n"); } return; N C N N C C 0 C 1 J.Nawrocki, Gramatyki i translatory
33
J.Nawrocki, Gramatyki i translatory
Bufor wejściowy 1 Token Bool C(){ if (Widzisz('0') || Widzisz('1')){ Nastepny(); return True; }else{ return False; } N C N N C C 0 C 1 J.Nawrocki, Gramatyki i translatory
34
J.Nawrocki, Gramatyki i translatory
Bufor wejściowy 1 Token #define N_ogr ' ' Bool N(){ Bool ok; ok= C(); if (ok && Widzisz(N_ogr)){ return ok; }else{ if (ok){ return N(); }else{ return False; } N C N N C C 0 C 1 J.Nawrocki, Gramatyki i translatory
35
J.Nawrocki, Gramatyki i translatory
Podsumowanie Wreszcie! Gramatyka formalna Wywód zdania Język formalny Gramatyki bezkontekstowe Idea zejść rekurencyjnych J.Nawrocki, Gramatyki i translatory
36
J.Nawrocki, Gramatyki i translatory
Literatura J. Cybulka, B. Jankowska, J. Nawrocki, Automatyczne przetwarzanie tekstów. AWK, Lex i YACC, Nakom, Poznań, 2002. J.Nawrocki, Gramatyki i translatory
37
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? J.Nawrocki, Gramatyki i translatory
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.