Formális nyelvek Aszlós László, Mihálydeák Tmás Számítógéptudományi Tnszék Deember 6, 2017 Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 1 / 17 Problémfelvetés Az informtikábn ngyon gykori feldt z elemzés és generálás: A különféle progrmok/számítógépek közti dtforglom különféle szbványokt hsznál (HTML, XML, json, YAML, stb). Ezért küldő oldlon generálni kell ilyen dtokt, fogdó oldlon pedig elemezni. A forrásprogrmból futtthtó kód fordítás során készül el. A fordítás első része lexiki, szintktiki és szemntiki elemzés, melyet kódgenerálás követ. (Interpreter esetén z utóbbi végrehjtásr serélődik.) Például űrlpok esetén: A bevitt dt vlóbn egy emil ím? A jelszó trtlmz nem betű krktert? Generált biztonságos jelszó feljánlás. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 2 / 17
A formális nyelv definíiój Legyen Σ egy véges nemüres hlmz! A Σ elemeit betűknek, mgát hlmzt hlmzt ábéének nevezzük. Σ + Σ betűiből álló w = 1... n (n 1, i Σ) lkú véges hosszú soroztok, Σ feletti véges, nem üres szvk hlmz. A w Σ + szó hosszán benne szereplő betűk számán értjük ( 1... n = n). Az üres szót (melynek nins egy betűje sem, és hossz definíió szerint 0) z ε jelöli. A Σ = Σ + {ε} hlmzt Σ feletti szvk hlmzánk nevezzük. A Σ feletti szvk egy tetszőleges L hlmzát Σ ábéé feletti (formális) nyelvnek nevezzük (L Σ ). Az üres nyelvet, melynek nins egy szv sem, L jelöli. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 3 / 17 Műveletek formális nyelvekkel Legyenek L, L 1 és L 2 Σ ábéé feletti nyelvek! A következő műveleteket definiáljuk: L 1 L 2 = {x x L 1 vgy x L 2 } (unió); L 1 L 2 = {x x L 1 és x L 2 } (metszet); L 1 L 2 = {xy x L 1 és y L 2 } konktenáió (összefűzés) Htványozás, zz ismételt (önmgávl vett) konktenáió: L 0 = {ε} L n+1 = L n L Trnzitív lezárt (Kleene-sillg művelet): L = i=0 Li, zz L = {x 1 x 2... x k k 0 és x i L} Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 4 / 17
Megjegyzés L ε = {ε}, hol L ε = {ε}. L = {ε}, mert definíió szerint L0 = {ε} Példák Legyen Σ = {, b, }, L 1 = {, bb, } és L 2 = {, b}. Ekkor L 1 L 2 = {,, bb, b, }; L 1 L 2 = {, b, bb, bbb,, b}; L 1 = {ε,, bb,,, bb,, bb, bbbb, bb,... }; Σ önmg, mint ábéé feletti nyelv, nyelv trnzitív lezártj, zz Σ éppen Σ ábéé felett szvk hlmzát dj meg. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 5 / 17 Formális nyelvek megdás Felsorolássl (mint z előző példábn): szigorún véve ekkor sk véges sok szv lehet nyelvünknek. Generálássl (speifikus induktív definíióvl): genertív grmmtikák (Chomsky féle nyelvosztályok). Automtávl: z utomt eldönti, hogy egy szó eleme-e nyelvünknek. A nyelv szvink hlmzát leíró kifejezések megdásávl: például reguláris kifejezések rendszere. Megjegyzés A felsorolt lehetőségek különböző tuljdonsággl rendelkező nyelvek megdásár lklmsk. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 6 / 17
Reguláris kifejezések Feldt Legyen Σ = {0, 1} egy ábéé. Adjuk meg (fejezzük ki) más (lehetőség szerint egyszerűbb) nyelvekkel zt z L nyelvet, mely olyn szvkból áll, mely trtlmzz 010 szót! Megoldás szvk szintjén : H w 1, w 2 Σ, kkor w 1 010w 2 L. De: hogyn állíthtjuk elő w 1 és w 2 szvkt? Tudjuk, hogy nem üres esetben w 1 és w 2 0 és z 1 krktereket trtlmzz. Legyen L 0 = {0} és L 1 = {1}, ekkor L 0 L 1 = {0, 1}, és (L 0 L 1 ) éppen w 1 és w 2 szvk lehetséges lkjit trtlmzz (már z üres szóvl kiegészítve). H L 010 = {010}, kkor L = (L 0 L 1 ) L 010 (L 0 L 1 ). L 0, L 1, L 010 egyszvs nyelvek! (Az egyszvs nyelveket lpnyelveknek is nevezik.) Másként leírv: (0 + 1) 010 (0 + 1) Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 7 / 17 Példák reguláris kifejezésekre Példák Adjuk meg reguláris kifejezéssel zt nyelvet {0, 1} ábéé felett, mely zon szvkból áll, melyek trtlmzzák részszóként 000 vgy z 111 szót! (0 + 1) (000 + 111) (0 + 1) Adjuk meg reguláris kifejezéssel zt nyelvet {0, 1} ábéé felett, mely zon szvkból áll, melyekben z 1-esek szám oszthtó 5-tel! 0 + (0 1 0 1 0 1 0 1 0 1 0 ) Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 8 / 17
Reguláris kifejezések Legyen Σ egy tetszőleges ábéé úgy, hogy, ε, +,,, (, ) / Σ. A Σ ábéé feletti reguláris kifejezések R hlmzát z lábbi induktív definíió dj meg: 1 R 2 ε R 3 H Σ, kkor R. 4 H R 1 R és R 2 R, kkor (R 1 + R 2 ) R. 5 H R 1 R és R 2 R, kkor (R 1 R 2 ) R. 6 H R R, kkor R R. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 9 / 17 Reguláris kifejezések áltl leírt/felismert nyelv Legyen R Σ ábéé feletti reguláris kifejezések hlmz és R R. A R reguláris kifejezés áltl leírt/felismert nyelvet z lábbi induktív definíió dj meg: 1 H R =, kkor L R = L. 2 H R = ε, kkor L R = L ε = {ε}. 3 H R =, Σ, kkor L R = {}. 4 H R = (R 1 + R 2 ), kkor L R = L R1 L R2. 5 H R = (R 1 R 2 ), kkor L R = L R1 L R2. 6 H R = R 1, kkor L R = L R 1. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 10 / 17
Reguláris nyelv A Σ ábéé feletti L nyelv reguláris, h létezik egy olyn Σ ábéé feletti R reguláris kifejezés, hogy L R = L Tétel H Σ ábéé feletti L 1 és L 2 nyelvek regulárisk, kkor z L 1 L 2, L 1 L 2, L 1 \L 2, L 1 (= Σ \L 1 ), L 1 L 2 és L 1 nyelvek is regulárisk. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 11 / 17 Véges utomták A legegyszerűbb utomták: szemléletesen sk olvsni tud és nins memóriáj. Állpottere véges (mást nem is ngyon tudunk ról mondni). A véges utomt egy rendezett ötös: A = Q, Σ, δ, q 0, F, hol Q (belső) állpotok véges hlmz, Σ (külső) véges ábéé (z elemzendő jelsorozt ábééje), δ : Q Σ Q átmenetfüggvény, q 0 Q kezdőállpot és F Q z elfogdó állpotok hlmz. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 12 / 17
Megjegyzés. Az átmenetfüggvény zt mondj meg, hogy egy dott állpotbn egy dott krkter beolvsásánk htásár milyen új állpotot vesz fel z utomt. H egy krktert elolvstunk, kkor következő krkter válik érvényessé (z olvsófej ltt szlg egy krkternyit elmozdul). Az utomt z elemzett jelsoroztot elfogdhtj, h jelsoroztot végig olvst és z utolsó krkter elolvsás után elfogdó állpotbn vn. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 13 / 17 Legyen A = Q, Σ, δ, q 0, F, hol Q = {q 0, q 1, q 2, q 3, q r } (belső) állpotok véges hlmz; Σ = {, b, } (külső) véges ábéé (z elemzendő jelsorozt ábééje); δ(q 0, ) = q 1, δ(q 1, ) = q 1, δ(q 1, b) = q 2, δ(q 2, b) = q 2, δ(q 2, ) = q 3, δ(q 3, ) = q 3 és δ értéke q r egyébként (z átmenetfüggvény); q 0 Q kezdőállpot; F = {q 3 }, zz q 3 z elfogdó állpot. b q strt 0 q b 1 q 2 q 3 i b j k, hol i, j, k > 0 Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 14 / 17
szerint egy állpotból z ábéé minden betűjéhez kell rendelni egy állpotot (δ teljes függvény). A rjz egyszerűbbé tétele érdekében hiányzó nyilk egy nem jelölt rontott állpotb muttnk, honnn minden inputr ugynide jutunk vissz. Az ábrán kiegészítés pirossl lett kiemelve. b q strt 0 q b 1 q 2 q 3 b,,b q r,b, Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 15 / 17 Grfikus ábrázolásbn belső állpotokt körökkel, z átmenetfüggvényt nyilkkl és rájuk írt külső ábéé betűivel jelöljük. A kezdőállpot egy bemenő, felirt nélküli nyíl jelzi, míg végállpotokt duplán rjzolt körök. Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 16 / 17
Elfogdó utomt A = Q, Σ, δ, q 0, F utomt és w = 1 2... n Σ szó esetén zt mondjuk, hogy z utomt elfogdj (felismeri) w szót, h δ(... (δ(δ(q 0, 1 ), 2 )... ), n ) F. Legyen A = Q, Σ, δ, q 0, F egy utomt! H L = {w Σ A elfogdj w-t}, kkor zt mondjuk, hogy z A elfogdj (felismeri) z L nyelvet. Jelölése L = L A Tétel A véges utomták reguláris nyelveket fogdják el, zz h L reguláris nyelv, kkor vn olyn A utomt, hogy L = L A Aszlós, Mihálydeák Formális nyelvek Deember 6, 2017 17 / 17