fordítóprogramok 2

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

Upload: una

Post on 11-Jan-2016

45 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Fordítóprogramok 2

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.

Page 2: Fordítóprogramok 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 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)}

Page 3: Fordítóprogramok 2

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 +

Page 4: Fordítóprogramok 2

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ó: +

+ = * \{}

Page 5: Fordítóprogramok 2

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)

Page 6: Fordítóprogramok 2

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

Page 7: Fordítóprogramok 2

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)

Page 8: Fordítóprogramok 2

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

Page 9: Fordítóprogramok 2

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.

Page 10: Fordítóprogramok 2

Fordítóprogramok FORD01

Programozó matematikus III. évf. Miskolci Egyetem

10

Generatív nyelvtanok - 4

01

23

Nyelvtanoktartalmazása

01

23

Nyelvektartalmazása

Page 11: Fordítóprogramok 2

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

Page 12: Fordítóprogramok 2

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

Page 13: Fordítóprogramok 2

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 )

Page 14: Fordítóprogramok 2

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

Page 15: Fordítóprogramok 2

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

Page 16: Fordítóprogramok 2

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 *

Page 17: Fordítóprogramok 2

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.

Page 18: Fordítóprogramok 2

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.

Page 19: Fordítóprogramok 2

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.

Page 20: Fordítóprogramok 2

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 }

Page 21: Fordítóprogramok 2

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

Page 22: Fordítóprogramok 2

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.

Page 23: Fordítóprogramok 2

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.

Page 24: Fordítóprogramok 2

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

Page 25: Fordítóprogramok 2

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

Page 26: Fordítóprogramok 2

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)

Page 27: Fordítóprogramok 2

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.

Page 28: Fordítóprogramok 2

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

Page 29: Fordítóprogramok 2

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’}

Page 30: Fordítóprogramok 2

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

Page 31: Fordítóprogramok 2

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

Page 32: Fordítóprogramok 2

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

Page 33: Fordítóprogramok 2

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

Page 34: Fordítóprogramok 2

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.

Page 35: Fordítóprogramok 2

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.

Page 36: Fordítóprogramok 2

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.

Page 37: Fordítóprogramok 2

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.

Page 38: Fordítóprogramok 2

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

Page 39: Fordítóprogramok 2

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.

Page 40: Fordítóprogramok 2

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.