9. előadás Környezetfüggetlen nyelvek



Hasonló dokumentumok
6. előadás Környezetfüggetlen nyelvtanok/1.


akonyv 2006/12/18 11:53 page i #1 Formális nyelvek és fordítóprogramok

7. előadás Környezetfüggetlen nyelvtanok

FORDÍTÓPROGRAMOK. MKSA3144F kidolgozott tételek ás verzió január 21., Domján Tamás

6. előadás A reguláris nyelvek jellemzése 2.

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat

6. előadás A reguláris nyelvek jellemzése 2.

Fordítóprogramok szerkesztése Flex és Bison segítségével

Matematika évfolyam

JANUS PANNONIUS TUDOMÁNYEGYETEM. Schipp Ferenc ANALÍZIS I. Sorozatok és sorok

Analízis előadás és gyakorlat vázlat

Mesterséges intelligencia, 7. előadás október 13. Készítette: Masa Tibor (KPM V.)

A digitális számítás elmélete

Széchenyi István Egyetem, 2005

Számítástudomány matematikai alapjai segédlet táv és levelező

Kombinatorika évfolyam. Szerkesztette: Surányi László Ábrák: Hraskó András december 6.

Geometriai axiómarendszerek és modellek

- Levelek: operandusok - Csomópontok: operátorok. Fenti kifejezés: (x+ (y 10)) * (6 / z) Bináris Keresőfa (BST) Példa bináris keresőfára.

Legrövidebb utat kereső algoritmusok. BFS (szélességi keresés)

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. Párosítások

Házi feladatok megoldása. Nyelvtani transzformációk. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 6. gyakorlat.

Mesterséges Intelligencia I. (I602, IB602)

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

Chomsky-féle hierarchia

Feladatok. BNF,EBNF,szintaxisgráf

Információelmélet Szemináriumi gyakorlatok

Feladatok. 6. A CYK algoritmus segítségével döntsük el, hogy aabbcc eleme-e a G = {a, b, c}, {S, A, B, C}, P, S nyelvtan által generált nyelvnek!

Fordítóprogramok felépítése, az egyes programok feladata. A következő jelölésmódot használjuk: program(bemenet)(kimenet)

Mesterséges intelligencia 1 előadások

MATEMATIKA C 6. évfolyam 6. modul CSUPA TALÁNY

5. előadás Reguláris kifejezések, a reguláris nyelvek jellemzése 1.

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

1. Az ábrán a pontok a szabályos háromszögrács 10 pontját jelentik (tehát az ABC háromszög egyenlőoldalú, a BDE háromszög egyenlőoldalú, a CEF

KOVÁCS BÉLA, MATEMATIKA I.

Ingatlanvagyon értékelés

Áttekintés a felhasznált lineáris algebrai ismeretekről.

Szeminárium-Rekurziók

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

6. AZ EREDMÉNYEK ÉRTELMEZÉSE

Legénytoll a láthatáron II.

gyógypedagógus, SZT Bárczi Gusztáv Egységes Gyógypedagógiai Módszertani Intézmény 2

Eötvös Loránd Tudományegyetem Tanító- és Óvóképző Kar. Útmutató a szakdolgozat szerkesztéséhez

FELADATOK ÉS MEGOLDÁSOK

Reiczigel Jenő,

Load-flow jellegű feladat a villamos rendszerirányításban

Feladatok: 1. Add meg a következ balreguláris nyelvtannak megfelel jobbreguláris nyelvtant!

ZH feladatok megoldásai

Lehet vagy nem? Konstrukciók és lehetetlenségi bizonyítások Dr. Katz Sándor, Bonyhád

Lineáris programozás. Modellalkotás Grafikus megoldás Feladattípusok Szimplex módszer

Debrecen. Bevezetés A digitális képfeldolgozás közel hetven éves múlttal rendelkezik. A kezdeti problémák

Pólya-féle urnamodell II.

MUNKAANYAG. Kálló Marianna. Konyhai garnitúrák készítése. A követelménymodul megnevezése: Lakástextíliák készítése

TARTALOMJEGYZÉK ELŐSZÓ GONDOLKOZZ ÉS SZÁMOLJ! HOZZÁRENDELÉS, FÜGGVÉNY... 69

Hraskó András, Surányi László: spec.mat szakkör Tartotta: Surányi László. Feladatok

1. Adja meg az áram egységének mértékrendszerünkben (m, kg, s, A) érvényes definícióját!

Csődvalószínűségek becslése a biztosításban

Analízisfeladat-gyűjtemény IV.

Gáspár Csaba. Analízis

A MISKOLCI EGYETEM KÉSZLETGAZDÁLKODÁSI SZABÁLYZATA

Miskolci Egyetem GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR. Analízis I. példatár. (kidolgozott megoldásokkal) elektronikus feladatgyűjtemény

Miért tanulod a nyelvtant?

MATEMATIKA ÉRETTSÉGI május 9. EMELT SZINT

Teljes visszalépéses elemzés

Válasz Páles Zsolt opponensi véleményére

Reguláris kifejezések 1.

22. szakkör (Csoportelméleti alapfogalmak 1.)

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

2. Halmazelmélet (megoldások)

Gráfokkal megoldható hétköznapi problémák

2010. Területi és települési tervezés Jogi segédlet. dr. Kiss Csaba EMLA 2010.

Fordítóprogramok. Ajánlott irodalom. Jelölések 2. Jelölések 1. Fordítóprogramok szerkezete. Elıadó: Pozsgai Tamás. Aho-Sethi-Ullmann: Compilers

RavaszNégyzet egy kombinatorikai játék

KOMPLEX KOMMUNIKÁCIÓS ÉS TERMÉSZETTUDOMÁNYI CSOMAG MATEMATIKA TÁMOP /1-2F MATEMATIKA A MINDENNAPI ÉLETBEN 9.

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Lineáris Algebra gyakorlatok

III/1. Kisfeszültségű vezetékméretezés általános szempontjai (feszültségesés, teljesítményveszteség fogalma, méretezésben szokásos értékei.

Érdekes informatika feladatok

Nógrádi PC Suli tanfolyami jegyzete! Kinyomtatni, másolni, sokszorosítani tilos! Kereskedelmi forgalomba nem hozható! TANFOLYAMI JEGYZET

14.) Napirend: A Családsegít és Gyermekjóléti Szolgálat m ködtetésére kiírt közbeszerzési pályázat eredményhirdetése

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

2. Az önkormányzat és költségvetési szervei évi költségvetésének teljesítése

Erdélyi Magyar TudományEgyetem (EMTE

TERMELÉSMENEDZSMENT. Gyakorlati segédlet a műszaki menedzser szak hallgatói számára. Összeállította: Dr. Vermes Pál főiskolai tanár 2006.

Megoldások, megoldás ötletek (Jensen-egyenlőtlenség)

SPEKTROFOTOMETRIAI MÉRÉSEK

Dr. Jelasity Márk. Mesterséges Intelligencia I. Előadás Jegyzet (2008. október 6) Készítette: Filkus Dominik Martin

5. Trigonometria. 2 cos 40 cos 20 sin 20. BC kifejezés pontos értéke?

választással azaz ha c 0 -t választjuk sebesség-egységnek: c 0 :=1, akkor a Topa-féle sebességkör teljes hossza 4 (sebesség-)egységnyi.

Vámosszabadi Község Önkormányzat Képviselő-testületének 3/2014. (V. 30.) önkormányzati rendelete

II. Szabályalapú következtetés

Hossó Aranka Márta. Matematika. pontozófüzet. a speciális szakiskola osztálya számára összeállított. Felmérő feladatokhoz. Novitas Kft.

7. gyakorlat Tervlapok készítése, a terv elektronikus publikálása

AES kriptográfiai algoritmus

Általános tudnivalók

4) Az ABCD négyzet oldalvektorai körül a=ab és b=bc. Adja meg az AC és BD vektorokat a és b vektorral kifejezve!

AUTOMATÁK ÉS FORMÁLIS NYELVEK PÉLDATÁR

Multimédia alkalmazása a gyermekkori nyelvoktatásban A Let s Play English oktató program bemutatása

MATEMATIKA FELADATGYŰJTEMÉNY

hatására hátra lép x egységgel a toll

Átírás:

9. előadás Környezetfüggetlen nyelvek Dr. Kallós Gábor 2015 2016 1 Tartalom Bevezetés CF nyelv példák Nyelvek és nyelvtanok egy- és többértelműsége Bal- és jobboldali levezetések A fák magassága és határa A derivációk és a levezetési fák kapcsolata Elemzések Feladatok 2

Bevezetés, példa Eml.: környezetfüggetlen (CF) nyelvtan: 2-típusú, csak A α alakú levezetési szabályai lehetnek A helyettesítési szabály a környezettől függetlenül bárhol alkalmazható Itt α egy (N T)*-beli szó (ún. mondatforma) Itt nagyobb a szabadság a helyettesítési szabályoknál, mint a reguláris nyelveket generáló nyelvtanoknál Ez viszont több olyan problémát is felvet, amivel eddig még nem találkoztunk Példa Legyen G ar = (N, T, P, S), ahol N = {E, T, F} T = {+, *, (, ), a} S = E P = {E E + T T, T T *F F, F (E) a} Megj.: Itt megszegtük a konvenciót a nemterminális és terminális jelek használatáról (de: ezek a szimbólumok kellenek) (E expression, T term, F factor; az a pedig egy azonosító) A nyelvtan az egy additív és egy multiplikatív operátort tartalmazó, és a zárójelezést megengedő aritmetikai kifejezéseket generálja (van precedencia) Be lehetne vezetni hasonlóan a, / és ^ műveleteket, ill. előjeleket is, egy igazi számítástechnikai nyelv aritmetikai kifejezéseket generáló CF nyelvtana tartalmazza ezeket is (a mi céljainkra most ez kissé szegényes nyelv is elég) 3 CF nyelv példa Példa (folyt.) (Eml.: P = {E E + T T, T T *F F, F (E) a}) A nyelvnek eleme az a + a*a jelsorozat, hiszen egy levezetése E E+ T T+ T F+ T a + T a + T*F a + F*F a + a*f a + a*a De a kifejezést másként is le lehet vezetni (több nemterm. a jobb oldalon) E E+ T E + T*F E + T*a E + F*a E + a*a T + a*a F + a*a a + a*a Okoz-e a több levezetés megléte zavart? Eml.: A CF nyelvek (nyelvtanok) fontos tulajdonsága, hogy a levezetések fa alakban ábrázolhatók A fa gyökere a mondatszimbólum Minden csomópontból annyi él (olyan kötött sorrendben) fut ki, amennyi a szabály jobboldalán található szimbólumok száma, és az élek végein a jobboldal megfelelő szimbólumai találhatók Minden levezetésnek egy levezetési fa felel meg, de egy levezetési fához több levezetés is tartozhat (!) Ha egy kifejezéshez pontosan egy levezetési fa tartozik, akkor a nyelvtant egyértelműnek mondjuk Nevezetes levezetések: mindig a legbaloldalibb N-beli szimbólumot helyettesítjük (bal (oldali) levezetés); hasonlóan jobb (oldali) levezetés (lásd fent) 4

CF nyelv példa, elemzés Megjegyzések Vigyázat, a levezetési fa nem a nyelvtanhoz tartozik egyértelműen, hanem a levezetéshez! (Egy nyelvtannak sok levezetési fája van/lehet) Példa (folyt.) (Eml.: P = {E E + T T, T T *F F, F (E) a}) Most módosítjuk a nyelvtant, legyen P = {E E + E E *E (E) a} Ez a nyelvtan (G ar2 ) ugyanazt a nyelvet generálja, mint fenti párja Két különböző levezetés az a + a*a jelsorozatra E E+ E E + E*E a + E*E a + a*e a + a*a E E*E E*a E + E*a E + a*a a + a*a Itt azonban két különböző levezetési fa adható meg! A két levezetés tehát lényegesen eltérő 5 Egy- és többértelműség A természetes nyelvekre nagyon jellemző a többértelműség/többalakúság Például: Láttam Zsókát egy távcsővel, ill. Az oroszlán simogatása veszélyes Angol: Fruit flies like a banana (Az angolban gyakori: egy szóalak lehet főnév vagy ige is) Itt a szövegkörnyezet vagy a beszédhelyzet segít eldönteni a helyes jelentést A fordítóprogramoktól ilyet nem nagyon várhatunk Egyszerű példák, amikor a Word helyesírás-ellenőrzője nem jelez: Be nem fejezet, fejezett Jelenjen megy, meg Nem sok szó eset, esett Feladatok Mutassuk meg, hogy a G 2' = ({S}, {2, +, *}, {S S + S, S S*S, S 2}, S) nyelvtanban a 2 + 2*2 szónak két lényegesen különböző levezetése és két levezetési fája van! (Segítség: lásd előző oldal) Milyen eredményt ad a kifejezésre ezekben az esetekben a fordító? A csellengő else probléma (nem egyértelmű, hogy az else melyik feltételhez tartozik): if a then if b then do else print Milyen megoldásokat kínálnak erre a problémára az általunk használt programozási nyelvek? 6

Egy- és többértelműség Ha pusztán csak azt vizsgálnánk, hogy generálható-e valamely jelsorozat egy adott nyelvtannal, akkor az eredeti és a módosított nyelvtan egyenértékű (lenne) De a számítástechnikai nyelvészet szempontjából nem közömbös, hogy milyen szintaktikai egységeken keresztül jutottunk el a levezetés során a mondathoz (!) Utolsó példáinkban (G ar2 és G 2' ) nagyon fontos lenne tudni, hogy melyik műveletet kell előbb elvégezni, az összeadást vagy a szorzást! A számítástechnikai nyelvészetben (automatizált működés) a nem egyértelmű nyelvtanok lényegében használhatatlanok G ar2 -nél az egy- és többértelműséget nyelvtanhoz, és nem a nyelvhez kapcsoltuk Itt a generált nyelv egyértelmű nyelvtannal is előállítható Vajon mindig ez a helyzet, vagy lehet a többértelműség nyelvi tulajdonság? Vá.: Léteznek olyan nyelvek, amelyekről bizonyítható, hogy nem lehet őket egyértelmű nyelvtannal generálni Ekkor a többértelműség nyelvi tulajdonság (azaz: nincs CF nyelvnek egyért. nyelvtana) Tehát: az egy- és többértelműség tartozhat nyelvhez és nyelvtanhoz is Példa (nem egyértelmű nyelv; csak a helyettesítési szabályokat soroljuk): S aabx YbCc A aab ab C bcc bc X cx c Y ay a Ez a nyelvtan az L = a i b i c j a j b i c i nyelvet generálja Ezzel a nyelvtannal az a i b i c i alakú kifejezések két lényegesen különböző levezetéssel állíthatók elő Igazolható, hogy nincs olyan egyértelmű CF nyelvtan, ami ezt a nyelvet generálja 7 Egy- és többértelműség Az egyértelműség eldöntése: Sajnos nincs olyan módszer, amelynek segítségével általánosan, minden esetre alkalmazhatóan meg lehetne mondani, hogy egy nyelvtan vagy nyelv egyértelmű-e (B. I. 83.) Persze ettől még sok konkrét esetben a probléma megoldható (egyedi tulajdonságok vagy szerencsés ötletek felhasználásával) Például a G ar nyelvtan egyértelműsége igazolható Visszatekintés: Felmerül-e az egyértelműség/többértelműség kérdése a reguláris nyelveknél? (B. I.) Vá.: Nem! (Mindegy, hogy a redukált- vagy a nem redukált esetet vizsgáljuk.) Itt a levezetési fa nagyon egyszerű, csupán egy szárból áll, amelynek jobb- ill. baloldalán vannak levelek attól függően, hogy bal- vagy jobbreguláris nyelvtanról van-e szó (Eml.: a bal- és jobbreguláris nyelvtanok ekvivalensek) Egy levezetési fához itt csak egy levezetés tartozik (minden mondatformában csak egyetlen nemterminális szimbólum szerepel) Nemdeterminisztikusság: egy mondatnak létezhet több kül. levezetési fája, de a ND megszüntethető (NDA DA konstrukció) Tehát (végül): Minden reguláris nyelv egyértelmű, és szerkeszthető hozzá egyértelmű nyelvtan 8

Bal- és jobboldali levezetések Legyen G = (N, T, P, S) egy tetszőleges CF nyelvtan Definíciók Az α 0 α 1 α 2 α n alakú kifejezéseket levezetéseknek (derivációknak) hívjuk. Ha a deriváció során minden i = 1, 2,, n esetén α i -t úgy kapjuk, hogy α i 1 -ben a bal oldalról nézve legelső nemterminálist helyettesítjük egy rá vonatkozó szabály jobb oldalával, akkor a derivációt bal (oldali) derivációnak hívjuk, és rá az α 0 l α 1 l α 2 l l α n jelölést használjuk. Ha egy deriváció minden lépésében a jobbról nézve legelső nemterminálist helyettesítjük, akkor jobb (oldali) derivációról beszélünk, ennek jelölése α 0 r α 1 r α 2 r r α n. Továbbá, ha α olyan, hogy S * α, akkor α-t mondatformának nevezzük Hasonlóan, ha S l * α (ill. S r * α) áll fent, akkor α-t bal (ill. jobb) mondatformának nevezzük Megj.: a bal (oldali) levezetés technikája a mélységi kereséshez hasonlít Feladat: Nézzük meg az előző fóliákon, hogy melyik levezetés milyen típusú, ill. milyen mondatformát állít elő! Vigyázzunk arra, hogy a bal oldalról első, második, szabály következetes alkalmazása általában nem eredményez bal (oldali) levezetést 9 Példa (a nyelvtan λ-szabályt is tartalmaz) Alapnyelvtan: G 6 = ({S}, {a, b}, {S ab, S ba, S λ, A as, A baa, B bs, B abb}, S) Szó: aababb A (sikeres) levezetés: S ab aabb aabsb aabb aababb aababsb aababb aababbs aababb Az ábra alján látható a levezetett szó (a betűket összeolvassuk, a λ-kat elhagyjuk) Feladatok Nézzük meg, hogyan tudjuk kiolvasni a levezetési fából a közbülső mondatformákat Rajzoljunk fel más levezetési fákat is a nyelvtanhoz Próbáljunk előállítani bal és jobb (oldali) levezetéseket a nyelvtannal 10

Definíció Legyen X (N T). 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ábbi feltételek: Az a fa, amelynek egyetlen szögpontja (csak gyökere) van, és annak címkéje X, eleme D X -nek (ezt a fát X-szel jelöljük) Ha X λ P, akkor az a fa, amelynek gyökere X-szel van címkézve, és gyökerének egyetlen leszármazottja van, aminek címkéje λ, eleme D X -nek (ezt a fát X[λ]-val jelöljük) Ha X X 1 X 2 X n P és t 1 D X1, t 2 D X2,, t n D Xn (gyermek fák), akkor az a fa, amelynek gyökere X-szel van címkézve, és a gyökérből n él indul rendre a t 1, t 2,, t n fák gyökeréhez, eleme D X -nek (ezt a fát X[t 1, t 2,, t n ]-nel jelöljük) Ha X T, akkor a 2. és 3. feltételek soha nem teljesülnek, ekkor tehát D X = {X} (Terminálisból már nem lehet levezetni semmit) Megjegyzések A derivációs fa leveleihez T-beli vagy N-beli szimbólumokat, közbülső csúcsaihoz pedig N-beli jeleket rendelünk Ha minden levélelem terminális, akkor befejezett levezetésről beszélünk A levezetési fákat szintaxisfának is nevezzük (szintaktikai elemzés) Feladatok Rajzoljuk le a definícióban szereplő levezetési fákat! Rajzoljuk le a következő módon adott levezetési fákat (a G ar nyelvtanhoz): t 1 = E[T[T[F], *, F[(, E, )]]] t 2 = F[(, E[E[T[F[a]]], +, T[F[a]]], )] Rajzoljuk le ugyanezen nyelvtanhoz az a*(a + a) + a levélelemeket tartalmazó levezetési fát! (Cs. Z. 32.) 11 Definíció Legyen t egy X gyökerű levezetési fa. A t fa magasságát h(t)-vel, határát pedig fr(t)-vel jelöljük és az alábbi módon definiáljuk: Ha t = X, akkor h(t) = 0 és fr(t) = X Ha t = X[λ], akkor h(t) = 1 és fr(t) = λ Ha t = X[t 1, t 2,, t n ], akkor h(t) = 1 + max{ h(t i ) 1 i n} és fr(t) = fr(t 1 ) fr(t 2 ) fr(t n ). Azaz: Egy t levezetési fa esetén h(t) a t-ben levő olyan utak hosszának a maximuma, amelyek t gyökerétől annak valamely leveléig vezetnek, fr(t) pedig az az (N T)*- beli szó, amelyet t leveleinek balról jobbra történő leolvasásával kapunk Megj.: h(t)-t a levezetési gráf mélységének is nevezzük Példa Az előző feladatban szereplő t 1 és t 2 fákra h(t 1 ) = 3, fr(t 1 ) = F*(E), h(t 2 ) = 5 és fr(t 2 ) = (a + a) Feladatok Határozzuk meg az előző oldalakon szereplő további levezetési fák határát és magasságát! Térjünk vissza a 2. slidesor levezetési fáira (27. és 28. slide), és ott is végezzük el ugyanezt a feladatot (2-es, 2.5-es, 3-as típusú nyelvtanok) Adjunk meg az előző példák alapján 0, 1 és 2 magasságú levezetési fákat! A levezetések és a levezetési fák közötti szoros kapcsolatot mutatja a következő tétel 12

Tétel: Tetszőleges X (N T) és α (N T)* esetén X * α akkor és csak akkor áll fent, ha van olyan t D X levezetési fa, amelyre fr(t) = α Bizonyítás (F. Z.) a) A feltétel szerint ekkor X n α teljesül valamely n 0-ra. A jobb oldal igazolása: n szerinti indukcióval. Az n = 0 esetben X = α. Itt az egyetlen szögpontú t = X fa megfelelő, mert erre t D X és fr(t) = X (= α). Legyen most n 1, és tfh. az állítás m n-re teljesül. Tegyük fel továbbá, hogy X n+1 α. Ekkor X X 1 X 2 X k n α 1 α 2 α k = α, ahol teljesülnek a következők: X X 1 X 2 X k egy P-beli szabály, és minden 1 i k esetén X i n i α i, ahol n i n (ezen felül n = n 1 + n 2 + + n k is teljesül). Mivel n i n, az indukciós feltevés miatt 1 i k-ra van olyan t i D X, hogy fr(t i ) = α i. Legyen t = X[t 1, t 2,, t k ]. A levezetési fa definíciója miatt t D X, a magasság és a határ definíciója miatt pedig fr(t) = fr(t 1 ) fr(t 2 ) fr(t k ) = α 1 α 2 α k = α. b) Tfh. az X gyökerű t derivációs fára teljesül, hogy fr(t) = α. A bal oldal igazolása: t magassága szerinti indukcióval. Legyen h(t) = 0. Ekkor t = X, tehát fr(t) = α = X. Így X * α (= X) teljesül. Legyen most h(t) = n + 1, és tfh. az állítás minden n-nél nem magasabb deriv. fára teljesül. A magasság és a határ definíciója miatt ekkor t = X[t 1, t 2,, t n ], valamilyen k 1-re és t 1 D X1, t 2 D X2,, t n D Xn levezetési fák esetén, és a derivációs fa definíciója miatt X X 1 X 2 X k P is teljesül. Vezessük be az α i = fr(t i ) jelölést minden 1 i k-ra. Ekkor egyrészt α = α 1 α 2 α k, másrészt az indukciós feltevés szerint minden 1 i k-ra X i * α i. Így X X 1 X 2 X k * α 1 α 2 α k = α. 13 Megjegyzések Az előző tételben szereplő X * α levezetéshez általában nem csak egy olyan X gyökerű levezetési fa létezik, amelynek határa α. Példa: Legyenek az A ab Ab A a B b szabályok egy CF nyelvtan szabályai. Ekkor A * ab. Ugyanakkor a t 1 = A[a, B[b]] és t 2 = A[A[a], b] fákra fr(t 1 ) = ab és fr(t 2 ) = ab. Feladat: Rajzoljuk le ezeket a fákat! A tételben szereplő t fából az persze következik, hogy X * α fennáll, de az nem, hogy a levezetés lépései egyértelműen meghatározottak. Példa: A t 1 = E[T[T[F], *, F[(, E, )]]] fa határa F*(E); ez kétféle módon is megkapható: E T T*F F*F F*(E) E T T*F T*(E) F*(E). Egy derivációs fa által reprezentált levezetések egy ekvivalencia-osztályt alkotnak Mindegyikben ugyanaz a mondatforma (szó) van levezetve Az ugyanott megjelenő ugyanolyan nemterminálisra ugyanazt a szabályt alkalmazzák Ez a példákban jól látható A szabályalkalmazások sorrendje lehet különböző 14

Célunk a továbbiakban: minden ekvivalencia-osztályból kiemelni egy reprezentánst, legyen ez például a legbaloldalibb levezetés (ez jó, és mindig létezik) Készen vagyunk? Ha X l * α, akkor X * α is fennáll, mivel minden bal (oldali) levezetés egyúttal levezetés is Ugyanaz érvényes a jobb (oldali) levezetésekre is De fordítva ez már nem igaz, X * α-ból nem következik, hogy X l * α is fenáll Egy legbaloldalibb levezetés persze mindig kijelölhető a fában Gond: A legbaloldalibb levezetés nem biztos, hogy tényleg bal (oldali) levezetés! (És ugyanaz persze a legjobboldalibbra is érvényes) Példa: A G ar nyelvtan esetén E * E + F + T teljesül, de E l * E + F + T és E r * E + F + T nem áll fent Feladat: Ellenőrizzük a példát! Ha csak terminális szavakat engedünk meg a levezetési fa leveleiben, akkor a kijelentés már megfordítható Azaz: teljes, befejezett fa kell! 15 Állítás: Tetszőleges X (N T) és w T* esetén a következő három állítás ekvivalens: X * w X l * w X r * w Bizonyítás A bal és a jobb (oldali) levezetések között fennálló szimmetria miatt elegendő az első és a második állítás ekvivalenciáját igazolni. (Tudjuk: Ha X l * w, akkor X * w, mivel bal (oldali) levezetés egyúttal levezetés is.) Fordítva, tfh. X * w. Ekkor X n w teljesül valamely n 0-ra. A másik oldal igazolása: n szerinti indukcióval. Az n = 0 esetben X = w, ami csak úgy lehet, hogy X T. Így nyilvánvaló, hogy X l * w. Tegyük fel most, hogy a következtetés teljesül minden n-nél nem nagyobb számra, és legyen X n + 1 w. Ekkor ez a deriváció felírható X X 1 X 2 X k n w 1 w 2 w k = w alakban, ahol k 1, X X 1 X 2 X k P és minden 1 i k-ra teljesül X i n i w i, ahol n i n. Így az indukciós feltevés miatt X i n l i w i is fennáll. Ekkor viszont X l X 1 X 2 X 3 X k l w 1 X 2 X 3 X k l w 1 w 2 X 3 X k l l l w 1 w 2 w 3 w k = w. A G nyelvtan által generált nyelv fogalma a jelen részben definiált fogalmak segítségével is megadható L(G) = {w T* S * w} = {w T* S l * w} = {w T* S r * w} L(G) = {fr(t) t D S, fr(t) T*} 16

Elemzések Az elemzés (parsing) feladatáról A cél a nyelvtani struktúra felfedezése/felderítése, ez a fordítás fontos része Parsing kifejezés eredete: parts of speech (latin megfelelő) A feladat: adott x T* szóhoz konstruáljunk egy olyan derivációs fát, amit a nyelvtan elő tud állítani A feladat (könnyű) része lehet egy ellenőrzés is, hogy x valóban terminális szó-e Két alapvető megközelítés: felülről-lefelé (top-down) és alulról-felfelé (bottom-up) Mindegyiken belül: többféle egyedi módszer (algoritmus) Felülről-lefelé elemzés S-ből kiindulva, a szokásos (ismert) módon felépítjük a levezetési fát Ehhez általában sok különböző mondatformát és mondatot kell előállítani Alulról-felfelé elemzés Az x szóból kiindulva felfelé építjük fel a fát, végül el kell jutni S-ig Egyik lehetséges megvalósítás: a redukciós módszer Felcseréljük a szabályok jobb és bal oldalát, így a szabályokból (produkció) redukciókat kapunk Ez sok esetben sima ügy, de adódhatnak nehézségek (eml.: probléma adódik a λ-szabályokkal) 17 Elemzések Egyszerű példa a redukciós módszer alkalmazására Alapnyelvtan: G 3 = ({S}, {a, b}, {S asb, S ab}, S), szó: aaabbb A fordított nyelvtan szabályai: P f = {asb S, ab S} A folyamat: x-ben keresünk egy olyan részszót, amire alkalmazható valamelyik szabály Alkalmazzuk a megfelelő szabályt Az új x' szóval végrehajtjuk ugyanezt stb. Példánkban egyértelmű a szabályok alkalmazása, mindegyik lépésben csak egy választható 18

Elemzések Redukciós módszer (második példa) Alapnyelvtan: G 6 = ({S}, {a, b}, {S ab, S ba, S λ, A as, A baa, B bs, B abb}, S), szó: aababb A fordított nyelvtan szabályai: P f = {λ S, ab S, ba S, as A, baa A, bs B, abb B} A redukció nyilván a λ S szabállyal indul, hogy alkalmazhassuk majd az as A vagy a bs B szabályok valamelyikét Csakhogy, ha S-t pl. az első vagy második a után helyezzük el, akkor a fa nem lesz felépíthető Feladat: Ellenőrizzük ezt! (Mi persze tudjuk, hogy aababb aababbs aababb aababsb aababb aabb ) További fontos kérdés: aababb-nél ab S, abb B is választható lenne, hogyan döntünk? Itt már nem egyértelmű a szabályok alkalmazása! Megoldás lehet a CF nyelvtanok megfelelő átalakítása (ld. később, 12. slidesor) λ mentesítés A jobb oldalon legfeljebb kettő hosszú szabályok legyenek (Chomsky-féle normálforma) Külön köszönet: a hivatkozott jegyzetek szerzőinek 19 Ajánlott irodalom Fülöp Zoltán: és szintaktikus elemzésük, Polygon, Szeged, 2001 Dömösi Pál és társai: és automaták, Elektronikus jegyzet, 2011 Bach Iván:, Typotex kiadó, Budapest, 2002 Csörnyei Zoltán: Fordítóprogramok, Typotex kiadó, Budapest, 2009 Alan P. Parkes: A Concise Introduction to Languages and Machines, Springer, London, 2008 20