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.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

A digitális számítás elmélete
Események formális leírása, műveletek
GRIN: Gráf alapú RDF index
Készítette: Nagy Mihály tanár Perecsen, 2006.
Sor láncolt ábrázolással
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
KÉSZÍTETTE: Takács Sándor
Szöveg feldolgozása Fontok használata.
Egyszerű LL grammatika.  Definíciók  Példa. Ábrákkal  MASM program (szó felismerése LL(1) –ben )
Dualitás Ferenczi Zoltán
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Félévi követelmény (nappali)
É: Pali is, Pista is jól sakkozik. T: Nem igaz. É: Bizonyítsd be. Mi nem igaz? T: Nem igaz, hogy Pali jól sakkozik. Nyertem É: Pali vagy Pista.
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.
Algebrai struktúrák 1.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Szintaktikai elemzés február 23..
Szintaktikai elemzés március 1.. Gépi tanulás Osztályozási feladat: Adott egyedek egy halmaza és azok osztályba tartozási függvénye (tanító halmaz),
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
MI 2003/7 - 1 Az egyesítési algoritmus Minden kapitalista kizsákmányoló. Mr. Smith kapitalista. Mr. Smith kizsákmányoló.
Papp Róbert, Blaskovics Viktor, Hantos Norbert
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
Programozó matematikus szak 2003/2004-es tanév II. félév
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.
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
ABC   A1B1C1 .
6. SZÁMELMÉLET 6.1. Oszthatóság
Operációs rendszerek gyakorlat Reguláris kifejezések.
Operációs rendszerek gyakorlat. Reguláris kifejezések.
MATEMATIKA ÉS INFORMATIKA I.
A digitális számítás elmélete
Lineáris programozás Definíció: Olyan matematikai programozási feladatot nevezünk lineáris programozási feladatnak, amelyekben az L halmazt meghatározó.
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.
Gráfok Készítette: Dr. Ábrahám István.
Beolvasó utasítás Console.Read();  Int típusú adatot kapunk. Console.ReadLine();  String típusú adatot kapunk. Console.ReadKey();  Tetszőleges billentyű.
Érvelés, bizonyítás, következmény, helyesség
A Turing-gép.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
A Mikroprocesszor Harmadik rész.
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Dr. Bánkuti Gyöngyi Klingné Takács Anna
Hozzárendelések, függvények
Táblázatok.
Bekezdések formázása 1..
Nagy Szilvia 7. Lineáris blokk-kódok
Plakát Ha lehet, akkor ez 1.oldalon lévő mintából kellene plakátot készíteni A szöveg középen : Kabát akció!, mellette a piros alapú logo A divat.
HÁLÓZAT Maximális folyam, minimális vágás
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.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Fordítóprogramok gyakorlat tavaszi félév gyakorlatvezető:Kitlei Róbert szoba:D 2-616B honlap:
Integrálszámítás.
HÁLÓZAT Maximális folyam, minimális vágás
Mediánok és rendezett minták
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Precedencia-nyelvtanok
Számítógépes algoritmusok
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.
1.3 Relációk Def. (rendezett pár) (a1 , a2) := {{a1} , {a1 , a2 }} .
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Állapottér-reprezentáljunk!
Előadás másolata:

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 a mondatformát, akkor “végig tudjuk olvasni” a járható prefixeket anélkül, hogy redukálnánk – vezessük be a pontot mint metaszimbólumot, ami azt mutatja, hogy tartunk a mondatforma olvasásában (elemzésében) – ha van A »  alakú nyelvtani szabály, akkor a grammatika egy LR(0)-eleme [A » .  ] – epszilon-szabályhoz [A ».] tartozik

LR-elemzés: LR(0) – az [A » .  ] LR(0)-elem érvényes a  járható prefixre, ha S »»»  Ax  »  x – ez azt jelenti, hogy ha már végigolvastuk a  szöveget, akkor felkészülünk arra, hogy a fenti szabály szerint fogunk redukálni Ax   S

LR-elemzés: LR(0) – J a nyelvtan LR(0)-elemeinek egy halmazát jelöli – két elemhalmaz-operátor – closure(J) : J és minden olyan [B ».  ], amelyhez closure(J)-ben található [A » .B  ] – read(J, X) : elemei minden olyan closure([A »  X.  ]) minden eleme, melyre [A » .X  ] benne van J-ben – closure: az elemzés egy pontjához tartozó összes elem – read: J-ből X-et olvasva az elemzés ide jut

LR-elemzés: LR(0) – az LR-elemzések kiegészített nyelvtanokkal dolgoznak (S' » S szabály) – a két operátorral elkészítjük a nyelv ún. kanonikus halmazait – I 0 := closure([S' ».S]) – a további halmazok (I 1, I 2,...) : minden már meghatározott halmazból próbálunk minden X szimbólumot olvasni – ha már van olyan halmaz, ami kijött, nem kell újat felvenni – ha üres halmaz jött ki, azt sem vesszük fel – a halmazok a read-del egy automatát adnak

LR-elemzés: LR(0) – elemző táblázat – sorai egy-egy kanonikus halmaznak felelnek meg – minden sorhoz tartozik egy működés, valamint a belőle való read-ek sorszámai – redukálni akkor kell, ha a megfelelő kanonikus halmaz minden elemének a végén szerepel a pont – ha a végén nem szerepel pont, léptetés – ha van pont a végén is és a közepén is, akkor nem LR(0)-elemezhető a nyelvtan

LR-elemzés: LR(0) – feladat: mik a kanonikus halmazok? S » T | S + T T » F | T * F F » i | – a kanonikus halmazok – I 0 : [S' ».S], [S ».T], [S ».S+T], [T ».F], [T ».T*F], [F ».i], [F ». ] – I 1 : [S' » S.], [S » S.+T] – I 2 : [S » T.], [T » T.*F] – I 3 : [T » F.] – I 4 : [F » i.]

LR-elemzés: LR(0) – a további kanonikus halmazok – I 5 : [F » ], [S ».T], [S ».S+T], [T ».F], [T ».T*F], [F ».i], [F ». ] – I 6 : [S » S+.T], [T ».F], [T ».T*F], [F ».i], [F ». ] – I 7 : [T » T*.F], [F ».i], [F ». ] – I 8 : [F » ], [S » S.+T] – I 9 : [S » S+T.], [T » T.*F] – I 10 : [T » T*F.] – I 11 : [F ».]

LR-elemzés: LR(0) – feladat: elemzendő bcabbccc# S » ABB | cS A » ab | bS B » b | c ● az elemző: kezdetben (# 0, szöveg), majd... ● ha az elemző állapotában az action accept, vége ● ha s (step, lépés), akkor kiolvassuk a szövegből a következő szimbólumot, és átlépünk az általa jelölt állapotba (ezt jelöljük alsó indexszel) ● ha r (redukálás), akkor az épített mondatforma végéről a szabály jobb oldalának jeleit kicseréljük a szabály fejével; az új állapot az ez előtti állapotból egy lépés a fejjel

LR-elemzés: LR(0) – az automata S' ».S S' » S.S » A.BB S » c.S A » b.S A » a.b a S » AB.BS » ABB. B » b. B » c. S » cS. A » ab.

LR-elemzés: LR(0) – az automata

LR-elemzés: LR(0) a állapot b s 1 3 action B goto SAc accept s s s 5s

LR-elemzés: LR(0) ab r4 7 9 BSAc r5 r2 r6 s 11r3 12r1 7812

LR-elemzés: LR(0) – feladat: elemzendő bcabbccc# – az elemző minden pontban tárolja azt is, milyen állapotban van; a pár első fele valójában egy kétkomponensű (szimbólum + állapot) verem – (# 0, bcabbccc#)  (# 0 b 4, cabbccc#)  (# 0 b 4 c 3, abbccc#)  (# 0 b 4 c 3 a 5, bbccc#)  (# 0 b 4 c 3 a 5 b 11, bccc#)  (# 0 b 4 c 3 A 2, bccc#)  (# 0 b 4 c 3 A 2 b 7, ccc#)  (# 0 b 4 c 3 A 2 B 6, ccc#)  (# 0 b 4 c 3 A 2 B 6 c 8, cc#)  (# 0 b 4 c 3 A 2 B 6 B 12, cc#)  (# 0 b 4 c 3 S 9, cc#)  (# 0 b 4 S 10, cc#)  (# 0 A 2, cc#)......

LR-elemzés: SLR(1) – az LR(0)-elemzés még nem elég, pl. a fólia kezdetén levő egyszerű aritmetikai nyelvtan (amiben +, *, <> volt) is konfliktusos (I 2 állapot) – a probléma: vannak olyan állapotok, amikben a pont a szöveg közepén és végén is előfordul, azaz redukciót és léptetést is előírunk hozzá – javítás: a redukciót csak a szabály fejében szereplő nemterminális FOLLOW-jára hajtsuk végre (a léptetést pedig azokra a jelekre, amikre szükséges) – ha így konfliktusmentes az elemző, akkor SLR(1)- nek nevezzük

LR-elemzés: SLR(1) – kibővül az action szerepe: most már minden terminálisnál lehet redukálni és léptetni is – ha [A » .a  ] a H i kanonikus halmaz eleme, akkor a hozzá tartozó i-edik állapotban a-ra léptetést írunk elő: sj, ahol H j = read(H i, a) – ha [A » .] a H i kanonikus halmaz eleme, akkor az i-edik állapotban FOLLOW 1 (A) minden elemére redukálást írunk elő: rk, ahol A »  a nyelvtan k- adik szabálya – [S' » S.] esetén (ált. H 1 -ben van) #-ra accept – feladat: elemezzük az aritmetikai nyelvtant

LR-elemzés: SLR(1) < állapot F 1 3 action * goto i+ acc s >ET# s6 s7 r5 s4 r1 r5 83 r1 r3 s5

LR-elemzés: SLR(1) < állapot F 7 9 action * goto i+ s >ET# s6 r2 s11 r2 r4 s410 r6 s7 s5

LR-elemzés: SLR(1) feladat: elemzendő i+ *i# (# 0, i+ *i#)  (# 0 i 4, + *i#)  (# 0 F 3, + *i#)  (# 0 T 2, + *i#)  (# 0 E 1, + *i#)  (# 0 E 4 + 6, *i#)  (# 0 E *i#)  (# 0 E *i#) ......

LR-elemzés: LR(1) – az SLR(1)-elemzés sem képes minden szöveget elemezni, pl. S » aEa | bEb | aFb | bFa E » e F » e – a probléma: a szöveg egy adott pontján egy jelet nem biztos, hogy FOLLOW-jának tetszőleges eleme követheti – javítás: számon tartjuk, hogy az adott ponton mi követheti a jeleket – ha így konfliktusmentes az elemző, akkor LR(1)- nek nevezzük

LR-elemzés: LR(1) – ha van A »  alakú nyelvtani szabály és X tetszőleges terminális vagy #, akkor a grammatika egy LR(1)-eleme [A » . , X] – epszilon-szabályhoz [A »., X] tartozik – az elem első komponensét az elem magjának nevezzük – X-et előreolvasási szimbólumnak nevezzük Aa  xAa   S x #  A   S

LR-elemzés: LR(1) az LR(0)-beli fogalmak LR(1)-es társai – closure(J) : J és minden olyan [B ». , b], amelyhez closure(J)-ben található [A » .B , a], melyre b  FIRST 1 (  a) – read(J, X) : closure([A »  X. , a]) elemei minden J-ből származó [A » .X , a]-ra – kanonikus halmazok: H 0 =closure([S' » S, #]), a továbbiak read-ekkel, mint LR(0)-ban

LR-elemzés: LR(1) – feladat: írjuk fel az elemző táblázatot S » Aa | bAc | Bc | bBa A » d B » d – miért nem SLR(1)? – elemzendő: bdc – mj: a nyelvtan nem is LALR(1). Miért?

LR-elemzés: LALR(1) – az LR(1)-elemző “mindent tud”, viszont nagyon sok állapota van (teljes programnyelvekre tízezres nagyságrendű), míg az SLR(1)-elemzőnek jóval kevesebb (max. ezres nagyságrend) – észrevétel: sok LR(1)-es kanonikus halmaz csak az előreolvasási szimbólumokban tér el, a magjuk pedig azonos; ezeket próbáljuk meg egyesíteni

LR-elemzés: LALR(1) – vonjuk össze az azonos magú kanonikus halmazokat – a read függvényt terjesszük ki: ha H i -t a K i halmazba, H j -t a K j halmazba vontuk össze, és read(H i, X) = H j, akkor read(K i, X) = K j – konfliktusok az összevont elemzőben: a két halmaz eltérő cselekvéseket ír elő – léptetés-léptetés: nem konfliktus, léptetünk – léptetés-redukálás: ekkor az eredeti elemzőben is konfliktus lett volna – redukálás-redukálás: előfordulhat; akkor LALR(1)-es a nyelvtan, ha nincs

LR-elemzés: LALR(1) – az előbbi módszerrel el kell készíteni az LR(1)- elemzőt is az LALR(1)-elemzőhöz, ezt pedig szeretnénk megspórolni – nevezzük egy kanonikus halmaz törzsének azokat az elemeket, amelyek magjában a pont nem az elején áll (kivétel: H 0, aminek a törzse [S' ».S, #]) – a törzsből lezárással visszaállítható a halmaz

LR-elemzés: LALR(1) 1. meghatározzuk az LR(0)-halmazok törzseit 2. kiegészítjük ezeket a megfelelő előreolvasási szimbólumokkal – először az ún. spontán generálhatóakkal – utána pedig, amíg új jeleket ad, örökléssel meghatározzuk, mikor kell léptetni illetve redukálni – az első lépés egyszerű, a másik kettő a következő oldalakon

LR-elemzés: LALR(1) spontán generálás a closure-rel – ha [C » .B , c]  i, B »»» A  » X , és , akkor minden a  FIRST 1 (  )-ra [A » X. , a]  read(  i,X) spontán generálható öröklődés a closure-rel – ha [C » .B, c]  i, B »»» A  » X , akkor c öröklődik [A » X. , c]  read(  i,X)-be

LR-elemzés: LALR(1) C  B  A X ... C  B A X  a öröklődik spontán generálódik a

LR-elemzés: LALR(1) – vegyük a K i alapjaként szolgáló J i LR(0)-halmazt és új metaszimbólumot spontán generálás a read-del – ha [A »  X  a]  closure([B » . valamely [B » .  ]  J i -re, és a akkor [A »  X.  a]  read(K i  X) öröklődés a read-del – ha [A »  X  closure([B » . akkor [A »  X.  a]  read(K i  X) minden a-ra, amelyre [A »  X  a]  K i

LR-elemzés: LALR(1)  B  A X spontán  -ból jön,  B  A X

LR-elemzés: LALR(1) redukálás – ha nem epszilon-szabályról van szó, akkor a kanonikus halmaz törzsében jelen van az ezt szükségessé tevő elem (ponttal a végén) – A »  redukciót olyan elemekre kell végrehajtani, melyekre [C » .B , c]  i, B »»» A  és az előreolvasási szimbólumok: a  FIRST 1 (  c) léptetés – a-ra léptetünk, ha a törzsben szerepel [B » .A , b], és A »»» ax úgy, hogy az utolsó alkalmazott helyettesítési szabály epszilon-mentes