LL(1)-elemzés az LL(1)-elemzők már jobbak az előzőeknél, bár nem fedik le a programozási nyelvek szükségleteit alapötlet: a levezetés következő lépéséhez.

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

A Dijkstra algoritmus.
A Szállítási feladat megoldása
Lineáris egyenletrendszerek megoldása Gauss elimináció, Cramer-szabály Dr. Kovács Sándor DE GVK Gazdaságelemzési és Statiszikai Tanszék.
KÉSZÍTETTE: Takács Sándor
Programozási feladatok
Adatelemzés számítógéppel
Egyszerű LL grammatika.  Definíciók  Példa. Ábrákkal  MASM program (szó felismerése LL(1) –ben )
Adatbázis (alapfogalmak).
Kötelező alapkérdések
Műveletek mátrixokkal
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Egy f  R[x] polinom cS -beli helyettesítési értéke
Algebrai struktúrák 1.
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
Gazdaságmatematika 6.szeminárium.
Szintaktikai elemzés február 23..
Példa az Early-algoritmus alkalmazására
Halmazok, relációk, függvények
POSZTEREK KÉSZÍTÉSE.
Adatbáziskezelés az MSAccess programmal Makány György 5. rész: Jelentések.
Programozó matematikus szak 2003/2004-es tanév II. félév
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Programozó matematikus szak 2003/2004-es tanév II. félév
A digitális számítás elmélete
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
A HTML alapjai Havlik Barnabás Készítette:
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
Operációs rendszerek gyakorlat. Reguláris kifejezések.
A táblázatok formázása Készítette: Gombkötő Alexandra Felkészítő tanár: Györe Mihály József Attila Gimnázium, 6900 Makó Csanád vezér tér 6.
A digitális számítás elmélete
4. Gyires Béla Informatikai Nap Debreceni Egyetem Informatikai Kar Új eredmények a Chomsky-féle (formális) nyelvtípusokkal kapcsolatban Dr. Nagy Benedek.
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Gazdaságstatisztika 11. előadás.
Hernyák Zoltán Programozási Nyelvek II.
A feladat : Építsünk AVL-fát a következő adatokból:100,170,74,81,136,185,150,122,52,190,144 (Az AVL-fa olyan bináris keresőfa, amelynek minden csúcsára.
Kulcsok meghatározása a táblákban
Témazáró dolgozat Kiegészítések.
Dr. Bánkuti Gyöngyi Klingné Takács Anna
9. osztály Táblák létrehozása. Létrehozás Tervező nézetben  Üres adatbázis létrehozása.  Adatbázis mentése.  Objektumok oszlopban a Táblák sorra kattintunk.
Műveletek, függvények és tulajdonságaik Mátrix struktúrák:
Táblázatok.
Nagy Szilvia 7. Lineáris blokk-kódok
C Programozási alapok.
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
Az annuitás Gazdasági és munkaszervezési ismeretek, 2. előadás
Algoritmusok és adatszerkezetek
BIOLÓGUS INFORMATIKA 2008 – 2009 (1. évfolyam/1.félév) 6.
A Mozilla magyar nyelvű szerkesztőjének használata
LZW (Lempel-Ziv-Welch) tömörítő algoritmus
2. gyakorlat INCK401 Előadó: Dr. Mihálydeák Tamás Sándor Gyakorlatvezető: Kovács Zita 2015/2016. I. félév AZ INFORMATIKA LOGIKAI ALAPJAI.
HÁLÓZAT Maximális folyam, minimális vágás
LZW tömörítés Akopjan Alex Algoritmusok és adatszerkezetek 2.
Technológiai folyamatok optimalizálása Ráduly Botond Mészáros Sándor MATLAB ® - Optimization Toolbox.
GRÁFOK Marczis Ádám és Tábori Ármin. Kőnig Dénes ( ) Magyar matematikus Az első tudományos színvonalú gráfelmélet könyv írója.
LR-elemzés: LR(0) – ha az  x mondatforma nyele , akkor  bármely prefixe (az egész is) járható prefixe – ez azt jelenti, hogy ha elkezdjük olvasni.
LL(1)-elemzés ● az LL(1)-elemzők már jobbak az előzőeknél, bár nem fedik le a programozási nyelvek szükségleteit ● alapötlet: a levezetés következő lépéséhez.
Fordítóprogramok gyakorlat tavaszi félév gyakorlatvezető:Kitlei Róbert szoba:D 2-616B honlap:
TRIGONOMETRIA.
Informatikai gyakorlatok 11. évfolyam
Precedencia-nyelvtanok
Lineáris egyenletrendszerek megoldása Gauss elimináció, Cramer-szabály Dr. Kovács Sándor DE GVK Gazdaságelemzési és Statiszikai Tanszék.
A bűvös négyzet játék algoritmusa
Teljes visszalépéses elemzés
Algebrai struktúrák 1.
Adatbázis-kezelés 2. Relációs adatbázisok.
Bankszámlatranzakciók feldolgozása és könyvelése Gyorsan és egyszerűen
Formális nyelvek és gépek
Állapottér-reprezentáljunk!
Előadás másolata:

LL(1)-elemzés az LL(1)-elemzők már jobbak az előzőeknél, bár nem fedik le a programozási nyelvek szükségleteit alapötlet: a levezetés következő lépéséhez használjuk fel a szöveg következő terminálisát kiindulásként az ún. egyszerű LL(1) nyelvtanokat vizsgáljuk epszilonmentes a szabályok jobb oldalai terminálissal kezdődnek az azonos bal oldalú szabályok jobb oldalának kezdeti terminálisai különbözőek

Egyszerű LL(1)-elemzés példa elemző táblázatra: 1: S » aSA 2: A » a 3: S » bA a verem teteje a b # az olvasott terminális S (aSA, 1) (bA, 3) error A (a, 2) error error mj. : a szürkén jelölt rész mindig átlós: ha karakter jön, csak a megfelelőt fogadjuk el a pop error error b error pop error # error error accept

Egyszerű LL(1)-elemzés a b # elemezzük a következő szöveget: aabab# S (aSA, 1) (bA, 3) error A (a, 2) error error az elemzés menetének komponensei: (szöveg, mondatforma, alkalmazott szabályok) az elemzés menete: a táblázat szerint léptetünk vagy fejtjük ki a szabályt; kiindulás: (szöveg, S#, ) (aabab#, S#, ) ® (aabab#, aSA#, 1) ® (abab#, SA#, 1) ® (abab#, aSA#, 11) ® (bab#, SA#, 11) ® (bab#, bAA#, 113) ® (ab#, AA#, 113) ® (ab#, aA#, 1132) ® (b#, A#, 1132) ® error

Egyszerű LL(1)-elemzés feladat adott a következő nyelvtan S » aS | bA A » d | ccA hogy néz ki az elemző táblázat? le lehet-e vezetni: abc# adj meg olyan nyelvtant, amiben n db nemterminális és m db terminális szerepel, és az elemző táblázatnak a lehető legtöbb mezője ki van töltve!

Epszilonmentes LL(1)-elemzés ez már majdnem a teljes LL(1) az az ötlet, hogy a szövegekben megjelenő kezdeti terminálisokat vizsgáljuk, és ezek szerint választjuk ki, melyik szabályt kell alkalmazni FIRST1(a): az a mondatformából levezethető mondatok első terminálisainak halmaza van algoritmus rá, hogyan lehet ezeket kinyerni a nyelvtan ismeretében a mi egyszerű nyelvtanainkból ránézésre is látszanak előfordulhat, hogy # is eleme ha epszilon-szabályok is megengedettek, lehet üres is

Epszilonmentes LL(1)-elemzés A a ... ... a ... a ... FIRST1(A) egy eleme FIRST1(a)

Epszilonmentes LL(1)-elemzés feladat: határozzuk meg minden nyelvtani jel FIRST-jét az alábbi nyelvtanokban S » Bc | SA A » aAA | a B » Bb | b S » A | B | C | D A » aB | Ab B » bC | Bc C » cD | Cd D » dE | De E » e

Epszilonmentes LL(1)-elemzés az epszilonmentes nyelvtanok tulajdonságai epszilonmentesek :) A » a | b esetén FIRST1(a) és FIRST1(b) diszjunktak az elemző táblázat pontosan olyan, mint az egyszerű LL(1) esetén ha egy szabály nemterminálissal kezdődik, akkor minden olyan terminális oszlopába be kell írni, ami szerepel a FIRST-jében mivel a FIRST-ök különbözőek, garantált, hogy egy mezőt nem próbálunk meg kétszer is kitölteni

Epszilonmentes LL(1)-elemzés feladat adott a következő nyelvtan S » dSdS | A | eB A » a | BA B » b | c adjuk meg az elemző táblázatot adjunk olyan szöveget, aminek az elemzése során minden szabályt pontosan egyszer használunk! elemezzük is a szöveget!

Epszilonmentes LL(1)-elemzés FOLLOW1(A): azok a terminálisok, amelyekhez van a nyelvnek olyan mondata, hogy a szintaxisfában közvetlenül A után szerepelnek másképpen megfogalmazva: ahogy olvassuk a szöveget, miután kiolvastuk A-t, rögtön ez a terminális következik ezek kinyerésére is van algoritmus míg a FIRST meghatározásánál abból a szabályból indul ki az ember, aminek a bal oldalán áll a nemterminális, itt azokból, amelyek a jobb oldalon tartalmazzák; az utána jövő jel FIRST-je adja meg előfordulhat itt is, hogy a # is eleme

LL(1)-elemzés FOLLOW1(A) FOLLOW1(A) S S ... ... ... A X ... ... X ...

Epszilonmentes LL(1)-elemzés feladat: határozzuk meg minden nyelvtani jel FOLLOW-ját az alábbi nyelvtanban S » ABCBA A » aB | a B » bA | b C » cAcB kérdés: előfordulhat-e, hogy FOLLOW1(A) = FIRST1(A) amennyiben igen, adj példát is rá!

LL(1)-elemzés az LL(1)-nyelvtanok tulajdonságai A » a | b esetén FIRST1(a FOLLOW1(A) ) és FIRST1(b FOLLOW1(A) ) diszjunktak mj. : a feltétel még mindig arról szól, hogy egyértelműnek kell lennie a terminálisból, melyik szabály következik a szintaxisfában az elemző táblázat még tovább bővül az epszilonmentes LL(1)-hez képest az epszilon-szabályok FOLLOW1(A) oszlopaiba kerülnek

LL(1)-elemzés feladat: elemzendő: abcd# S » Bd | dd A » a | cA B » ABCd | bc C » AB | e feladat: elemzendő: aba# S » CADB | D A » ab B » Da | e C » BbA D » e feladat: adj meg olyan nyelvtant, aminek az elemző táblázatában a lehető legtöbb e-szabály van!

a b c d # S (Bd, 1) (Bd, 1) (Bd, 1) (dd, 2) A (a, 3) (cA, 4) B (ABC, 5) (bc, 6) (ABC, 5) C (AB, 7) (AB, 7) (e, 8) S (CADB,1) (CADB,1) (D, 2) (e, 2) A (ab, 3) B (Da, 4) (e, 5) (e, 5) C (BbA, 6) (BbA, 6) D (e, 7) (e, 7)

LL(k) feladat: adjunk olyan nyelvtant, ami nem LL(1)-es típusú, de pár elem előreolvasásával meg lehet mondani, melyik szabályt kell választani! az LL(k) elemzések pont erről szólnak a definíciójában FIRSTk és FOLLOWk szerepel, ahol ezek az első legfeljebb k levezethető terminális LEFTk(A, g) := {FIRSTk(x) | S »» wAb » wgb »» wx} egy eldöntési kritérium: egy nyelvtan LL(k), ha minden A » g | b szabályra LEFTk(A, g) és LEFTk(A, b) diszjunktak ezek sem elég jók: adjunk meg olyan nyelvtant, ami semmilyen k-ra nem LL(k)!

LL(k) feladat: milyen k-ra LL(k)? Át lehet-e alakítani úgy, hogy kisebb k-ra LL(k) legyen? S » BAbB A » a | e B » a | b S » A A » Bc | Bd B » a | bB S » Ab | Bc A » aAb | d B » aBc | d