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

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

Formális nyelvek és automaták

Formális nyelvek és automaták

Fordítóprogramok (A,C,T szakirány) Feladatgy jtemény

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

Adatszerkezetek 7a. Dr. IványiPéter

Automaták és formális nyelvek

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

Rekurzió. Dr. Iványi Péter

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

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:

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

A számítógépes nyelvészet elmélete és gyakorlata. Formális nyelvek elmélete

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

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:

FORMÁLIS NYELVEK ÉS FORDÍTÓPROGRAMOK. LABORGYAKORLATOK

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Bisonc++ tutorial. Dévai Gergely. A szabály bal- és jobboldalát : választja el egymástól. A szabályalternatívák sorozatát ; zárja le.

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

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

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

BASH SCRIPT SHELL JEGYZETEK

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programok értelmezése

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Formális Nyelvek - 1. Előadás

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

Fordítóprogramok. Aszalós László szeptember 7.

Programozási nyelvek (ADA)

Java programozási nyelv

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

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

Formális Nyelvek - 1.

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

3 A C programozási nyelv szintaktikai egységei

1. gyakorlat

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Programozás alapjai Bevezetés

Atomataelmélet: A Rabin Scott-automata

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

Algoritmizálás és adatmodellezés tanítása 1. előadás

Web-programozó Web-programozó

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

1. előadás Matematikai és nyelvi alapok, Szintaktikai vizsgálat

Bevezetés a C++ programozási nyelvbe

Felvételi tematika INFORMATIKA

Nyelv hatványa: Legyen L egy nyelv, nemnegatív egész hatványai,,. (rek. definició) Nyelv lezártja (iteráltja): Legyen L egy nyelv. L nyelv lezártja.

Kiterjesztések sek szemantikája

6. BASH programozás I.

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

2018, Diszkrét matematika

Véges automaták, reguláris nyelvek

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

BASH script programozás II. Vezérlési szerkezetek

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

A félév során előkerülő témakörök

A programozás alapjai 1 Rekurzió

Java II. I A Java programozási nyelv alapelemei

Informatika 1 2. el adás: Absztrakt számítógépek

ME Szoftverfejlesztés

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Elemi adatszerkezetek

Algoritmusok - pszeudókód... 1

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

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

Modellező eszközök, kódgenerálás

Széchenyi István Szakképző Iskola

Máté: Assembly programozás

ELEMI PROGRAMOZÁSI TÉTELEK

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

22. GRÁFOK ÁBRÁZOLÁSA

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

Algoritmusok és adatszerkezetek gyakorlat 07

AWK programozás, minták, vezérlési szerkezetek

A C programozási nyelv I. Bevezetés

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

A C programozási nyelv I. Bevezetés

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Tartalomjegyzék Algoritmusok - pszeudókód

Bevezetés a programozásba I.

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

FUNKCIONÁLIS PROGRAMOZÁS

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

MintaFeladatok 2.ZH Megoldások

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

ALGEBRAI NYELV- ÉS KÓDELMÉLET. Babcsányi István

Az algoritmusok alapelemei

LIMBAJE FORMALE ȘI COMPILATOARE Lucrări de laborator FORMÁLIS NYELVEK ÉS FORDÍTÓPROGRAMOK

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Átírás:

Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető, leírt nyelv, EBNF, szintaxis-diagram, EP programozási nyelv, Pascal programozási nyelv Feladatok jellege: Egyszerűbb programnyelvi konstrukció BNF leírására, majd átírása EBNF-re, az EP megadása EBNF-fel (előre kiadott lapon), program készítés EP-ben, a PASCAL szintaxis-gráfokon alapuló leírásának áttekintése (előre kiadott lapokon), bizonyos konstrukciók átírása EBNF-re 1 Dr Hunyadvári László, Manhertz Tamás: Automaták és formális nyelvek http://asztinfeltehu/~hunlaci/bookpdf 2 Fülöp Zoltán: Formális nyelvek és szintaktikus elemzésük (Polygon) 3 Bach Iván: Formális nyelvek (Typotex) 4 Gyakorlatfóliák (ahogy a gyakorlat előrehalad) http://wwwcseltehu/~tichlerk 2008/09 I félév Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 1 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 2 / 21 Fordítóprogramok Szintaktikai helyesség A formális nyelvek elméletével az informatikusok többek között a fordítóprogramok működésének megértése miatt foglalkoznak Mit csinál egy fordítóprogram? ellenőrzi, hogy helyes-e a program ha helyes lefordítja Mit értünk az alatt, hogy helyes? Teljesít bizonyos szintaktikai feltételeket (Például adott kulcsszóval kezdődik, adott kulcsszavakat használ adott szabályok szerint, az utasítások között valamilyen elhatároló jel áll, a végén egy adott jel szerepel) Ha egy program teljesíti a szintaxisban megadott szabályokat szintaktikailag helyesnek nevezzük A szintaktikai elemzés alapfeladata: Döntsük el egy programról, hogy szintaktikailag helyes-e A programozási nyelvek helyett ennél absztraktabb fogalommal, a formális nyelvekkel fogunk foglalkozni Tárgyaljuk nyelvek megadásának módszereit melyek közül a legfontosabbak a generatív nyelvtanok és az automaták lesznek, osztályozzuk õket és megpróbálunk a fenti problémára is válaszolni Történeti megjegyzés: A matematikai nyelvészet alapjait 1956-ban Noam Chomsky rakta le Az eredeti motiváció a természetes nyelvek gépi fordítása volt Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 3 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 4 / 21

Példa a szintaxis leírására: BNF BNF definíciója BNF: Backus-Naur Form John Backus, Peter Naur ALGOL 60 A BNF egy széles körben használt metanyelv melynek segítségével szabályok alkothatók meg (például egy programozási nyelv szabályai) Építőkövei: név (fogalmak vagy más néven nemterminálisok) ::= a szabály bal- és jobboldalának elválasztászára szolgáló jel a definiálandó nyelv karakterkészlete, a sztringek alkotóelemei (terminálisok) Szabályok Egy szabály bal- és jobboldalból áll, köztük ::=, baloldalon pontosan 1 fogalom, jobboldalon terminálisok és fogalmak sorozata lehet Példa BNF-re: azonosító Szabályok azonosító ::= betű azonosító ::= betű azonosítóvég azonosítóvég ::= betű azonosítóvég ::= számjegy azonosítóvég ::= betű azonosítóvég azonosítóvég ::= számjegy azonosítóvég betű ::=a betű ::=z számjegy ::=0 számjegy ::=9 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 5 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 6 / 21 Példa BNF-re: azonosító Levezetés Példa BNF-re: azonosító Csoportosítás Milyen értelemben ír le azonosítót? Pl a12 azonosító-e? azonosító betű azonosítóvég a azonosítóvég a számjegy azonosítóvég a1 azonosítóvég a1 számjegy a12 Minden lépésben egy fogalmat helyettesítettünk egy olyan szabály jobboldalával, melynek a baloldalán az adott fogalom áll Ekkor azt mondjuk, hogy az azonosító fogalomból levezethető a12 Terminálisok egy u sorozata helyes azonosító u előállítható az azonosító fogalomból a fenti helyettesítési mechanizmussal, azaz létezik legalább egy levezetése az azonosító fogalomból Egyszerűbb írásmód: alternatívák, kiemelések (csoport) azonosító ::= betű betű azonosítóvég azonosító ::= betű { azonosítóvég } azonosítóvég ::= betű számjegy betű azonosítóvég számjegy azonosítóvég azonosítóvég ::={ betű számjegy } { azonosítóvég } betű ::=a b z számjegy ::=0 1 9 Az ismétlődéseket a BNF rekurzióval kezeli! Pl azonosítóvég azonosítóvég betű azonosítóvég betű betű azonosítóvég betű betű betű azonosítóvég Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 7 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 8 / 21

EBNF BNF kiterjesztése EBNF előnyei Példa: Nemnegatív valós számok BNF-fel EBNF: Extended Backus-Naur Form iteratív változat azonosító ::= betű @{ betű számjegy } akárhány lépésű iteráció A @ utáni terminálist, nemterminálist vagy csoportot akárhányszor ismételhetjük (a 0-t is beleértve) azonosító ::= betű { betű számjegy } 5 0 legfeljebb 5, legalább 0 ismétlődés A terminálist, nemterminálist vagy csoportot legalább illetve legfeljebb annyiszor ismételhetjük mint az alsó illetve felső indexe Ami EBNF-fel leírható az BNF-fel is, de EBNF-fel esetleg egyszerűbben, tömörebben törtszám ::= egész egész egész egész egész ::= számjegy számjegy egész számjegy ::=0 1 9 előjel ::= + valósszám ::= egész E előjel számjegy egész E előjel számjegy számjegy törtszám törtszám E előjel számjegy törtszám E előjel számjegy számjegy Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 9 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 10 / 21 EBNF használatának előnyei Példa: Nemnegatív valós számok EBNF-fel Az EP programozási nyelv leírása EBNF-fel/1 törtszám ::= egész { egész } egész egész ::= számjegy @ számjegy számjegy ::=0 1 9 valósszám ::= törtszám { törtszám egész }E{ + } számjegy { számjegy } program ::= utasítás ;@{ utasítás ;} utasítás ::={ címke : } törzs törzs ::={READ WRITE} azonosító LET azonosító = kifejezés GOTO címke {IF kifejezés } azonosító ::= betű { számjegy } 1 0 betű ::=X Y Z számjegy ::=0 1 9 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 11 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 12 / 21

Az EP programozási nyelv leírása EBNF-fel/2 Példa EP-vel megoldható feladatra Legnagyobb közös osztó kifejezés ::={+ } előjeltelen kifejezés előjeltelen kifejezés ::= tag @{{+ } tag } tag ::= tényező @{{ /} tényező } tényező ::= azonosító szám ( kifejezés ) címke ::= szám szám ::= számjegy { számjegy } 11 0 Írjunk olyan EP programot, mely beolvas két pozitív egész számot, majd kiírja legnagyobb közös osztóját! Q: x=x >0 y=y >0 egészek R: x=lnko(x, y ) Ezt megvalósító algoritmus: Fehér szóközök, kocsi vissza/soremelés karakterek IF: ha a kifejezés 0, ugrik \ x y x > y \ x := x y x < y y := y x Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 13 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 14 / 21 Példa EP-vel megoldható feladatra EP program lnko-ra BNF használata adatszerkezetek leírására Bináris fák, listák READ X; READ Y; 100: GOTO 101 IF X-Y; LET Y=Y-X; GOTO 100; 101: GOTO 102 IF Y-X; LET X=X-Y; GOTO 100; 102: WRITE X; Bináris fák: NIL üres { objektum NIL Bináris fa [gyökér, baloldal, jobboldal] egész bin fa ::=NIL [ egész, egész bin fa, egész bin fa ] valós bin fa ::=NIL [ valós, valós bin fa, valós bin fa ] egész lista ::=NIL [ egész, egész lista ] valós lista ::=NIL [ valós, valós lista ] Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 15 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 16 / 21

Kétszintű nyelvtanok W nyelvtan Példa: ˆX lista ::=NIL [ ˆX, ˆX lista ] Metaszabály ˆX:= egész valós Boole komplex Hiperszabály Kétszintű (E)BNF van Wijngaarden nyelvtan (W nyelvtan) ALGOL 68 ˆX bin fa ::=NIL [ ˆX, ˆX bin fa, ˆX bin fa ] Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 17 / 21 Szintaxis gráfok Definicíó Az EBNF-fel történő leírás szemléletesebb, gráfok segítségével történő megadása A gráf irányított, összefüggő, egy bemeneti és egy kimeneti éllel Az élek címkézetlenek, az szögpontok vagy címkézetlenek, vagy -be, vagy -be írt címkékkel ellátottak A fogalmak címkéjű csomópontokba, a terminálisok (vagy terminális sorozatok) címkéjű csomópontokba kerülnek, a gráf neve a definiálandó fogalom A gráf a következõ értelemben írja le a definiálandó fogalmat: Tekintsünk egy irányított utat a bemeneti éltõl a kimeneti élig Az út mentén a címkézett csúcsoknak megfelelõ fogalmak és terminálisok meghatároznak egy sorozatot A definiálandó fogalomat az összes ilyen út által meghatározott sorozatok összessége írja le Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 18 / 21 Szintaxis gráfok Példa: Azonosító Szintaxis gráfok Példa: EP nyelv, kifejezés azonosító betű betű a kifejezés + + tag betű számjegy z tag tényező / számjegy 0 tényező azonosító szám 9 ( kifejezés ) Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 19 / 21 Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 20 / 21

Házi feladat 1 Módosított azonosító: belsejében lehet "_" jel is Kezdődhet, de nem végződhet vele, két "_" nem lehet egymás mellett Van nem "_" karaktere és első nem "_" karakter betű Írjuk fel (E)BNF formulákkal! 2 EP teljes átírása szintaxis gráfokkal (folytatás) 3 A kiadott PASCAL szintaxis tanulmányozása A kifejezések fogalmának átírása (E)BNF-re 4 A kifejezések fogalmának leírása W nyelvtannal Formális nyelvek (1 gyakorlat) Formális nyelvek a gyakorlatban 2008/09 I félév 21 / 21