Analiza sk adniowa
Download
1 / 47

ANALIZA SK?ADNIOWA - PowerPoint PPT Presentation


  • 144 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