Formális nyelvek és automaták

Hasonló dokumentumok
Formális nyelvek és automaták

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Formális nyelvek és automaták

Automaták és formális nyelvek

Atomataelmélet: A Rabin Scott-automata

Formális nyelvek - 5.

MintaFeladatok 2.ZH Megoldások

MintaFeladatok 1.ZH Megoldások

Diszkrét matematika 1. estis képzés

MintaFeladatok 1.ZH Megoldások

ZH feladatok megoldásai


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

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

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

2010. október 12. Dr. Vincze Szilvia

Rekurzió. Dr. Iványi Péter

Numerikus módszerek 1.

Feladatok. BNF,EBNF,szintaxisgráf

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Regionális forduló november 18.

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések

A C programozási nyelv II. Utasítások. A függvény.

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Véges automaták, reguláris nyelvek

Magasabbfokú egyenletek

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

4. Programozási nyelvek osztályozása. Amatőr és professzionális

Emlékeztető: LR(0) elemzés. LR elemzések (SLR(1) és LR(1) elemzések)

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Teljes visszalépéses elemzés

Példák. Ismert a római számok halmaza, amely intuitív szintaxissal rendelkezik, hiszen pl.

Formális nyelvek - 9.

Máté: Assembly programozás

Diszkrét matematika 1.

V. Békés Megyei Középiskolai Matematikaverseny 2012/2013 Megoldások 11. évfolyam

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

C programozási nyelv

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

4. A kézfogások száma pont Összesen: 2 pont

Térinformatikai algoritmusok Elemi algoritmusok

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

Programozás alapjai. 2. előadás

az Excel for Windows programban

10. fejezet Az adatkapcsolati réteg

Szkriptnyelvek. 1. UNIX shell

Matematika III. harmadik előadás

Első belépés az Office 365 rendszerbe

FUNKCIONÁLIS PROGRAMOZÁS

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

Térinformatikai algoritmusok Elemi algoritmusok

BASH SCRIPT SHELL JEGYZETEK

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Listák, szótárak, fájlok Listák, szótárak, fájlok

Egyenletek, egyenlőtlenségek VII.

M4 TÁBLÁZATKEZELÉS ALAPJAI

Kombinatorika. Permutáció

Forráskód formázási szabályok

A C programozási nyelv III. Pointerek és tömbök.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Programozási módszertan. Mohó algoritmusok

Chomsky-féle hierarchia

Arany Dániel Matematikai Tanulóverseny 2014/2015-ös tanév első (iskolai) forduló Haladók II. kategória

CSS3 alapismeretek. Bevezetés a CSS-be. Mi is az a CSS? Alkalmazási formái, szintaxisa

Java II. I A Java programozási nyelv alapelemei

Készítette: Nagy Tibor István

Írásjelek helyes szedése. Szabó Csaba. Mondatvégi írásjelek. Központozás. Kötőjelfélék. Szabó Csaba november 18.

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

QGIS Gyakorló. 1. kép: Koordináta levétel plugin bekapcsolása.

A C programozási nyelv III. Pointerek és tömbök.

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

3. Egyenletek, egyenletrendszerek, egyenlőtlenségek

dr.xlsx A programról Szövegműveletekhez használható függvények

JELENTKEZÉSI LAP. Név: Osztály: cím (továbbjutásról itt is értesítünk): Iskola: Felkészítő tanár: cím:

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Egy újabb látószög - feladat

3. A megoldóképletből a gyökök: x 1 = 7 és x 2 = Egy óra 30, így a mutatók szöge: 150º. 3 pont. Az éves kamat: 6,5%-os. Összesen: 2 pont.

A zsebrádiótól Turán tételéig

Szövegek C++ -ban, a string osztály

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Határozatlan integrál

Programozás C és C++ -ban

Algoritmusok és adatszerkezetek 2.

Számelmélet Megoldások

2014. évi Bolyai János Megyei Matematikaverseny MEGOLDÁSI ÉS ÉRTÉKELÉSI ÚTMUTATÓ 9. osztály

Novell és Windows7 bejelentkezési jelszavak módosítása

Átírás:

2. megszorított grammatika/nyelv: Formális nyelvek és automaták Nagy Sára gyakorlatai alapján Készítette: Nagy Krisztián 4. gyakorlat + KES szabály mentesítés: - Új kezdő szimbólum, melyből levezethető az S és az ε (KES szabály miatt): - Azon nem terminálisok tartoznak ebbe a halmazba, melyekből közvetlenül levezethető ε (Csak az típusú) Azon nem terminálisok tartoznak ebbe a halmazba, amelyek valamely halmazban levő nem teminálissal együtt szerepelnek a grammatikában, továbbá a halmaz elemei is.... (Példa: ) Megjegyzés: Adódik, hogy maximum annyi H halmaz lehet, amennyi az adott grammatikában található nem terminálisok száma. Folyamat:, akkor az alábbi átalakítást kell elvégezni: (kihagyjuk belőle az -t)

Feladatok: (Epszilon mentesítés) 1. Feladat: Írjuk fel a H halmaz elemeit. 1. lépés: halmaz felírása: Nézzük meg miből vezethető le közvetlen az epszilon. Hol van epszilon szabály. Ezért 2. lépés: halmaz felírása: Nézzük meg hol található olyan szabály, melyből egy másik szabállyal levezethető az epszilon. Továbbá ne felejtsük el, hogy az előző halmaz elemei is beletartoznak ebbe a halmazba. A kékkel jelölt nem terminálisok is bekerülnek a halmazba, abban az esetben, ha behelyettesítve egy újabb epszilon szabályt kapunk. Jelen esetben az alábbi szabályokat kell megvizsgálni: eset nem problémás, mivel B mellett egy terminális áll, ezért nem kapunk egy újabb epszilon szabályt. Ennek tudatában pedig se problémás, mivel A olyan szabály, ami nem vezet epszilonra, így ez a szabály se fog epszilonra vezetni. Ezek alapján: Most pedig alkalmazzuk az mentes formában a nyelvet: mentesítés / Folyamat pontjában leírt szabályunkat és írjuk fel epszilon Lényegében ez azt jelentette, hogy szabályba kell foglalni azokat az eseteket, amikor a elemek eltűnnének. halmaz beli

és ezzel az áttalakítással elértük, hogy megszorított alakú legyen. 2. Feladat: Írjuk fel a H halmazt: miatt. miatt. (Miért? Azért, mert -ra az szabályt alkalmazzuk mind a két A-ra, akkor -t kapnánk) miatt. (Miért? Azért, mert -ra az szabályt alkalmazzuk mind a két A-ra, akkor -t kapnánk, továbbá ha az szabályt alkalmaznánk A-ra, akkor -t kapnánk.) Mivel 3 db nem terminális található a szabályban, így biztos, hogy Mivel a kezdő szimbólum is be került a halmazunkba, így meg kell vizsgálnunk, hogy áll-e a kezdő szimbólum valahol a szabályok jobb oldalán. Amennyiben áll, úgy új kezdő szimbólumot kell bevezetni (KES szabály), majd alkalmazzuk az mentesítés / Folyamat pontjában leírt szabályunkat. Abban az esetben, ha nem áll a kezdő szimbólum valamelyik szabályunk jobb oldalán, akkor simán alkalmazzuk az mentesítés / Folyamat pontjában leírt szabályunkat és készen vagyunk. A mi esetünkben sajnos miatt, áll kezdő szimbólum a szabályunk jobb oldalán, így új kezdő szimbólumot vezetünk be. Azért kell bevezetnünk, hogy ne veszítsük el magát az -t, mivel az üres szó is levezethető a jelenlegi nyelvünkből.

Így a szabályunk: (KES szabály miatt) (Ki kellett egészítenünk azokkal az esetekkel, amikor vagy A-t vagy B-t tüntetjük el az miatt) (Azért nincs A a szabály jobb oldalán, mert folyton önmagába képező szabály. ) 3. Feladat: Írjuk fel a H halmazt: Mit csináltunk? Mivel a kezdő szimbólum benne van a H halmazban és a szabályunk jobb oldalán is előfordult, ezért új kezdő szimbólumot vezettünk be, hogy ne vesszen el az üres szavunk (KES szabály). Ezek után pedig hozzá adtuk azokat a lehetőségeket, amikor az adott S kiesik. - ( esetén szabály megtiltásra kerül, de a KES szabály nem! 3. típusú grammatikák ε-mentesítése Emlékeztető: 3. típusú grammatika szabályrendszere: Most: ( záró szabály ) Működik a 2-es típusú nyelveknél vett ε-mentesítése, mivel ha megtiltjuk az epszilon szabályt, mikor eltöröljük B-t, akkor pont a záró szabályt kapjuk.

A következő példa egy második típusú nyelv és ε mentesített változatát tartalmazza, majd ugyan ez a nyelv harmadik típusúra átírva és ε mentesítve. Szemléltetés, hogy ugyan úgy működik a mentesítés mind a két nyelvtípusnál. Második típusú: ε mentesített: Harmadik típusú: ε mentesített: BNF (Backus Naur forma) Szintaxisa: <fogalom> nem terminálisokra hivatkozik (< >) ::= elválasztja a szabály jobb és bal oldalát a terminálisok karakterrel elválasztott sorozatok (vagy) Megjegyzés: terminális nem szerepelhet a szabály bal oldalán. (Egyéb dolgok a BNF-ről: http://hu.wikipedia.org/wiki/backus%e2%80%93naur_forma )

Feladatok: (BNF-es) 1. Feladat: Írjuk fel az alábbi grammatikát BNF-el! <azonosító> ::= <betű><vége> <vége> ::= ε <betű><vége> <számjegy><vége> <betű> ::= a b z <számjegy> ::= 0 1 9 2. Feladat: Írjuk le a természetes számok halmazát BNF-el! <természetes_számok> ::= 0 <nem_nulla><vége> <nem_nulla> <nem_nulla> ::= 1 2 9 <vége> ::= <számjegy><vége> <számjegy> <számjegy> ::= 0 1 2 9 3. Feladat: Programozási nyelvekben: <kif> ::= <tag> <tag>+<tag> <tag> ::= <faktor> <faktor>*faktor> <faktor> ::= a (<kif>) Megjegyzés: a adat/ szám Terminálisok: Egy fordító program dolga leellenőrizni, hogy jó-e egy adott szintaxis alapján az adott kifejezés. kifejezés helyes-e a fenti szintaxissal? Levezethető, tehát jó a kifejezés. Grammatikával felírva: kifejezés helyes-e a fenti szintaxissal? Nem helyes a második + miatt. Ha vagy lenne akkor viszont helyes lenne.

4. Feladat: Írjuk le BNF-el a függvényeket. Instrukciók: - azonosítóval kezdődik - 1 vagy több argumentuma van - az argumentumokat vessző választja el - az argumentum lehet azonosító vagy függvény kifejezés - az azonosító betűkből áll Például: Megoldás: <függvény> ::= <azonosító>(<argumentumok>) <argumentumok> ::= <argumentum> <argumentumok><argumentum> <argumentum> ::= <azonosító> <függvény> <azonosító> ::= <betű> <betű><azonosító> <betű> ::= a b z Gyakorló feladat: BNF-es 3. feladat szintaxisa alapján jó kifejezés-e az? Beadható feladat: Írjuk le BNF-el az e-mail címet az alábbi instrukciók alapján! - két részből áll, melyet @ választ el - mind a két részben szavak találhatóak - a szavak. al vannak elválasztva - az első részben legalább egy szó van (amennyiben több, ponttal vannak elválasztva) - a második részben legalább két szó van (szintén ponttal elválasztva) - a vége kettő vagy három karakterre végződhet - a szavak csak betűket tartalmazhatnak