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

Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 2 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: "Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 2 Programozó matematikus szak 2003/2004-es tanév II. félév."— Előadás másolata:

1 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 2 Programozó matematikus szak 2003/2004-es tanév II. félév Készítette: dr. Nagy Ferenc I.

2 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 2 H ={A  A  H} Jelölés: H C 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)  }

3 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)  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   +

4 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 a 1 a 2 …a k alakú sorozat, ahol k  0, a 1,a 2,…,a k   Definíció:  * A  ábécé elemeiből képezhető összes szavak halmaza  * ={a 1 a 2 …a k  k  0, a 1,a 2,…,a k   } Ha k=0, akkor a szó üres szó, jele . Definíció:  +  + =  * \{  }

5 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   * w 0 = , w n =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)

6 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 L 1,L 2   * két nyelv. 1.L 1  L 2 egyesítés 2.L 1  L 2 metszet 3.L 1 \L 2 különbség 4.L 1 C komplementer  * -ra (L 1 C =  * \ L 1 ) 5.L 1 L 2 nyelvek konkatenációja 6.L 1 * = {  }  L 1  L 1 L 1  L 1 L 1 L 1  … az L 1 nyelv iteráltja Definíció: Nyelvosztály zártsága műveletre Az L nyelvosztály zárt a o műveletre, ha L 1,L 2  L maga után vonja, hogy L 1 o L 2  L RegulárisBool Egyesítés Konkatenáció Iteráció Egyesítés Metszet Komplementer

7 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  =  ’  ’  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)

8 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   ) *

9 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.

10 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 10 Generatív nyelvtanok Nyelvtanok tartalmazása Nyelvek tartalmazása

11 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 0    9 Előjel    +  -   +  - Azon  Betű  Azon Szjegy  Azon Betű Szám  Előjel Szjegy  Szam Szjegy Aművjel  +  - Mművjel  *  / *  / Rjel  =  <>   >=

12 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

13 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 )

14 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 14 Reguláris nyelvek - 1 Definíció: Nemdeterminisztikus automata (M) M=(Q, , ,q 0,F), ahol Q az állapotok halmaza, véges, nem üres  az input ábécé q 0  Q a kezdő állapot F  Q a végállapotok halmaza  : Q    2 Q, az átmenetfüggvény Definíció: Determinisztikus automata Az M=(Q, , ,q 0,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, , ,q 0,F) automatát teljesen determináltnak nevezzük, ha minden q  Q és a   esetén a  (q,a) halmaz legalább egyelemű.

15 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 15 Reguláris nyelvek - 2 Definíció: Automata konfigurációinak halmaza (C) C= Q   * (q,a 1 a 2 …a n ) jelentése: M a q állapotban van és az a 1 a 2 …a n 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, , ,q 0,F) automata által felismert nyelven az L(M)={w   *  (q 0, 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, , ,q 0,F) automatához megadható olyan M’=(Q’, ,  ’,q 0,F) teljesen definiált automata, melyre L(M)=L(M’).

16 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 R 1,R 2  U, akkor (R 1 )+(R 2 ), (R 1 )(R 2 ), (R 1 ) * 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=(R 1 )+(R 2 ), akkor  R  =  R 1    R 2  - Ha R=(R 1 )(R 2 ), akkor  R  =  R 1  R 2  - Ha R=(R 1 ) *, akkor  R  =  R 1  *

17 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.

18 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.

19 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 N A halmazt, ahol: N A ={B  N  A  * B láncszabályokkal} N A meghatározási algoritmusa 1. N 0 ={A}, i=0 2. Legyen N i+1 =N i  {C  N  B  N i hogy B  C  P} 3. Ha N i+1 =N i, akkor megállunk és N A = N i, 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  N A -ra Minden B    P -re Ha B   nem láncszabály vegyük fel P’-be az A   szabályt.

20 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  a 1 a 2 …a n B  P (n>1) esetén felvenni P’-be a következő szabályokat: A  a 1 A 1, A 1  a 2 A 2, …, A n-1  a n B 3. A  a 1 a 2 …a n  P (n>1) esetén felvenni P’-be a következő szabályokat: A  a 1 A 1, A 1  a 2 A 2, …, A n-1  a n A n, A n   A 1, A 2,… A n új nemterminálisok lesznek: N’=N  {A 1, A 2,… A n }

21 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, , ,q 0,F) megfeleltetés: Feltesszük, hogy G láncszabálymentes és szabályai A  aB és A   alakúak. Q=N q 0 =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

22 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 w 1,w 2,w 3   *,szavak, melyekre teljesülnek az alábbiak: - w=w 1 w 2 w 3 - 0<  w 2   k - Minden n  0-ra w 1 w 2 n w 3  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.

23 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  *  1 A  2. és A  * . Egyszerű részmondatról beszélünk, ha a fentiekben A   teljesül.

24 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 D X 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 D X -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 D X -nek. Jele X[  ]. 3. Ha X  X 1 …X n  P, és t 1  D X 1,…, t n  D X n, akkor az a fa, melynek gyökere X-szel van címkézve, a gyökérből n él indul rendre a t 1,…,t n fák gyökeréhez, eleme D X -nek. Jele X[t 1,…,t n ].

25 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[t 1,…,t n ], akkor h(t)=1+max{h(t i )  1  i  n} és fr(t)=fr(t 1 )…fr(t n ). Tétel: Tetszőleges X  (N  ) és   (N  ) * esetén X  *  akkor és csak akkor áll fenn, ha van olyan t  D X 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

26 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 26 Környezetfüggetlen nyelvek - 4 Definíció: Veremautomata (pushdown automata) P=(Q, , , ,q 0,Z 0,F), ahol Q az állapotok véges halmaza  az input ábécé  a verem ábécé q 0  Q a kezdő állapot Z 0   a verem kezdőszimbóluma F a végállapotok halmaza  : Q  (   {  })    2 Q   * 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)

27 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 L f (P)={w   *  (q 0,w,Z 0 ) ├ P * (q, ,  ), ahol q  F és    * } Definíció: Veremautomata által üres veremmel felismert nyelv L  (P)={w   *  (q 0,w,Z 0 ) ├ 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, , , ,q 0,Z 0,F) megadása:  =N  , Z 0 =S, Q={q}, q 0 =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.

28 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’).

29 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 29  -mentesítési algoritmus A. Először megadunk egy olyan  -mentes G 1 =(N, ,P 1,S) nyelvtant, amelyre L(G 1 )=L(G)\{  }. Ecélból meghatározzuk azon nemterminálisok H halmazát, amelyekből levezethető . 1. Legyen H 1 ={A  N  A    P} és i=1 2. Legyen H i+1 =H i  {A  N  (  A    P) úgy, hogy   H i * } 3. Ha H i+1 =H i, akkor megállunk és H= H i, egyébként i=i+1, és a 2. lépés következik. B. Ezután G 1 megadásához a P 1 -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 P 1 -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. G 1 ismeretében G’ megadása: Ha   L(G), akkor G’=G, egyébként G’={N  {S’}, , P 1  {S’  S,S’   },S’}

30 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 G 1 =(N 1, ,P 1,S) környezetfüggetlen nyelvtan, melyre L(G)=L(G 1 ) és minden N 1 -beli nemterminális termináló.

31 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 U 1 ={A  N  (  A  x  P) valamely x  * -ra} és i=1 2. Legyen U i+1 =U i  {A  N  (  A    P) úgy, hogy   (U i  ) * } 3. Ha U i+1 =U i, akkor megállunk és U= U i, egyébként i=i+1, és a 2. lépés következik. (L(G)    S  U) B. G 1 nyelvtan megadása feltételezve, hogy L(G)  , azaz S  U : Legyen N 1 =U és legyen P 1 azon P-beli szabályok összessége, amelyek csak (N 1  )-beli szimbólumokat tartalmaznak. Ezután G 1 =(N 1, ,P 1,S).

32 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ő.

33 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 H 0 =S és i=0 2. Legyen H i+1 =H i  {X  (N  )  (  A   X   P) úgy, hogy A  H i } 3. Ha H i+1 =H i, akkor megállunk és H= H i, egyébként i=i+1, és a 2. lépés következik. (X elérhető   i, hogy X  H i ) 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ó.

34 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 H A ={B  N  A  + B  } halmazt és megnézzük, hogy A  H A teljesül-e. H A konstruálásának iterációja: 1. Legyen i=0 és H i ={B  N  A  B   P} 2. Legyen H i+1 =H i  {B  N  (C  H i ):C  B   P } 3. Ha H i+1 =H i, akkor megállunk és H A = H i, egyébként i=i+1, és a 2. lépés következik.

35 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.

36 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 N 1 =N  {A’}, ahol A’  (N   ) egy új nemterminális Legyen P 1 =(P\{A  A  1,… A  A  n }  P’, ahol P’={A   1 A’,… A   m A’}   {A’   1 A’,… A’   n A’}   {A’   1,… A’   n } és legyen G 1 =(N 1, , P 1,S). Akkor L(G)=L(G 1 ) és A nem közvetlenül balrekurzív G 1 -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.

37 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 G 1 =(N 1, , P 1,S) környezetfüggetlen nyelvtan, amely nem tartalmaz közvetlenül balrekurzív nemterminálisokat és amelyre L(G)=L(G 1 ). 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.

38 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 w 1,w 2,w 3,w 4,w 5   * szavak, melyekre teljesülnek az alábbi feltételek: 1. w= w 1 w 2 w 3 w 4 w 5 2.  w 2 w 3 w 4   q, 3. w 2 w 4  , 4. minden n>0-ra w 1 w 2 n w 3 w 4 n w 5  L

39 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.

40 Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 40 Determinisztikus veremautomaták Definíció: Determinisztikus veremautomata Azt mondjuk, hogy a P=(Q, , , ,q 0,Z 0,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.


Letölteni ppt "Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 2 Programozó matematikus szak 2003/2004-es tanév II. félév."

Hasonló előadás


Google Hirdetések