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
A Dijkstra algoritmus.
Advertisements

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).
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
Kötelező alapkérdések
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.
AVL-fa építése.
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.
Adatbázis-kezelés.
Gazdaságmatematika 6.szeminárium.
Szintaktikai elemzés február 23..
Példa az Early-algoritmus alkalmazására
Bizonyítások Harmath Zsolt.
Készítette: Pető László
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
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.
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
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ő:
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.
Térkép. Mi az adat? Minden információ, amit tárolni kell. Minden információ, amit tárolni kell.  szám  szöveg  dátum  hang  kép, stb.
Minőségtechnikák I. (Megbízhatóság)
Gazdaságstatisztika 11. előadás.
Matematika felvételi feladatok 8. évfolyamosok számára
Alapfogalmak.
I276 Antal János Benjamin 12. osztály Nyíregyháza, Széchenyi I. Közg. Szki. Huffman kódolás.
Formális bizonyítások Bizonyítások a Fitch bizonyítási rendszerben: P QRQR S1Igazolás_1 S2Igazolás_2... SnIgazolás_n S Igazolás_n+1 Az igazolások mindig.
Lineáris algebra.
Kulcsok meghatározása a táblákban
Témazáró dolgozat Kiegészítések.
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.
Az annuitás Gazdasági és munkaszervezési ismeretek, 2. előadás
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.
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
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.
Teljes visszalépéses elemzés
Algebrai struktúrák 1.
Adatbázis-kezelés 2. Relációs adatbázisok.
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

LL(1)-elemzés ● kiindulásként az ún. egyszerű LL(1) nyelvtanokat vizsgáljuk ● epszilonmentesek ● 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 B » a 1 α 1 | a 2 α 2 |...

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

Egyszerű LL(1)-elemzés ● elemezzük a következő szöveget: aabab# ● 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 S ab (aSA, 1) A(a, 2) # error (bA, 3) 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# ● feladat – 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 ● FIRST 1 (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 FIRST 1 (A) egy eleme A a... FIRST 1 (a) a 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 »  |  esetén FIRST 1 (  ) és FIRST 1 (  ) 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, amely elemzése során minden szabályt pontosan egyszer használunk! – elemezzük is a szöveget!

Epszilonmentes LL(1)-elemzés ● FOLLOW 1 (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: a szövegben, 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 S a... A S a A X X FOLLOW 1 (A)

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 FOLLOW 1 (A) = FIRST 1 (A) – amennyiben igen, adj példát is rá!

LL(1)-elemzés ● az LL(1)-nyelvtanok tulajdonságai – A »  |  esetén FIRST 1 (  FOLLOW 1 (  ) ) és FIRST 1 (  FOLLOW 1 (  ) ) diszjunktak – 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 a FIRST 1 (FOLLOW 1 (  ) ) oszlopaiba kerülnek

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

S ab A # B C cd (Bd, 1) (a, 3) (dd, 2)(Bd, 1) (cA, 4) (Bd, 1) (ABC, 5) (AB, 7) (bc, 6) (AB, 7) ( , 8)

S ab A # B C cd D (CADB, 1) ( , 2) (ab, 3) (Da, 4) (BbA, 6) (D, 2) ( , 5) (CADB, 1) ( , 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 FIRST(k) és FOLLOW(k) szerepel, ahol ezek az első legfeljebb k levezethető terminális – LEFT(k, A,  ) := {FIRST(k, x) | S »» wA  » w  »» wx} – egy eldöntési kritérium: egy nyelvtan LL(k), ha minden A  »  szabályra LEFT(k, A,  ) és LEFT(k, A,  ) 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 » A A » Bc | Bd B » a | bB ● S » BabB A » a |  B » a | b ● S » Ab | Bc A » aAb | d B » aBc | d