analiza sk adniowa
Download
Skip this Video
Download Presentation
ANALIZA SKŁADNIOWA

Loading in 2 Seconds...

play fullscreen
1 / 47

ANALIZA SKŁADNIOWA - PowerPoint PPT Presentation


  • 143 Views
  • Uploaded on

ANALIZA SKŁADNIOWA. ANALIZA SKŁADNIOWA. Analiza składniowa stanowi kolejny, po analizie leksykalnej etap kompilacji; Analiza składniowa jest przeprowadzana przez analizator składniowy; Do analizatora składniowego dostarczane są dane w postaci symboli leksykalnych;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' ANALIZA SKŁADNIOWA' - temple


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
analiza sk adniowa1
ANALIZA SKŁADNIOWA
  • Analiza składniowa stanowi kolejny, po analizie leksykalnej etap kompilacji;
  • Analiza składniowa jest przeprowadzana przez analizator składniowy;
  • Do analizatora składniowego dostarczane są dane w postaci symboli leksykalnych;
  • Analizator po zakończeniu pracy zwraca tzw. drzewo rozbioru lub jego uproszczoną wersję (abstrakcyjne drzewo składniowe)

2

analiza sk adniowa2
ANALIZA SKŁADNIOWA

Strumień danych wejściowych

Analizator

leksykalny

Symbole leksykalne

Analizator

składniowy

Drzewo wyprowadzenia

3

gramatyka bezkontekstowa
GRAMATYKA BEZKONTEKSTOWA
  • Inną metodą tworzenia języków formalnych jest generowanie ich za pomocą tzw. gramatyki bezkontekstowej;
  • Pierwowzorem gramatyk bezkontekstowych były reguły powstawania zdań w językach naturalnych, czyli po prostu gramatyki języków naturalnych;

4

gramatyka bezkontekstowa1
GRAMATYKA BEZKONTEKSTOWA
  • płot szybki przeskoczył pies
  • szybki pies przeskoczył płot
  • Podstawowe pytanie: W jaki formalny sposób zweryfikować poprawność zdania?

5

gramatyka bezkontekstowa2
GRAMATYKA BEZKONTEKSTOWA

zdanie

podmiot

orzeczenie

przymiotnik

rzeczownik

czasownik

dopełnienie

rzeczownik

Szybki

pies

przeskoczył

płot

6

gramatyka bezkontekstowa3
GRAMATYKA BEZKONTEKSTOWA

gramatyka – reguły produkcji:

  • Zdanie -> podmiot orzeczenie
  • Podmiot -> przymiotnik rzeczownik
  • Orzeczenie -> czasownik dopełnienie
  • Dopełnienie -> rzeczownik
  • Rzeczownik -> płot
  • Przymiotnik -> szybki
  • Czasownik -> przeskoczył
  • Rzeczowniki -> pies

7

gramatyka bezkontekstowa4
GRAMATYKA BEZKONTEKSTOWA

Za pomocą tych reguł możemy stworzyć zdanie: szybki pies przeskoczył płot:

zdanie

=>podmiot orzeczenie

=>przymiotnik rzeczownik orzeczenie

=>przymiotnik rzeczownik czasownik dopełnienie

=>szybki rzeczownik czasownik dopełnienie

=> szybki pies czasownik dopełnienie

=>szybki pies przeskoczył dopełnienie

=>szybki pies przeskoczył płot

8

gramatyka bezkontekstowa5
GRAMATYKA BEZKONTEKSTOWA

Za pomocą reguł tej gramatyki można jeszcze utworzyć trzy inne zdania:

Szybki płot przeskoczył pies

Szybki płot przeskoczył płot

Szybki pies przeskoczył pies

9

gramatyka bezkontekstowa6
GRAMATYKA BEZKONTEKSTOWA

Szybki płot przeskoczył pies:

zdanie

=>podmiot orzeczenie

=>przymiotnik rzeczownik orzeczenie

=>przymiotnik rzeczownik czasownik dopełnienie

=>szybki rzeczownik czasownik dopełnienie

=> szybki płot czasownik dopełnienie

=>szybki płot przeskoczył dopełnienie

=>szybki płot przeskoczył pies

10

gramatyka bezkontekstowa7
GRAMATYKA BEZKONTEKSTOWA

Szybki płot przeskoczył płot:

zdanie

=>podmiot orzeczenie

=>przymiotnik rzeczownik orzeczenie

=>przymiotnik rzeczownik czasownik dopełnienie

=>szybki rzeczownik czasownik dopełnienie

=> szybki płot czasownik dopełnienie

=>szybki płot przeskoczył dopełnienie

=>szybki płot przeskoczył płot

11

gramatyka bezkontekstowa8
GRAMATYKA BEZKONTEKSTOWA

Szybki pies przeskoczył pies:

zdanie

=>podmiot orzeczenie

=>przymiotnik rzeczownik orzeczenie

=>przymiotnik rzeczownik czasownik dopełnienie

=>szybki rzeczownik czasownik dopełnienie

=> szybki pies czasownik dopełnienie

=>szybki pies przeskoczył dopełnienie

=>szybki pies przeskoczył pies

12

gramatyka bezkontekstowa9
GRAMATYKA BEZKONTEKSTOWA
  • Zauważmy iż zdania

płot szybki przeskoczył pies

nie można wyprowadzić za pomocą reguł powyższej gramatyki, gdyż nie znajdziemy takiego wyprowadzenia, po którym rzeczownik byłby na początku zdania. Nie ma produkcji:

Podmiot -> rzeczownik przymiotnik

13

gramatyka bezkontekstowa10
GRAMATYKA BEZKONTEKSTOWA
  • Gramatyka bezkontekstowa, jest przydatnym sposobem do opisania języków programowania;
  • Skonstruujmy teraz gramatykę bezkontekstową, którą będzie można opisać niektóre konstrukcje występujące w językach programowania;
  • Opisujemy konstrukcje: if, begin, while,
  • Zakładamy, że I1,I2 są instrukcjami, E,D –wyrażeniami;

14

gramatyka bezkontekstowa11
GRAMATYKA BEZKONTEKSTOWA

gramatyka – reguły produkcji:

  • Zdanie -> if zdanie
  • Zdanie -> begin zdanie
  • Zdanie -> while zdanie
  • Zdanie -> then zdanie
  • Zdanie -> else zdanie
  • Zdanie -> do
  • Zdanie -> instrukcja zdanie

15

gramatyka bezkontekstowa12
GRAMATYKA BEZKONTEKSTOWA

gramatyka – reguły produkcji cd:

  • Zdanie -> wyrażenie zdanie
  • Zdanie -> instrukcja
  • Instrukcja -> I1
  • Instrukcja -> I2
  • Wyrażenie -> E
  • Wyrażenie -> D

16

gramatyka bezkontekstowa13
GRAMATYKA BEZKONTEKSTOWA

Za pomocą tych reguł możemy z łatwością stworzyć instrukcję: if E then I1 else I2

zdanie

=>if zdanie

=>if wyrażenie zdanie

=>if wyrażenie then zdanie

=> if wyrażenie then instrukcja zdanie

=> if wyrażenie then instrukcja else zdanie

=>if wyrażenie then instukcja else instrukcja

=>ifEthen instrukcja else instrukcja

=>ifEthenI1else instrukcja

=>ifEthenI1elseI2

17

gramatyka bezkontekstowa14
GRAMATYKA BEZKONTEKSTOWA

while D do I2

zdanie

=>while zdanie

=>while wyrażenie zdanie

=>while wyrażenie do zdanie

=> while wyrażenie do instrukcja

=>whileDdo instrukcja

=>whileDdoI2

18

gramatyka bezkontekstowa15
GRAMATYKA BEZKONTEKSTOWA
  • Gramatyką bezkontekstową (GBK) - nazywamy układ G=(V,Σ,P,S) składający się z następujących elementów:
  • V – zbiór skończony, którego elementy nazywamy zmiennymi lub symbolami nieskończonymi;
  • Σ={a1,…,an} – zbiór skończony zwany alfabetemgramatyki, którego elementy nazywamy symbolami końcowymi;

19

gramatyka bezkontekstowa16
GRAMATYKA BEZKONTEKSTOWA
  • P  V x (V Σ)* – skończony zbiór elementów zwanych produkcjami;
  • S є V– wyróżniona zmienna zwana zmienną początkową lub symbolem startowym.

20

gramatyka bezkontekstowa17
GRAMATYKA BEZKONTEKSTOWA
  • Zbiór produkcji P – są to pary (X,α), gdzie X є V jest pewna zmienną, a αє (VU Σ)* jest słowem utworzonym ze zmiennych i symboli końcowych (np.: α=aXYb);
  • produkcja (X,α), wskazuje, że w trakcie konstruowania słów z Σ na każdym etapie możemy za zmienną X podstawić α;
  • Produkcje oznaczmy: X -> α;
  • Przykład: Zdanie -> wyrażenie zdanie

21

gramatyka bezkontekstowa18
GRAMATYKA BEZKONTEKSTOWA
  • Niech G=(V,Σ,P,S) będzie dowolną gramatyką bezkontekstową. Jeśli α1 є (VU Σ)* jest słowem utworzonym ze zmiennych i symboli końcowych i w słowie występuje pewna zmienna X, i do P należy produkcja X->β, to jeśli w miejsce X podstawimy β i tak otrzymane słowo oznaczymy przez α2, tzn. α2= γ1 βγ2, to zapisujemy to w następujący sposób:

α1 => α2

22

gramatyka bezkontekstowa19
GRAMATYKA BEZKONTEKSTOWA
  • Mówimy, że słowo αkє (VU Σ)* jest wyprowadzalne z α1є (VU Σ)*, gdy istnieje skończony ciąg słów α2,α3,..., αk-1є (VU Σ)* taki, że:

α1=>α2=>α3=>...=>αk-1=>αk;

  • Piszemy wtedy: α1=>*αk;
  • Przyjmujemy dodatkowo, że zawsze α=>*α;

23

przyk ad
Przykład
  • Niech ={a,b} i w gramatyce G mamy produkcje: P={S=>aX, X->bYa, X->bYbZ, X->bY, Y->bZa, Y->bZb, Y->bZ, Z->aW, W->b, W->a}. Czy zdanie =abbabbab daje się wyprowadzić ze zdania =abYbz?

1=abbZbZ; 2=abbaWbaW;

 =>1=>2=> 

gramatyka bezkontekstowa20
GRAMATYKA BEZKONTEKSTOWA
  • Jeśli słowo α є (VU Σ)* składa się wyłącznie z symboli końcowych i jest wyprowadzalne z S, to α nazywamy słowem generowanym przez gramatykę G;
  • Językiem generowanym przez gramatykę G nazywamy zbiór słów L(G) generowanych przez G, tzn:

L(G):={ єΣ* : S=>*  };

25

gramatyka bezkontekstowa21
GRAMATYKA BEZKONTEKSTOWA

Język L nazywamy językiem bezkontekstowym, gdy L=L(G) dla pewnej gramatyki bezkontekstowej G;

  • Zbiór wszystkich języków bezkontekstowych oznaczamy przezJBK;

26

gramatyka bezkontekstowa22
GRAMATYKA BEZKONTEKSTOWA
  • Załóżmy, że mamy daną gramatykę bezkontekstową G oraz dowolną produkcje tej gramatyki. Wówczas każdy symbol użyty po lewej stronie produkcji nazywany jest nieterminalnym (nieterminalem);
  • Pozostałe symbole są symbolami terminalnymi (terminalami);

27

gramatyka bezkontekstowa23
GRAMATYKA BEZKONTEKSTOWA

W omówionym przykładzie zaznaczamy:

  • Zdanie -> ifzdanie
  • Zdanie -> beginzdanie
  • Zdanie -> whilezdanie
  • Zdanie -> thenzdanie
  • Zdanie -> elsezdanie
  • Zdanie -> dozdanie
  • Zdanie -> instrukcjazdanie

28

gramatyka bezkontekstowa24
GRAMATYKA BEZKONTEKSTOWA

gramatyka – reguły produkcji cd:

  • Zdanie -> wyrażenie zdanie
  • Zdanie -> instrukcja
  • Instrukcja -> I1
  • Instrukcja -> I2
  • Wyrażenie -> E
  • Wyrażenie -> D

nieterminaleterminale

29

gramatyka bezkontekstowa25
GRAMATYKA BEZKONTEKSTOWA
  • Niech G będzie gramatyką bezkontekstową. Niech 1=>2=>3=>...=>k, 1,2,...,kє (VU Σ)* będzie wyprowadzeniem w G. Wyprowadzenie to nazywamy lewym wyprowadzeniem, gdy każde pojedyncze wyprowadzenie i-1=>i w tym łańcuchu wyprowadzeń polega na zastosowaniu produkcji z G do pierwszej zmiennej w i-1 liczonych od lewej strony;

30

gramatyka bezkontekstowa26
GRAMATYKA BEZKONTEKSTOWA
  • Niech G będzie gramatyką bezkontekstową. Niech 1=>2=>3=>...=>k, 1,2,...,kє (VU Σ)* będzie wyprowadzeniem w G. Wyprowadzenie to nazywamy prawym wyprowadzeniem, gdy każde pojedyncze wyprowadzenie i-1=>i w tym łańcuchu wyprowadzeń polega na zastosowaniu produkcji z G do pierwszej zmiennej w i-1 liczonych od prawej strony;

31

przyk ad1
Przykład
  • Jeśli =abcXcaYdaXa i w G mamy produkcję X->aYb, to:
  • abcXcaYdaXa => abcaYbcaYdaXa – jest lewym wyprowadzeniem;
  • abcXcaYdaXa => abcXcaYdaaYb – jest prawym wyprowadzeniem;

32

gramatyka bezkontekstowa27
GRAMATYKA BEZKONTEKSTOWA

Dla danej gramatyki G oraz S=>*, to wówczas:

  • Jeśli  zawiera tylko terminale, to  nazywamy zdaniem;
  • Jeśli  zawiera terminale oraz nieterminale, lub same nieterminale, to  nazywamy formą zdaniową;

Wniosek

Zdanie jest formą zdaniową, która nie zawiera nieterminali;

33

gramatyka bezkontekstowa28
GRAMATYKA BEZKONTEKSTOWA
  • Niech G będzie gramatyką bezkontekstową. Wówczas:
  • G jest gramatyką rekursywną (rekurencyjną), gdy:

X=>X;

  • G jest gramatyką lewostronnie rekursywną, gdy:

X=>X;

  • G jest gramatyką prawostronnie rekursywną, gdy:

X=>X;

34

drzewo wyprowadzenia
DRZEWO WYPROWADZENIA
  • Niech G=(V,,P,S) będzie dowolna gramatyką, słowa A* będzie dowolnym słowem. Wówczas A możemy przyporządkować graf zwany drzewem wyprowadzenia A w G.
  • Wierzchołkami drzewa wyprowadzenia są pewne elementy zbioru V{}.
  • Zasady konstrukcji drzewa są następujące:

35

drzewo wyprowadzenia1
DRZEWO WYPROWADZENIA
  • Zmienna początkowa S jest korzeniem drzewa;
  • Jeśli XV{} jest wierzcholkiem, to:
  • Jeśli XV i w G mamy produkcję X->X1...Xk gdzie X1...XkV{} to nowymi wierzchołkami są X1...Xk .Od X prowadzimy krawędzie skierowane do tych wierzchołków:

X

...

X1

X2

Xk

36

drzewo wyprowadzenia2
DRZEWO WYPROWADZENIA
  • Jeśli X{} (jest symbolem końcowym lub pustym) to X nie jest początkiem żadnej krawędzi skierowanej wtedy X jest końcowym wierzchołkiem drzewa;
  • Gdy wszystkie wierzchołki końcowe są oznaczone symbolami końcowymi, to słowo z nich utworzone, czytane od lewej do prawej, będzie słowem generowanym przez tę gramatykę;

37

drzewo wyprowadzenia3
DRZEWO WYPROWADZENIA

W języku terminali zasady te możemy sformułować następująco:

  • Każdy węzeł wewnętrzny drzewa odpowiada nieterminalowi;
  • Dzieci węzła drzewa są prawymi stronami produkcji;
  • Liście w drzewie wyprowadzenia odpowiadają terminalom;

38

przyk ad2
Przykład
  • Narysujmy drzewo wyprowadzenia słów bba, aaaba w gramatyce o produkcjach P={S->aS | bS | a};
  • Zauważmy, że słowo bba ma wyprowadzenie:

=>bS

=>bbS

=>bba

S

39

przyk ad3
Przykład

Drzewo wyprowadzenia dla słowa bba:

S

S

b

S

b

a

40

przyk ad4
Przykład

S

=>aS

=>aaS

=>aaaS

=>aaabS

=>aaaba

S

a

S

S

a

S

a

S

b

a

41

przyk ad5
Przykład
  • Niech produkcje pewnej gramatyki G, będą postaci:

P={ S -> S + S

S -> S * S

S -> ( S )

S -> a }

Wyprowadźmy wyrażenie

a * a + a

42

przyk ad6
Przykład

S

=>S*S

=>S*S+S

S

=>S+S

=>S*S+S

=>a*S+S

=>a*a+S

=>a*S+S

=>a*a+S

=>a*a+a

=>a*a+a

S

S

*

S

S

S

+

S

a

+

S

S

S

a

S

*

a

a

a

a

43

gramatyka bezkontekstowa29
GRAMATYKA BEZKONTEKSTOWA

Definicja

Gramatyka, w której słowo ma więcej niż jedno drzewo wyprowadzenia nazywamy gramatyką niejednoznaczną.

Definicja

Dwie gramatyki generujące ten sam język nazywamy gramatykami równoważnymi.

44

przyk ad7
Przykład
  • Zauważmy, iż dla gramatyki G, rozważanej w poprzednim przykładnie ze zbiorem produkcji

P={S -> S + S; S -> S * S; S -> ( S ); S -> a}

Możemy stworzyć gramatykę równoważną, która nie będzie już niejednoznaczna:

P={ S -> S + T; S -> T; T -> T * U; T -> U;

U -> ( S ); U -> a }

45

przyk ad8
Przykład

S

=>S*T

=>T*T

=>U*T

=>a*T

=>a*T+U

=>a*U+U

=>a*a+U

=>a*a+a

S

S

T

*

T

T

+

U

U

U

a

a

a

46

koniec
KONIEC

KONIEC WYKŁADU CZWARTEGO

ad