Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWacław Małota Został zmieniony 10 lat temu
1
ANALIZA LEKSYKALNA
2
Zadaniem analizatora leksykalnego jest przetwarzanie danych pochodzących ze strumienia wejściowego a także rozpoznawanie ciągów znaków zbudowanych zgodnie z pewnymi zasadami; Analiza leksykalna jest pierwszą fazą kompilacji; 2
3
JĘZYKI REGULARNE Alfabetem – nazywamy dowolny skończony zbiór. Oznaczamy go zwykle symbolem Σ; Elementy alfabetu Σ nazywamy symbolami; Przykład alfabetu Σ={a,b,c,d,e,1}, ale alfabetem nie jest Σ={1,2,3,…} 3
4
JĘZYKI REGULARNE Słowem utworzonym z alfabetu Σ nazywamy dowolny skończony, uporządkowany układ elementów z Σ; Inaczej słowo to dowolny element iloczynu kartezjańskiego Σ n =Σ x Σ x … x Σ (n-razy); Układ 0 symboli z alfabetu Σ nazywamy słowem pustym i oznaczamy Λ; Długość słowa to liczba symboli w słowie. 4
5
JĘZYKI REGULARNE Jeśli Σ jest alfabetem, to domknięciem Σ nazywamy zbiór wszystkich słów utworzonych z alfabetu Σ i oznaczamy Σ*; Językiem formalnym (językiem) nazywamy dowolny zbiór słów z dowolnego alfabetu Σ. Inaczej mówiąc językiem formalnym nazywamy dowolny zbiór L taki, że L Σ*; 5
6
JĘZYKI REGULARNE Niech Σ będzie alfabetem. Jeśli A,B Σ* są słowami, to złożeniem A z B ( konkatencją A z B ) nazywamy słowo, AB, tzn. zestawienie tych słów. ( konkatencją A z B ) nazywamy słowo, AB, tzn. zestawienie tych słów. Jeśli A=a 1 a 2 …a n, B=b 1 b 2 …b m, to AB:=a 1 a 2 …a n b 1 b 2 …b m, 6
7
JĘZYKI REGULARNE Przedrostkiem słowa A nazywamy każde słowo B Σ* takie, że A=BC dla pewnego słowa C Σ*; Przyrostkiem słowa A nazywamy każde słowo B Σ* takie, że A=CB dla pewnego słowa C Σ*; Podsłowem słowa A nazywamy każde słowo B Σ* takie, że A=CBD dla pewnych słów C,D Σ*; 7
8
JĘZYKI REGULARNE Niech Σ będzie alfabetem i L 1, L 2 Σ* dowolnymi językami z Σ; Suma L 1 + L 2 jest zbiorem wszystkich słów należących do L 1 lub do L 2. Inaczej jest to suma mnogościowa tych języków; Złożenie L 1 ۰ L 2 jest zbiorem wszystkich możliwych złożeń słów z L 1 ze słowami z L 2 ; 8
9
JĘZYKI REGULARNE Domknięcie L 1 * języka L 1 jako zbiór wszystkich słów z Σ, będących skończonymi złożeniami słów z L 1 plus słowo puste Λ, czyli: L 1 *={Aє Σ*: A= Λ lub A=A 1 A 2 …A n, gdzie A i єL 1, dla i=1,2,…,n i n1}; A i єL 1, dla i=1,2,…,n i n1}; Dopełnienie L:= Σ*\L, tzn. zbiór słów z Σ, które nie należą do L; 9
10
JĘZYKI REGULARNE Wyrażenie regularne jest to każde sensowne wyrażenie utworzone z pogrubionych symboli danego alfabetu Σ, operatorów ۰,+,*, nawiasów i dodatkowych symboli Λ, Ø; Językiem wyrażeń regularnych nad alfabetem Σ (WR) nazywamy najmniejszy język L utworzony z symboli nowego alfabetu Σ spełniający dwa następujące warunki: a 1,…,a n, Λ, Ø L; a 1,…,a n, Λ, Ø L; A,B є L (A+B), (A۰ B), A*, B* L A,B є L (A+B), (A۰ B), A*, B* L 10
11
JĘZYKI REGULARNE Wyrażenie regularne można także zdefiniować jako dowolne słowo języka WR; Niech Σ={a 1,a 2,…,a n } będzie dowolnym alfabetem i WR językiem wyrażeń regularnych nad alfabetem Σ. Każdemu wyrażeniu regularnemu A WR przypiszemy język L(A) nad alfabetem Σ za pomocą definicji indukcyjnej w zależności od ilości symboli +, ۰,* w wyrażeniu regularnym A. 11
12
Przykład Niech ={a,b} będzie dowolnym alfabetem. Wówczas: L(a)={a}; L(a)={a}; L(a+b)={a,b}; L(a+b)={a,b}; L(a*)={a}*; L(a*)={a}*; L((a+b)*)={a,b}* L((a+b)*)={a,b}* 12
13
JĘZYKI REGULARNE Język formalny nad alfabetem Σ nazywamy językiem regularnym, gdy jest generowany przez pewne wyrażenie regularne, tzn. istnieje wyrażenie regularne A nad Σ takie, że L=L(A); Zbiór wszystkich języków regularnych oznaczamy JR; 13
14
Przykład Niech Σ={a,b} będzie alfabetem. Mamy dane wyrażenie regularne ((ab)*b + ab*)*; Przez powyższe wyrażenie regularne generowany jest język L(((ab)*b + ab*)*)={a,b}*; 14
15
Przykład Istotnie, L((ab)*b+ab*) L((a+b)*)={a,b}* Wystarczy pokazać, iż L((a+b)*) L((ab)*b+ab*) ( b + a )* L((ab)*b+ab*) ( b + a )* L((ab)*b+ab*) Zatem L((ab)*b+ab*) = L((a+b)*) = {a,b}*; 15
16
AUTOMATY SKOŃCZONE Deterministycznym automatem skończonym (automatem) nazywamy układ M=(Q,Σ,s 0,F,δ) składający się z następujących elementów: 1.Q={s 0,…,s m } – zbiór skończony, którego elementy nazywamy stanami M; 2. Σ={a 1,…,a n } – zbiór skończony zwany alfabetem M; 16
17
AUTOMATY SKOŃCZONE 1. s 0 – wyróżniony stan zwany stanem początkowym; 2.F Q – wyróżniony podzbiór stanów zwanych stanami końcowymi; 3.δ : Q x Σ Q – funkcja, zwana funkcją przejść M, która danemu stanowi z Q i symbolowi z alfabetu Σ (czyli każdej parze (s,a)) przypisuje nowy stan automatu M; Zbiór wszystkich deterministycznych automatów skończonych oznaczamy przez DAS. 17
18
AUTOMATY SKOŃCZONE Zasada działania automatu skończonego: dane jest pewne słowo z pewnego alfabetu i to słowo jest wczytywane przez automat symbol po symbolu; po wczytaniu kolejnego symbolu tego słowa automat zmienia swój stan (lub pozostaje w tym samym stanie) w zależności od poprzedniego stanu i wczytanego symbolu (zaczyna wczytywanie w stanie początkowym); 18
19
AUTOMATY SKOŃCZONE automat może przyjmować tylko skończoną ilość stanów; automat akceptuje dane słowo, gdy po wczytaniu całego słowa automat będzie w jednym ze stanów końcowych (akceptujących); 19
20
AUTOMATY SKOŃCZONE Intuicyjne podejście do automatu: dana jest pewna taśma podzielona na komórki (klatki), potencjalnie nieskończona z prawej strony, w komórkach której będą wpisywane symbole słowa z alfabetu automatu. Ponadto dana jest głowica czytająca kolejne symbole słowa wejściowego, zapisanego na taśmie, i zmieniająca swój stan zgodnie z funkcją ruchów (przejść) automatu M. 20
21
AUTOMATY SKOŃCZONE... Głowica po wczytaniu kolejnego symbolu słowa zmienia swój stan i przesuwa się w prawo o jedną komórkę. Jeśli po wczytaniu wszystkich symboli danego słowa, zapisanego na taśmie, głowica znajdzie się w jednym ze stanów końcowych, to oznacza, że słowo jest akceptowane przez automat M. abba c s 21
22
AUTOMATY SKOŃCZONE Język L utworzony z pewnego alfabetu Σ nazywamy DAS - regularnym, gdy istnieje deterministyczny automat skończony M=(Q,Σ,s 0,F,δ) taki, że L= {A є Σ* : słowo A jest akceptowane przez automat M} ; automat M} ; Piszemy wówczas L=L(M) i mówimy, że język L jest akceptowany przez automat M. Zbiór wszystkich języków DAS - regularnych oznaczamy przez JDAS. 22
23
AUTOMATY SKOŃCZONE Każdy automat M=(Q,Σ,s 0,F,δ) możemy przedstawić w postaci grafu G(M). Główne zasady tworzenia takiego grafu to: wierzchołkami grafu G(M) są wszystkie stany s i є Q automatu M; wierzchołkami grafu G(M) są wszystkie stany s i є Q automatu M; Jeśli δ(s i,a)=s j, to wierzchołki s i, s j łączymy krawędzią skierowaną (od s i do s j ) i oznaczamy ją symbolem a; sisi sjsj a 23
24
AUTOMATY SKOŃCZONE Stan początkowy zaznaczamy dodatkowa strzałką; Stany końcowe oznaczamy podwójną linią; s0s0 sksk 24
25
Przykład Niech M=(Q,Σ,s 0,F,δ) = ({s 0,s 1,s 2 },{a,b}, s 0,{s 2 }, δ) i funkcja przejść zadana jest za pomocą tabeli: δab s0s0 s1s1 s2s2 s1s1 s0s0 s2s2 s2s2 s2s2 s2s2 25
26
Przykład Przedstawmy graf automatu: δab s0s0 s1s1 s2s2 s1s1 s0s0 s2s2 s2s2 s2s2 s2s2 a s0s0 s2s2 s1s1 a b b a,b 26
27
AUTOMATY SKOŃCZONE Niedeterministycznym automatem skończonym (automatem) nazywamy układ M=(Q,Σ,s 0,F,δ) składający się z następujących elementów: 1.Q={s 0,…,s m } – zbiór skończony, którego elementy nazywamy stanami M; 2. Σ={a 1,…,a n } – zbiór skończony zwany alfabetem M; 27
28
AUTOMATY SKOŃCZONE 1.s 0 – wyróżniony stan zwany stanem początkowym; 2.F Q – wyróżniony podzbiór stanów zwanych stanami końcowymi; 3.δ : Q x Σ β(Q) – funkcja, zwana funkcją przejść M, która danemu stanowi z Q i symbolowi z alfabetu Σ (czyli każdej parze (s,a)) przypisuje zbiór stanów automatu M ( może to być pusty); Zbiór wszystkich niedeterministycznych automatów skończonych oznaczamy przez NAS. 28
29
AUTOMATY SKOŃCZONE Niedeterminizm polega na tym, iż przy danym stanie automatu i wczytaniu kolejnego symbolu słowa automat może przejść w jeden z kilku możliwych stanów. a a a 29
30
AUTOMATY SKOŃCZONE Może się zdarzyć, iż z danego stanu nie wychodzi żadna krawędź o danym symbolu na przykład, gdy Σ={a,b}, może się zdarzyć, że: s p a 30
31
AUTOMATY SKOŃCZONE Mówimy, że słowo A Σ* jest akceptowane przez niedeterministyczny automat skończony M=(Q,Σ,s 0,F,δ), gdy po wczytaniu słowa, automat znajdzie się w jednym ze swych stanów końcowych (symbolicznie δ(s 0,A) F Ø); W języku grafu oznacz to, że istnieje droga w tym grafie o krawędziach oznaczonych kolejnymi symbolami słowa A, prowadząca od stanu początkowego do jednego ze stanów końcowych. 31
32
AUTOMATY SKOŃCZONE Język L utworzony z pewnego alfabetu Σ nazywamy NAS - regularnym, gdy istnieje niedeterministyczny automat skończony M=(Q,Σ,s 0,F,δ) taki, że L= {A є Σ* : słowo A jest akceptowane przez automat M} ={A є Σ* : δ(s 0,A) F Ø }; automat M} ={A є Σ* : δ(s 0,A) F Ø }; Piszemy wówczas L=L(M) i mówimy, że język L jest akceptowany (lub generowany) przez automat M. Zbiór wszystkich języków NAS - regularnych oznaczamy przez JNAS. 32
33
Przykład Niech M=(Q,Σ,s 0,F,δ) = ({s 0,s 1,s 2, s 3 },{a,b}, s 0,{s 3 }, δ) i funkcja przejść zadana jest za pomocą tabeli: δab s0s0 {s 0,s 1 }{s 0 } s1s1 {s 2 } s2s2 {s 3 } s3s3 ØØ 33
34
Przykład Przedstawmy graf tego niedeterministycznego automatu skończonego; s1s1 s2s2 s3s3 a a,b s0s0 34
35
Przykład Język generowany przez automat w powyższym przykładzie, jak łatwo sprawdzić wygląda następująco: L = {A є Σ* : w słowie A trzeci symbol od końca jest równy a} L = {A є Σ* : w słowie A trzeci symbol od końca jest równy a} = L((a+b)*a(a+b) 2 ); = L((a+b)*a(a+b) 2 ); 35
36
AUTOMATY SKOŃCZONE TWIERDZENIE 1. Każdy deterministyczny automat skończony jest niedeterministycznym automatem skończonym, tzn. DAS NAS. TWIERDZENIE 2. Rodzina języków DAS - regularnych jest równa rodzinie języków NAS – regularnych. 36
37
AUTOMATY SKOŃCZONE Uwaga 1. Z Twierdzenia 2 wynika, że dla każdego NAS istnieje równoważny mu DAS. Istotnie, gdy rozważymy wcześniejszy przykład NAS, łatwo podać równoważny mu automat DAS. W nowo konstruowanym deterministycznym automacie skończonym stanami będą zbiory stanów wyjściowego niedeterministycznego automatu skończonego. 37
38
AUTOMATY SKOŃCZONE graf niedeterministycznego automatu: graf deterministycznego automatu: s1s1 s2s2 s3s3 a a,b s0s0 s 0,s 1 s2s2 s3s3 a b s0s0 a,b 38
39
IMPLEMENTACJA DAS Niech M=(Q,Σ,s 0,F,δ) = ({s 0,s 1,s 2 },{a,b}, s 0,{s 2 }, δ) i funkcja przejść zadana jest za pomocą tabeli:...:... δab s0s0 s1s1 s2s2 s1s1 s0s0 s2s2 s2s2 s2s2 s2s2 39
40
BUFOROWANIE Bufor to obszar pamięci służący do przechowywania danych do komunikacji pomiędzy dwoma systemami. Bufory umożliwiają asynchroniczną komunikację między systemami. Przykład: W języku PHP są funkcje, które działają jedynie przed wysłaniem czegokolwiek do odbiorcy. Jeśli potrzebne jest wywołanie funkcji po wysłaniu informacji z pomocą przychodzi bufor. Podczas kompilacji zbiera wszystkie informacje wysyłane i zapamiętuje je, a następnie pod sam koniec skryptu wyświetla zebrane informacje. 40
41
BUFOROWANIE Buforowanie to technologia polegająca na stosowaniu buforów programowych lub sprzętowych, stosowana najczęściej w celu wyrównania różnic prędkości przesyłania danych między różnymi urządzeniami. 41
42
BUFOROWANIE Jedną z technik buforowania wyjaśnimy na przykładzie. Rozważmy funkcję sign, o której już wcześniej wspominaliśmy. Przypomnijmy: 42
43
BUFOROWANIE Przypomnijmy również implementację w C++: float sign (int a) float sign (int a) { if a<0 return -1; if a<0 return -1; else if (a==0) return 0; else if (a==0) return 0; else return 1; else return 1; } 43
44
BUFOROWANIE loa t p fs i g s 44
45
BUFOROWANIE loa t p fs i g s 45
46
BUFOROWANIE loa t p fs i g s 46
47
BUFOROWANIE loa t p fs i g s 47
48
BUFOROWANIE loa t p fs i g s 48
49
BUFOROWANIE loa t p fs i g s 49
50
BUFOROWANIE Iplementacja:... :... loa t p fs i g s n (){} eof 50
51
KONIEC KONIEC WYKŁADU DRUGIEGO 51
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.