Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Programozó matematikus szak 2003/2004-es tanév II. félév

Hasonló előadás


Az előadások a következő témára: "Programozó matematikus szak 2003/2004-es tanév II. félév"— Előadás másolata:

1 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

2 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 ab 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 Programozó matematikus III. évf. Miskolci Egyetem
Relációk - 2 Definíció: Reláció k-dik hatványa k 0={(a,a) aH} 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 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 k0, a1,a2,…,ak   Definíció: * A  ábécé elemeiből képezhető összes szavak halmaza * ={a1a2…ak k0, 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 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*  wk} (Mindig véges halmaz) Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem

6 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\L különbség L1C komplementer *-ra (L1C = *\ L1) L1L nyelvek konkatenációja L1*= {}L1L1L1L1L1L1… 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

7 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

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 AxB, vagy Ax 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
1 1 2 2 3 3 Nyelvtanok tartalmazása Nyelvek tartalmazá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 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 qQ é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 qQ és a   esetén a (q,a) halmaz legalább egyelemű. Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem

15 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

16 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

17 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

18 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

19 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 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

22 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

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 = 12 egy mondatforma. -t az  részmondatának nevezzük, ha van olyan A szimbólum, hogy S * 1A2. é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
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

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  A1 … An  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  A1,… 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 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

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. Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem


Letölteni ppt "Programozó matematikus szak 2003/2004-es tanév II. félév"

Hasonló előadás


Google Hirdetések