Gramatyki regularne i automaty skończone

Transkrypt

Gramatyki regularne i automaty skończone
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Gramatyki regularne i
automaty sko czone
Alfabet, j zyk, gramatyka - podstawowe poj cia
Co to jest gramatyka regularna, co to jest automat sko czony?
Gramatyka
regularna
Gramatyka
bezkontekstowa
Analizator
PobieranieZnaków
Analizator
Leksykalny
PobieranieSymboli
Translacja
Analizator
Składniowy
Komunikaty
TablicaSymboli
GeneracjaKodu
TablicaSymboli
J zyki formalne i kompilatory, © by Michał miałek
Gdzie jeste my?
Gramatyka okre la poprawne
zdania w danym j zyku.
J zyk dla analizatora
leksykalnego okre la wszystkie
poprawne ci gi znaków
tworz cych pojedyncze leksemy.
J zyk dla analizatora
składniowego okre la wszystkie
poprawne ci gi leksemów.
Gramatyki regularne słu
przede wszystkim do
definiowania j zyków dla
analizatorów leksykalnych.
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
PobieranieZnaków
:char
:char
:char
:char
Analizator
Leksykalny
:char
:char
Zdanie w j zyku
analizatora leksykalnego
PobieranieSymboli
Zdanie w j zyku
analizatora składniowego
:Leksem
:Leksem
:Leksem
:Leksem
:Leksem
Analizator
Składniowy
© by Michał miałek
1
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Alfabety i zdania
Podstawowe definicje:
Alfabet (słownik) to nie uporz dkowany zbiór symboli.
Zdanie (ci g symboli) to sko czona sekwencja zło ona z symboli
alfabetu (symboli terminalnych).
Zdanie puste (ozn. ) to zdanie nie zawieraj ce adnych symboli.
Długo zdania (ozn. | |) to liczba symboli, z których si ono
składa.
Zbiór wszystkich mo liwych zda alfabetu oznaczamy przez +.
Zbiór + wraz ze zdaniem pustym oznaczamy przez * ( * = + U ).
Wa ne pytania:
Jaki jest alfabet dla analizatora leksykalnego?
Jaki jest alfabet dla analizatora składni?
J zyki formalne i kompilatory
© by Michał miałek
J zyki i gramatyki
J zyk L okre lony dla alfabetu
*
L
stanowi podzbiór zboru
*:
Zło eniem (konkatenacj ) dwóch j zyków L1 i L2 jest zbiór napisów
:
L1L2 = { |
L1 i
L2}
Gramatyka G definiuje j zyk L(G) nad alfabetem . Definicja ta
polega na okre leniu wszystkich mo liwych napisów j zyka (zda ).
Nie wypisujemy jednak wszystkich mo liwych napisów (mo e ich
by niesko czenie du o). Zamiast tego opisujemy proces
„wyprowadzania” napisów j zyka.
Wa ne pytania:
Co opisuje j zyk dla analizatora leksykalnego?
Co opisuje j zyk dla analizatora składni?
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
© by Michał miałek
2
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Alfabety i j zyki a struktura kompilatora
Wa ne: alfabet i j zyk dla analizatora leksykalnego (a.l.) i
składniowego (a.s.) s ró ne:
Symbole terminalne dla a.l. to znaki ze strumienia wej ciowego.
Symbole terminalne dla a.s. to leksemy produkowane przez a.l.
:Leksem
:char
Analizator
PobieranieZnaków
Analizator
Leksykalny
PobieranieSymboli
Translacja
Analizator
Składniowy
Komunikaty
TablicaSymboli
GeneracjaKodu
TablicaSymboli
J zyki formalne i kompilatory
© by Michał miałek
Definicja gramatyki
Gramatyka G to uporz dkowana czwórka G=( , , S, P), gdzie:
to zbiór symboli terminalnych (symboli alfabetu, z których składaj
si napisy j zyka L(G))
to zbiór symboli nieterminalnych (zmiennych składniowych), przy
czym
=O
S jest symbolem startowym nale cym do zbioru
P jest zbiorem tzw. produkcji (reguł przepisywania)
J zyk L(G) zdefiniowany gramatyk G jest zbiorem napisów
składaj cych si z symboli terminalnych. Napisy te mo na
wyprowadzi z symbolu startowego przy pomocy szeregu
„przepisa ” zdefiniowanych przez zbiór produkcji.
Zbiór symboli nieterminalnych stanowi zbiór „zmiennych”
umo liwiaj cych zdefiniowanie reguł przepisywania (produkcji),
czyli zdefiniowanie składni j zyka.
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
© by Michał
miałek
3
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Produkcje
Produkcja to uporz dkowana para napisów (s, t), nale cych do
zbioru ( U )*. Produkcje zapisujemy z postaci s
t. Napis ten
oznacza, e napis „s” mo na przepisa w napis „t”.
Generowanie (lub sprawdzanie poprawno ci składniowej) napisu
j zyka z symbolu startowego S polega na stosowaniu kolejnych
produkcji zawartych w definicji gramatyki. Taki ci g produkcji
nazywamy wyprowadzeniem (sekwencj wyprowadzenia) dla tego
napisu j zyka.
Napis g jest bezpo rednio wyprowadzalny z napisu p (p=>g) je eli
istnieje produkcja A
b, taka, e istniej napisy t,u takie, e p=tAu i
g=tbu.
Napis g jest wyprowadzalny z napisu p (p=>+g), je eli istnieje
sekwencja r0...rn, takich, e p=>r0=> ... =>rn=>g. Dodatkowo, je li
p=>+g lub p=g to piszemy p=>*g.
J zyki formalne i kompilatory
© by Michał
miałek
© by Michał
miałek
Przykłady gramatyk
Jakie j zyki opisuj te gramatyki? Podaj przykładowe
wyprowadzenia. Gramatyka pierwsza:
= {+, *, (, ), i}
= {E, T, F}
S=E
P = {E
T, E
E+T, T
F,
T
T*F, F
i, F
(E)}
Gramatyka druga:
= {n, ., +, -, E}
= {C, F, I, X, S, U}
S=C
P = {C
n, C
nF, C
.I, F
.I, F
ES, I
n,
I
nX, X
ES, S
n, S
+U, S
-U, U
n}
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
4
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Gramatyki regularne
Druga z powy szych gramatyk jest gramatyk regularn .
Gramatyka regularna jest to taka gramatyka, dla której ka da
produkcja jest postaci A
v lub postaci A
vB, gdzie A,B nale
do zbioru , a v nale y do zbioru (lub do zbioru U dla postaci
A
v).
Pierwsza gramatyka z poprzedniego slajdu jest gramatyk
bezkontekstow (patrz nast pne wykłady). Czy zdefiniowany w ten
sposób j zyk da si przedstawi za pomoc gramatyki regularnej?
Gramatyki regularne s szczególnym przypadkiem gramatyk
bezkontekstowych. Wyró nia je si dlatego, e metody analizy przy
pomocy gramatyk regularnych s znacznie mniej zło one i
kosztowne. Niestety, nie wszystkie j zyki da si w ten sposób
opisa .
J zyki formalne i kompilatory
© by Michał
miałek
Gramatyki i automaty
Analizuj c zdania jakiego j zyka, kompilator
dokonuje rozbioru gramatycznego. Rozbiór ten
nast puje zgodnie z gramatyk , któr mo emy
opisa w sposób formalny jak na poprzednich
slajdach.
Fragment kompilatora dokonuj cy rozbioru
gramatycznego jest pewnego rodzaju automatem
rozpoznaj cym zdania.
Postulat: opracowa technik automatycznego
generowania takich automatów rozpoznaj cych.
Rozwi zanie: algorytmy przekształcania gramatyk
regularnych w automaty sko czone oraz gramatyk
bezkontekstowych w automaty ze stosem.
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
a+b*7
Rozbiór
gramatyczny
(np. drzewo)
© by Michał
miałek
5
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Automaty sko czone
Automat sko czony to uporz dkowana pi tka A=(T, Q, R, q0, F),
gdzie:
Q jest niepustym zbiorem stanów wewn trznych;
T (rozł czny z Q) jest zbiorem symboli terminalnych;
R jest zbiorem produkcji o postaci qt
q’, gdzie q i q’ nale do Q,
a t nale y do T;
q0 jest stanem pocz tkowym nale cym do Q;
F jest zbiorem stanów ko cowych nale cych do Q (jest
podzbiorem Q).
Automat sko czony jest maszyn , która czyta wej ciowy napis po
jednym znaku i zmienia swój wewn trzny stan po przetworzeniu
ka dego symbolu (zgodnie ze zbiorem produkcji).
Uwaga: dla ka dej gramatyki regularnej G istnieje automat
sko czony A taki, e L(A) = L(G).
J zyki formalne i kompilatory
© by Michał
miałek
Przykładowy automat sko czony
Przedstawiony tu automat odpowiada przykładowej gramatyce
regularnej pokazanej kilka slajdów temu.
Q = {C, F, I, X, S, U, q}; T = {n, ., +, -, E}
R = {Cn
q, Cn
F, C.
I, F.
I, FE
S, In
q,
In
X, XE
S, Sn
q, S+
U, SU,
Un
q}
q0 = C; F = {q}
Ten automat (jak równie ten z nast pnego slajdu) został
przekształcony z przykładowej gramatyki w sposób automatyczny
(istnieje odpowiedni algorytm, którego opis tu pominiemy).
Automat ten jest niezbyt przydatny w praktyce, gdy jest
niedeterministyczny...
Wa ne pytanie:
Czy automat sko czony (np. taki jak powy ej) da si narysowa
graficznie?
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
© by Michał
miałek
6
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
Automat deterministyczny
Automat jest deterministyczny, je eli ka de wyprowadzenie mo e
by kontynuowane w co najwy ej jednym ruchu.
Automat deterministyczny dla tego samego j zyka co poprzednio:
Q = {q0, q1, q2, q3, q4, q5, q6}; T = {n, ., +, -, E}
R = {q0n
q1, q0.
q2, q1.
q2 , q1E
q3 , q2n
q 4,
q5 , q3+
q6 , q3q6 , q4E
q3 , q6n
q5 }
q3n
F = {q1, q4, q5}
Automaty sko czone mog by przedstawiane graficznie za pomoc
grafu skierowanego. W w złach grafu umieszczamy stany automatu,
a na kraw dziach - symbole terminalne powoduj ce odpowiednie
zmiany stanów (okre lone w zbiorze R). Taki graf nazywamy
diagramem stanów.
Wa ne pytanie:
Jak zrealizowa automat sko czony w strukturze kompilatora?
J zyki formalne i kompilatory
© by Michał
miałek
Struktura automatu sko czonego
Automat sko czony ma w zły (stany automatu) i przej cia
(produkcje).
Wa ne:
Porównaj struktur automatu w j zyku UML z definicj automatu
podan trzy slajdy temu.
Zarz dcaAnalizatoraLeksykalnego
-pocz tkowy
Graf
1
+
+
PodajSymbol() : LekSem
Rozpocznij(nazwa :String) : void
+
+
od_pocz tku() : void
przejd (z :char) : int
1
-aktualny
W zełGrafu
-
1 +
1
typ: int
przejd (z :char) : int
+docelowy
1
0..*
1
-wychodz ce
0..*
Kraw d Grafu
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
-
opis_kraw dzi: String
+
czy_mo na_przej (znak :char) : W zeł
© by Michał
miałek
7
J zyki formalne i kompilatory
Modyfikacja:
2004-11-22
wiczenie
Prosz narysowa jeden lub kilka diagramów sekwencji
ilustruj cych działanie automatu sko czonego. Ka dy diagram
sekwencji powinien uwzgl dnia konkretn sekwencj symboli
terminalnych na wej ciu (np. „0.5E6”).
Prosz uwzgl dni pobieranie znaków ze strumienia wej ciowego i
przechodzenie pod wpływem tych znaków przez graf.
Prosz krótko opisa diagram.
Uwaga: mo na przyj
(własny).
J zyki formalne i kompilatory
Gramatyki regularne i automaty
sko czone
automat pokazany dwa slajdy temu lub inny
© by Michał
miałek
8

Podobne dokumenty