Programozó matematikus szak 2003/2004-es tanév II. félév Fordítóprogramok 2 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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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. L1 L2 egyesítés L1 L2 metszet L1\L2 különbség L1C komplementer *-ra (L1C = *\ L1) L1L2 nyelvek konkatenációja 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ó Metszet Komplementer Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem
Generatív nyelvtanok - 1 Definí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 = ’’ Gn - 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
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
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
Generatív nyelvtanok - 4 1 1 2 2 3 3 Nyelvtanok tartalmazása Nyelvek tartalmazása Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem
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
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
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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem Reguláris nyelvek - 2 Definí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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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
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
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
Programozó matematikus III. évf. Miskolci Egyetem 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
Programozó matematikus III. évf. Miskolci Egyetem 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
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
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
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
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
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
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
-mentesítési algoritmus A. 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
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
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
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
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
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
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
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
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
Programozó matematikus III. évf. Miskolci Egyetem 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 w1w2nw3w4nw5 L Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem
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
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. Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem