ANALIZA LEKSYKALNA. Zadaniem analizatora leksykalnego jest przetwarzanie danych pochodzących ze strumienia wejściowego a także rozpoznawanie ciągów znaków.

Slides:



Advertisements
Podobne prezentacje
Opracowała: Iwona Bieniek
Advertisements

Lingwistyka Matematyczna
Joanna Sawicka Wydział Nauk Ekonomicznych, Uniwersytet Warszawski
Wykład Zależność pomiędzy energią potencjalną a potencjałem
Reinhard Kulessa1 Wykład Środek masy Zderzenia w układzie środka masy Sprężyste zderzenie centralne cząstek poruszających się c.d.
Opracowała: Maria Pastusiak
Obserwowalność System ciągły System dyskretny
DOMINOWANIE W GRAFACH Magdalena Lemańska.
Grafy spełniające nierówność Γ(G) < IR(G)
Grażyna Mirkowska PJWSTK 15 listopad 2000
WYKŁAD 6 ATOM WODORU W MECHANICE KWANTOWEJ (równanie Schrődingera dla atomu wodoru, separacja zmiennych, stan podstawowy 1s, stany wzbudzone 2s i 2p,
Liczby pierwsze.
1 mgr inż. Sylwester Laskowski Opiekun Naukowy: prof. dr hab. inż. Andrzej P. Wierzbicki.
ALGORYTMY I STRUKTURY DANYCH
Analiza Składniowa Wstępująca
Metoda pierwszeństwa operatorów
Liczby Pierwsze - algorytmy
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 2. Kolorowanie wierzchołków
WYKŁAD 1. Grafy są wokół nas. Pojęcia wstępne.
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
WYKŁAD 8. Siła spójności A,B – dowolne podzbiory V(G)
Tablice.
Elementy kombinatoryki
Zapis informacji Dr Anna Kwiatkowska.
UKŁADY SZEREGOWO-RÓWNOLEGŁE
Transformacja Z (13.6).
Matematyka.
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Podstawy programowania
O relacjach i algorytmach
Podstawy układów logicznych
Wyrażenia algebraiczne
Gramatyki Lindenmayera
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
I. Informacje podstawowe
Wskazówki konkursowe.
MECHANIKA 2 Wykład Nr 11 Praca, moc, energia.
Języki i automaty część 5.
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Języki i automaty część 3.
Wskazówki konkursowe.
Dekompozycja Kalmana systemów niesterowalnych i nieobserwowalnych
XML – eXtensible Markup Language
Podstawy analizy matematycznej I
Buforowanie D e f i n i c j a.
Obserwowalność i odtwarzalność
ZBIORY I DZIAŁANIA NA ZBIORACH
Gramatyki i translatory
Stabilność Stabilność to jedno z najważniejszych pojęć dynamiki systemów i teorii sterowania W większości przypadków, stabilność jest warunkiem koniecznym.
Podstawy języka Instrukcje - wprowadzenie
Obliczalność czyli co da się policzyć i jak Model obliczeń sieci liczące dr Kamila Barylska.
Algorytmy i Struktury Danych
Gramatyki Lindenmayera
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Zbiory Co to jest zbiór? Nie martw się, jeśli nie potrafisz odpowiedzieć. Nie ma odpowiedzi na to pytanie.
Zagadnienia AI wykład 2.
Przerzutniki bistabilne
RAR jako format kompresji bezstratnej.. RAR został stworzony przez Rosjanina Eugene Roshala. Do kompresji danych używa odmiany kompresji LZSS. Jest wolniejszym.
Kalendarz 2020.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
ANALIZA SKŁADNIOWA.
GRA CHOMP. Czym jest chomp? Jest to gra dla dwóch osób, rozgrywana na prostokątnej tablicy, zwanej „tabliczką czekolady”
NP-zupełność Problemy: rozwiązywalne w czasie wielomianowym - O(nk)
Autor: Michał Salewski
Wstęp do programowania Wykład 9
Pojęcia podstawowe c.d. Rachunek podziałów Elementy teorii grafów
Media Cyfrowe  Media cyfrowe to dowolna forma (lub format) prezentacji i użytkowania treści (np. tekstowych, graficznych, audiowizualnych), które są.
Zbiory – podstawowe wiadomości
Zapis prezentacji:

ANALIZA LEKSYKALNA

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AUTOMATY SKOŃCZONE Stan początkowy zaznaczamy dodatkowa strzałką; Stany końcowe oznaczamy podwójną linią; s0s0 sksk 24

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

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

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

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

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

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

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

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

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

Przykład Przedstawmy graf tego niedeterministycznego automatu skończonego; s1s1 s2s2 s3s3 a a,b s0s0 34

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

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

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

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

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

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

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

BUFOROWANIE Jedną z technik buforowania wyjaśnimy na przykładzie. Rozważmy funkcję sign, o której już wcześniej wspominaliśmy. Przypomnijmy: 42

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

BUFOROWANIE loa t p fs i g s 44

BUFOROWANIE loa t p fs i g s 45

BUFOROWANIE loa t p fs i g s 46

BUFOROWANIE loa t p fs i g s 47

BUFOROWANIE loa t p fs i g s 48

BUFOROWANIE loa t p fs i g s 49

BUFOROWANIE Iplementacja:... :... loa t p fs i g s n (){} eof 50

KONIEC KONIEC WYKŁADU DRUGIEGO 51