fordítóprogramok 2
DESCRIPTION
Fordítóprogramok 2. Programozó matematikus szak 2003/2004-es tanév II. félév. Készítette: dr. Nagy Ferenc 2004. I. Relációk - 1. Relációk - 2. Formális nyelvek - 1. Formális nyelvek - 2. Formális nyelvek - 3. Generatív nyelvtanok - 1. Generatív nyelvtanok - 2. - PowerPoint PPT PresentationTRANSCRIPT
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
1
Fordítóprogramok2
Programozó matematikus szak
2003/2004-es tanév II. félév
Készítette: dr. Nagy Ferenc 2004. I.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
2
Relációk - 1
Definíció: Hatványhalmaz
Legyen H tetszőleges halmaz. H hatványhalmaza 2H={A A H}
Jelölés:
HC jelenti H komplementerét
H jelentése H számossága
Definíció: H feletti reláció H H
a és b relációban vannak jelölése (a,b) , vagy ab
Definíció: Relációk kompozíciója
Legyen , H H két reláció. Kompozíciójuk:
={(a,c) b:(a,b), és (b,c)}
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
3
Relációk - 2
Definíció: Reláció k-dik hatványa k
0={(a,a) aH}
1=
k+1=k , ha k 1
Definíció: Reláció tranzitív lezártja +
+= 2 3 … k …
Definíció: Reláció reflexív, tranzitív lezártja *
*= 0 +
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
4
Formális nyelvek - 1
Definíció: Ábécé Szimbólumok véges, nem üres halmaza
Definíció: Szó
Ábécé elemeiből képezett a1a2…ak alakú sorozat, ahol k0, a1,a2,…,ak
Definíció: *
A ábécé elemeiből képezhető összes szavak halmaza
* ={a1a2…ak k0, a1,a2,…,ak }
Ha k=0, akkor a szó üres szó, jele .
Definíció: +
+ = * \{}
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
5
Formális nyelvek - 2
Definíció: Szavak konkatenációja
Legyen u,v * , a két szó konkatenációja (egymás után írása): uv *
w0= , wn=ww…w (n-szeri egymás után írás)
Definíció: Szó prefixe
Az x szó a w szó prefixe, ha van olyan y szó, melyre w=xy.
minden szónak prefixe. Ha x , akkor valódi prefixről beszélünk.
Definíció: Szó hossza (w)Ha w = , akkor w=0.
Ha w , akkor w=1+ v, ha w=av valamely a és v *.
Definíció: *,k
*,k = {w* wk} (Mindig véges halmaz)
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
6
Formális nyelvek - 3
Definíció: feletti nyelv (L)
L *
Definíció: Műveletek nyelvekkel, Reguláris és Bool műveletek
Legyen L1,L2 * két nyelv.
1. L1 L2 egyesítés
2. L1 L2 metszet
3. L1\L2 különbség
4. L1C komplementer *-ra (L1
C = *\ L1)
5. L1L2 nyelvek konkatenációja
6. L1*= {}L1L1L1L1L1L1… az L1 nyelv iteráltja
Definíció: Nyelvosztály zártsága műveletre
Az L nyelvosztály zárt a o műveletre,
ha L1,L2 L maga után vonja, hogy L1 o L2 L
Reguláris Bool
Egyesítés
Konkatenáció
Iteráció
Egyesítés
Metszet
Komplementer
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
7
Generatív nyelvtanok - 1Definíció: Generatív nyelvtan (G)
G=(N, ,P,S), ahol
N a nemterminálisok ábécéje
A terminálisok ábécéje, N = S N a kezdőszimbólum
P alakú átírási szabályok véges halmaza
A szabály baloldala
A szabály jobboldala
, (N )*
-ban van legalább egy nemterminális szimbólum
Definíció: Közvetlen deriváció (közvetlen levezetési reláció, G)
Legyen , (N )*
G , ha van olyan P szabály és vannak olyan ’, ’ (N )*
szavak, hogy = ’’ és = ’’G
n - n lépéses levezetés
G+ - legalább egy lépéses levezetés
G* - levezethetőség (esetleg nulla lépésben is)
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
8
Generatív nyelvtanok - 2
Definíció: G által generált nyelv L(G)
Legyen G=(N, ,P,S) generatív nyelvtan.
L(G)={u* S G* u}
Definíció: Ekvivalens nyelvtanok
Legyenek G=(N, ,P,S) és G’=(N’, ’,P’,S’) generatív nyelvtanok.
Ekvivalensnek nevezzük őket, ha L(G)=L’(G’)
Jelölés: a,b,c,d , A,B,C,D N U,V,W,X,Y,Z (N ) u,v,w,x,y,z * ,,, (N )*
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
9
Generatív nyelvtanok - 3
Definíció: Chomsky nyelvosztályok
0 típusú nyelvtan (kifejezés struktúrájú), ha semmilyen korlátozás nincs
1 típusú nyelvtan (környezetfüggő), ha P-ben minden szabály A alakú, ahol , kivéve esetleg az S szabályt, mely esetben ===, de ekkor S nem szerepelhet egyetlen szabálynak sem a jobboldalán
2 típusú nyelvtan (környezetfüggetlen), ha P-ben minden szabály A alakú.
3 típusú nyelvtan (reguláris, jobblineáris), ha P-ben minden szabály
AxB, vagy Ax alakú.
Definíció: Nyelv típusa
Egy L * nyelvet i típusúnak mondunk (i=0,1,2,3 lehet), ha van olyan i típusú nyelvtan, ami éppen L-et generálja.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
10
Generatív nyelvtanok - 4
01
23
Nyelvtanoktartalmazása
01
23
Nyelvektartalmazása
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
11
A PL/0 nyelv generatív nyelvtana - 1
Betű a z A Z
Szjegy 0 9
Előjel + -
Azon Betű Azon Szjegy Azon Betű
Szám Előjel Szjegy Szam Szjegy
Aművjel + -
Mművjel * /
Rjel = <> < <= > >=
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
12
A PL/0 nyelv generatív nyelvtana - 2
Prog Blokk .Blokk Cdef Vdef Pdef Ut
Ceq Azon = Szam
Clist , Ceq Clist
Cdef CONST Ceq Clist ;Vlist , Azon Vlist
Vdef VAR Azon Vlist ;Pdef PROC Azon ; Blokk ; Pdef
Ut Értut Callut Zjel Ifut Whileut
Értut Azon := Kif
Callut CALL Azon
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
13
A PL/0 nyelv generatív nyelvtana - 3
Utlist ; Ut Utlist
Zjel BEGIN Ut Utlist END
Ifut IF Felt THEN Út
Whileut WHILE Felt DO Út
Felt ODD Kif Kif Rjel Kif
Kif Előjel Tag Ttag
Ttag Aművjel Tag Ttag
Tag Tény Ttény
Ttény Mművjel Tény Ttény
Tény Azon Szám ( Kif )
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
14
Reguláris nyelvek - 1
Definíció: Nemdeterminisztikus automata (M)
M=(Q, , ,q0,F), ahol
Q az állapotok halmaza, véges, nem üres
az input ábécé
q0 Q a kezdő állapot
F Q a végállapotok halmaza
: Q 2Q, az átmenetfüggvény
Definíció: Determinisztikus automata
Az M=(Q, , ,q0,F) automatát determinisztikusnak nevezzük,
ha minden qQ és a esetén a (q,a) halmaz legfeljebb egyelemű.
Definíció: Teljesen definiált automata
Az M=(Q, , ,q0,F) automatát teljesen determináltnak nevezzük,
ha minden qQ és a esetén a (q,a) halmaz legalább egyelemű.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
15
Reguláris nyelvek - 2Definíció: Automata konfigurációinak halmaza (C)
C= Q *
(q,a1a2…an) jelentése: M a q állapotban van és az a1a2…an jelsorozatot kapja inputként
Definíció: Átmeneti reláció (├M)
Tetszőleges (q;w), (q’;w’) C esetén a (q;w) ├M (q’;w’) reláció akkor és csak
akkor áll fenn, ha w=aw’ valamely a -ra, és fennáll a q’ (q,a) tartalmazás.
Definíció: Automata által felismert nyelv
Az M=(Q, , ,q0,F) automata által felismert nyelven az
L(M)={w * (q0, w) ├M* (q, ) valamely q F-re}
nyelvet értjük.
Tétel:A nemdeterminisztikus automatákkal felismerhető nyelvek osztálya megegyezik a determinisztikus automatákkal felismerhető nyelvek osztályával.
Lemma:Tetszőleges M=(Q, , ,q0,F) automatához megadható olyan
M’=(Q’, , ’,q0,F) teljesen definiált automata, melyre L(M)=L(M’).
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
16
Reguláris nyelvek - 3
Definíció: Reguláris kifejezések
feletti reguláris kifejezésnek nevezzük az alábbi halmaz olyan U legszűkebb részhalmazát, amelyre az alább felsorolt tulajdonságok teljesülnek:
A halmaz: ( {,(,),+,*})*
Tulajdonságok:
– a szimbólum eleme U-nak.
– minden a -ra az a szimbólum eleme U-nak
– ha R1,R2 U, akkor (R1)+(R2), (R1)(R2), (R1)* is elemei U-nak.
Definíció: Egy ábécé feletti R reguláris kifejezés által meghatározott R nyelv
- Ha R= mint szimbólum, akkor R= , mint nyelv
- Ha R=a, mint szimbólum, akkor R= {a}, mint nyelv
- Ha R=(R1)+(R2), akkor R= R1 R2
- Ha R=(R1)(R2), akkor R= R1 R2
- Ha R=(R1)*, akkor R= R1 *
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
17
Reguláris nyelvek - 4
Definíció: Reguláris nyelv
Egy L * -nyelvet regulárisnak nevezünk, ha reprezentálható (meghatározható) reguláris kifejezéssel, azaz, ha van olyan feletti R reguláris kifejezés, amelyre L= R .
Lemma: A reguláris nyelvek osztálya zárt a reguláris műveletekre nézve.
Megjegyzés: Minden véges nyelv reguláris.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
18
Reguláris nyelvek - 5
Lemma: Tetszőleges ábécé esetén minden feletti L reguláris nyelv
generálható 3 típusú nyelvtannal
Definíció: Láncszabály
Tetszőleges G=(N,,P,S) nyelvtan esetén az A B alakú szabályokat
láncszabályoknak nevezzük
Amennyiben P-ben nincsenek láncszabályok, úgy a G-t láncszabálymentesnek
nevezzük
Lemma: Legyen G=(N,,P,S) környezetfüggetlen nyelvtan. Megadható olyan G’=(N,, P’,S) láncszabálymentes környezetfüggetlen nyelvtan, amelyre L(G’)=L(G). Ha G 3 típusú, akkor G’ is 3 típusú lesz.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
19
Láncszabálymentesítési algoritmus
Láncszabálymentesítési algoritmus
G=(N,,P,S)-ből képezünk egy G=(N,,P’,S) nyelvtant
A. Minden A N nemterminálisra képezzük az NA halmazt, ahol:
NA={B N A * B láncszabályokkal}
NA meghatározási algoritmusa
1. N0={A}, i=0
2. Legyen Ni+1=Ni {C N B Ni hogy B C P}
3. Ha Ni+1=Ni , akkor megállunk és NA= Ni, egyébként i=i+1, és a 2. lépés következik.
B. Ezután P’ kialakítása:
P’=
Minden A N -re
Minden B NA -ra
Minden B P -re
Ha B nem láncszabály
vegyük fel P’-be az A szabályt.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
20
Szabályegyszerűsítés 3 típusú nyelvre
Lemma: Legyen G=(N,,P,S) 3 típusú láncszabálymentes nyelvtan. Akkor van olyan
G’=(N’,, P’,S) 3 típusú nyelvtan, amelyre L(G’)=L(G) és P-ben minden szabály A aB vagy A alakú, ahol A,B N és a .
Szabályegyszerűsítési algoritmus 3 típusú nyelvre
G=(N,,P,S)-ből képezünk egy G=(N’,,P’,S) nyelvtant
(A xB, A x, A alakú szabályok vannak )
1. A aB P, A P szabályt felvenni P’-be
2. A a1a2…anB P (n>1) esetén felvenni P’-be a következő szabályokat:
A a1 A1, A1 a2A2, …, An-1 anB
3. A a1a2…an P (n>1) esetén felvenni P’-be a következő szabályokat:
A a1 A1, A1 a2A2, …, An-1 anAn , An
A1, A2,… An új nemterminálisok lesznek: N’=N {A1, A2,… An }
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
21
Reguláris nyelvek - 6
Lemma: Tetszőleges ábécé feletti 3 típusú nyelv felismerhető automatával.
G=(N,,P,S) és M=(Q, , ,q0,F) megfeleltetés:
Feltesszük, hogy G láncszabálymentes és szabályai A aB és A alakúak.
Q=N
q0=S
F={A N A P}
(A,a)={B N A aB P}
Tétel: (Kleene tétele)
Tetszőleges ábécé feletti, automatával felismerhető nyelv reguláris.
Lemma: Tetszőleges ábécé feletti az alábbi 3 nyelvosztály megegyezik
- 3 típusú
- automatával felismerhető
- reguláris
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
22
Reguláris nyelvek - 7
Lemma: (Pumpáló lemma reguláris nyelvekre)
Legyen L *, tetszőleges reguláris nyelv. Akkor megadható olyan
(L-től függő) k>0 egész szám, hogy minden w L esetén ha w k,
akkor vannak olyan w1,w2,w3 *,szavak, melyekre teljesülnek az
alábbiak:
- w=w1w2w3
- 0< w2 k
- Minden n 0-ra w1w2nw3 L.
Lemma: A reguláris nyelvek osztálya zárt a metszetre és a kivonásra.
Tétel: A reguláris nyelvek osztálya zárt a Boole műveletekre nézve.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
23
Környezetfüggetlen nyelvek - 1
Definíció: Derivációk (levezetések)
Legyen G=(N,,P,S) környezetfüggetlen nyelvtan.
Az 0 1 … n alakú kifejezéseket derivációknak nevezzük.
Ha a fenti derivációban minden i=1,2,…,n esetén i úgy keletkezik, hogy az
i-1-ben a baloldalról nézve legelső nemterminálist helyettesítjük egy rá vonatkozó szabály jobboldalával, akkor baloldali derivációról beszélünk. (l)
Analóg módon beszélhetünk jobboldal derivációról. (r)
Definíció: Mondatforma, mondat
-t mondatformának nevezzük, ha teljesül, hogy S * .
x-t mondatnak nevezzük, ha teljesül, hogy S * x.
Definíció: Részmondat, egyszerű részmondat
Legyen = 12 egy mondatforma. -t az részmondatának nevezzük,
ha van olyan A szimbólum, hogy S * 1A2. és A * .
Egyszerű részmondatról beszélünk, ha a fentiekben A teljesül.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
24
Környezetfüggetlen nyelvek - 2
Definíció: Derivációs fák
Legyen X (N ). Az X gyökerű derivációs fák halmazán
(címkézett, rendezett) fák legszűkebb olyan DX halmazát értjük,
amelyre teljesülnek az alábbiak:
1. Az a fa, amelynek egyetlen szögpontja (csak gyökere) van és annak címéje X,
eleme DX-nek. Jele X.
2. Ha X P, akkor az a fa, melynek gyökere X-szel van címkézve,
a gyökerének egyetlen leszármazottja van, aminek címkéje ,
eleme DX-nek. Jele X[].
3. Ha X X1…Xn P, és t1 DX1,…, tn DXn
, akkor az a fa, melynek gyökere
X-szel van címkézve, a gyökérből n él indul rendre a t1,…,tn fák gyökeréhez,
eleme DX-nek. Jele X[t1,…,tn].
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
25
Környezetfüggetlen nyelvek - 3
Definíció: Derivációs fa magassága, határa
Legyen t egy X gyökerű derivációs fa. Magasságát h(t)-vel, határát fr(t)-vel
jelöljük és az alábbi módon definiáljuk.
1. Ha t=X, akkor h(t)=0 és fr(t)=X
2. Ha t=X[], akkor h(t)=1 és fr(t)=3. Ha t=X[t1,…,tn], akkor h(t)=1+max{h(ti) 1 i n} és fr(t)=fr(t1)…fr(tn).
Tétel: Tetszőleges X (N ) és (N )* esetén X * akkor és csak akkor áll fenn, ha van olyan t DX derivációs fa amelyre fr(t)= .
Tétel: Tetszőleges X (N ) és w * esetén a következő három állítás ekvivalens:
1. X * w
2. X l* w
3. X r* w
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
26
Környezetfüggetlen nyelvek - 4
Definíció: Veremautomata (pushdown automata)
P=(Q, , , ,q0,Z0,F), ahol
Q az állapotok véges halmaza
az input ábécé
a verem ábécé
q0 Q a kezdő állapot
Z0 a verem kezdőszimbóluma
F a végállapotok halmaza
: Q ( {}) 2Q * az átmeneti függvény
Definíció: Veremautomata konfigurációinak halmaza
C=Q * *
Definíció: Átmeneti reláció ├ P
├ P C C, tetszőleges p,q Q, a ( {}), w * , Z és , *-ra
(q,aw,Z ) ├ P (p,w, ) akkor és csakis akkor áll fenn, ha (p, ) (q,a,Z)
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
27
Környezetfüggetlen nyelvek - 5
Definíció: Veremautomata által végállapotokkal felismert nyelv
Lf(P)={w * (q0,w,Z0) ├ P*(q, , ), ahol q F és * }
Definíció: Veremautomata által üres veremmel felismert nyelv
L(P)={w * (q0,w,Z0) ├ P*(q, , ), ahol q Q }
Tétel: A veremautomatákkal végállapotokkal felismerhető nyelvek osztálya megegyezik a veremautomatákkal üres veremmel felismerhető nyelvek osztályával.
Lemma: Tetszőleges környezetfüggetlen nyelv felismerhető veremautomatával.
G=(N,,R,S) hez a veremautomata P=(Q, , , ,q0,Z0,F) megadása:
=N , Z0=S, Q={q}, q0=q, F=
(q, ,A)={(q, ) A R} minden A N-re
(q, a,a)={(q, )} minden a -ra
Lemma: Minden veremautomatával felismerhető nyelv környezetfüggetlen.
Tétel: A környezetfüggetlen nyelvek osztálya megegyezik a veremautomatákkal felismerhető nyelvek osztályával.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
28
Környezetfüggetlen nyelvtanok átalakításai - 1
Definíció: -mentes környezetfüggetlen nyelvtan
Egy G=(N, ,P,S) környezetfüggetlen nyelvtan -mentes, ha P nem tartalmaz A alakú szabályokat, kivéve esetleg az S szabályt.
Ha azonban S P, akkor S nem szerepelhet semelyik P-beli szabály jobboldalán.
Lemma: Tetszőleges G=(N, ,P,S) környezetfüggetlen nyelvtanhoz megkonstruálható olyan -mentes G’=(N’, , P’,S’) környezetfüggetlen nyelvtan, melyre L(G)=L(G’).
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
29
-mentesítési algoritmus
-mentesítési algoritmusA. Először megadunk egy olyan -mentes G1=(N, ,P1,S) nyelvtant,
amelyre L(G1)=L(G)\{}. Ecélból meghatározzuk azon nemterminálisok
H halmazát, amelyekből levezethető .
1. Legyen H1={A N A P} és i=1
2. Legyen Hi+1=Hi {A N ( A P) úgy, hogy Hi*}
3. Ha Hi+1=Hi , akkor megállunk és H= Hi, egyébként i=i+1, és a 2. lépés következik.
B. Ezután G1 megadásához a P1-et úgy adjuk meg, mint a legszűkebb olyan halmaz,
amelyre minden olyan A P szabály ( ) esetén, minden olyan A 1
(1 ) szabály P1-ben van, melyben 1 úgy keletkezik -ból, hogy töröljük belőle
a H-beli nemterminálisok 0 vagy több előfordulását. ( L(G) S H))
C. G1 ismeretében G’ megadása:
Ha L(G), akkor G’=G,
egyébként G’={N {S’}, , P1{S’ S,S’ },S’}
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
30
Környezetfüggetlen nyelvtanok átalakításai - 2
Definíció: használható szimbólum
Legyen G=(N, ,P,S) környezetfüggetlen nyelvtan. Az X (N ) szimbólumról azt mondjuk, hogy használható, ha vannak olyan x,y,z * szavak, melyekre
S *xXz *xyz.
Definíció: termináló szimbólum
Legyen G=(N, ,P,S) környezetfüggetlen nyelvtan. Az A N nemterminális
szimbólumról azt mondjuk, hogy termináló, ha van olyan z * szó, melyre
A*z.
Lemma: Tetszőleges G=(N, ,P,S) környezetfüggetlen nyelvtanhoz, ha L(G) , megadható olyan G1=(N1, ,P1,S) környezetfüggetlen nyelvtan, melyre L(G)=L(G1) és minden N1-beli nemterminális termináló.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
31
Nem termináló nemterminálisok kiszűrése
Nem termináló nemterminálisok kiszűrési algoritmusa
A. Először kiszámítjuk az N-beli termináló nemterminálisok U halmazát az alábbi
iterációval.
1. Legyen U1={A N ( A x P) valamely x *-ra} és i=1
2. Legyen Ui+1=Ui {A N ( A P) úgy, hogy (Ui )*}
3. Ha Ui+1=Ui , akkor megállunk és U= Ui, egyébként i=i+1, és a 2. lépés következik.
(L(G) S U)
B. G1 nyelvtan megadása feltételezve, hogy L(G) , azaz S U :
Legyen N1=U és legyen P1 azon P-beli szabályok összessége, amelyek csak
(N1 )-beli szimbólumokat tartalmaznak. Ezután G1=(N1, ,P1,S).
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
32
Környezetfüggetlen nyelvtanok átalakításai - 3
Definíció: elérhető szimbólum
Legyen G=(N, ,P,S) környezetfüggetlen nyelvtan. Az X (N ) szimbólumról azt mondjuk, hogy elérhető, ha vannak olyan , (N )*-beli szavak, amelyekre
S * X.
Lemma: Tetszőleges G=(N, ,P,S) környezetfüggetlen nyelvtanhoz, ha -ben van legalább egy elérhető terminális, megadható olyan G’=(N’, ’,P’,S) környezetfüggetlen nyelvtan, melyre L(G)=L(G’) és G’ minden szimbóluma elérhető.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
33
Nem elérhető szimbólumok kiszűrése
Nem elérhetö szimbólumok kiszűrési algoritmusa
A. Először kiszámítjuk az (N)-beli elérhető szimbólumok H halmazát az alábbi
iterációval.
1. Legyen H0=S és i=0
2. Legyen Hi+1=Hi {X (N) ( A X P) úgy, hogy A Hi}
3. Ha Hi+1=Hi , akkor megállunk és H= Hi, egyébként i=i+1, és a 2. lépés következik.
(X elérhető i, hogy X Hi)
B. G’ nyelvtan megadása: N’=N H, ’= H, és legyen P’ azon P-beli szabályok összessége, amelyek csak (N’ ’)-beli szimbólumokat tartalmaznak. Ezután ha ’ , akkor legyen G’=(N’, ’,P’,S).
Tétel: Legyen G=(N, ,P,S) környezetfüggetlen nyelvtanhoz. Ha L(G) és -ban van elérhető terminális, akkor megadható olyan G’=(N’, ’,P’,S) környezetfüggetlen nyelvtan, melyre L(G)=L(G’) és G’ minden szimbóluma használható.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
34
Balrekurzió megszüntetése - 1
Definíció: balrekurziv tulajdonság
- Közvetlen balrekurzió: Azt mondjuk, hogy A közvetlenül balrekurzív G-ben,
ha P-ben van A A alakú szabály
- Balrekurzív szimbólum: Az A balrekurzív G-ben, ha van olyan szó,
amelyre A + A- Balrekurzív nyelvtan: A G nyelvtan balrekurzív, ha tartalmaz legalább egy
balrekurzív nemterminálist.
Lemma: Tetszőleges G=(N, ,P,S) nyelvtan és A N esetén eldönthető, hogy A balrekurzív-e G-ben.
Algoritmus:
Megkonstruáljuk a HA={B N A + B } halmazt és megnézzük,
hogy A HA teljesül-e. HA konstruálásának iterációja:
1. Legyen i=0 és Hi={B N A B P}
2. Legyen Hi+1=Hi {B N (C Hi ):C B P }
3. Ha Hi+1=Hi , akkor megállunk és HA = Hi, egyébként i=i+1, és a 2. lépés következik.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
35
Balrekurzió megszüntetése - 2
Lemma: Legyen G=(N, ,P,S) környezetfüggetlen nyelvtan és legyen A B P.
Legyenek a B baloldalú szabályok B 1 … n.
Legyen P’=(P\{A B} {A 1 ,… A n })
és legyen G’=(N, ,P’,S). Akkor L(G)=L(G’).
A fenti transzformációt 1-es típusú transzformációnak nevezzük. Megőrzi a nyelvet.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
36
Balrekurzió megszüntetése - 2
Lemma: Legyen G=(N, ,P,S) környezetfüggetlen nyelvtan és
legyen A N közvetlen balrekurzív és
legyenek az A baloldalú szabályok A A1 … An 1 … m ,
ahol 1,…, m egyike sem kezdődik A-val.
Legyen N1=N {A’}, ahol A’ (N ) egy új nemterminális
Legyen P1=(P\{A A1,… A A n} P’, ahol
P’={A 1A’,… A mA’}
{A’ 1 A’,… A’ n A’}
{A’ 1 ,… A’ n }
és legyen G1=(N1, , P1,S).
Akkor L(G)=L(G1) és A nem közvetlenül balrekurzív G1-ben.
A fenti transzformációt 2-es típusú transzformációnak nevezzük.
Megörzí a nyelvet és eggyel csökkenti a közvetlenül balrekurzív nemterminálisok számát.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
37
Balrekurzió megszüntetése - 3
Tétel: Tetszőleges G=(N, ,P,S) környezetfüggetlen nyelvtanhoz megkonstruálható olyan G1=(N1, , P1,S) környezetfüggetlen nyelvtan, amely nem tartalmaz közvetlenül balrekurzív nemterminálisokat és amelyre L(G)=L(G1).
Tétel: Tetszőleges G=(N, ,P,S) környezetfüggetlen nyelvtanhoz megkonstruálható olyan G’ nem balrekurzív környezetfüggetlen nyelvtan, amelyre L(G)=L(G’).
Konstruktív algoritmus:
1. G-ből kiküszöböljük a közvetlenül balrekurzív nemterminálisokat a 2-es típusú
transzformáció alkalmazásával
2. Ellenőrizzük, maradt-e balrekurzív nemterminális.
Ha nem maradt, akkor készen vagyunk.
Ha maradt, akkor a balrekurzív nemterminálisra 1-es típusú transzformációt
végzünk. Ezután az 1. pontnál folytatjuk.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
38
Bar-Hillel lemma
Lemma: Bar-Hillel lemma
Legyen L * tetszőleges környezetfüggetlen nyelv. Akkor megadhatók olyan (L-től függő) p,q>0 egész számok, hogy minden w L esetén, ha w >p, akkor vannak olyan w1,w2,w3,w4,w5 * szavak, melyekre teljesülnek az alábbi feltételek:
1. w= w1w2w3w4w5
2. w2w3w4 q,
3. w2w4 ,
4. minden n>0-ra w1w2nw3w4
nw5 L
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
39
Környezetfüggetlen nyelvek zártsága
Tétel: A környezetfüggetlen nyelvek osztálya zárt a reguláris műveletekre nézve.
Lemma:A környezetfüggetlen nyelvek osztálya nem zárt a metszetre.
Lemma:A környezetfüggetlen nyelvek osztálya nem zárt a komplementerre.
Fordítóprogramok FORD01
Programozó matematikus III. évf. Miskolci Egyetem
40
Determinisztikus veremautomaták
Definíció: Determinisztikus veremautomata
Azt mondjuk, hogy a P=(Q, , , ,q0,Z0,F) veremautomata determinisztikus, ha minden q Q-ra és Z -ra a következő két feltétel valamelyike teljesül:
1. (q, ,Z)= és minden a -ra a (q, a,Z) halmaz legfeljebb egy elemű, vagy
2. Minden a -ra (q, a,Z) = és a (q, ,Z) halmaz legfeljebb egy elemű.
Tétel: A determinisztikus automatákkal felismerhető nyelvek osztálya
valódi részosztálya a veremautomatákkal felismerhető nyelvek osztályának.