Teljes visszalépéses elemzés

Slides:



Advertisements
Hasonló előadás
FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
Advertisements

KIÜRÍTÉS. ÁLTALÁNOS ELŐÍRÁSOK A kiürítésre számításba vett útvonalon körforgó, toló, billenő és emelkedő zsalus rendszerű, valamint csak fotocella elven.
Szabadtéri rendezvények. A TvMI vonatkozik: OTSZ szerinti szabadtéri rendezvényekre szabadtéri rendezvény: az 1000 főt vagy az 5000 m 2 területet meghaladó,
 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
Turisztikai desztináció- menedzsment és klaszter Tóthné Bánszki Zsuzsa Észak-magyarországi Regionális Fejlesztési Ügynökség Kht.
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.
Informatikai rendszerek általános jellemzői 1.Hierarchikus felépítés Rendszer → alrendszer->... → egyedi komponens 2.Az elemi komponensek halmaza absztrakciófüggő.
Gazdasági jog IV. Előadás Egyes társasági formák Közkeresleti társaság, betéti társaság.
Fájlkezelés.
Valószínűségi kísérletek
A kérdőívek, a kérdőívszerkesztés szabályai
Adatbázis normalizálás
Kompetenciamérés a Szakiskolai Fejlesztési Program II. keretében 2007
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
A FELÜGYELŐBIZOTTSÁG BESZÁMOLÓJA A VSZT
A Magyar Természetbarát Szövetség honlapjának bemutatása
Mezőgazdasági kisüzemek fejlesztése
AWK ismétlés AWK: adatvezérelt nyelv:
Scilab programozás alapjai
Öröklési szerződés és Köteles rész
Programozás III. Gyakorlás.
Caracalla udvarában Kalandjáték 1.
Kockázat és megbízhatóság
Mesterséges intelligencia
Kommunikáció a könyvvizsgálatban
Miért volt jogbiztonságos a BÜK javaslata ?
Baross László Mezőgazdasági Szakközépiskola és Szakiskola Mátészalka
Algoritmusok és Adatszerkezetek I.
13. A MELLÉRENDELŐ ÖSSZETETT MONDATOK FAJTÁI
Struktúra predikció ápr. 6.
Lexikális elemző: lex (flex)
Kockázat és megbízhatóság
Newcomb-paradoxon Előttünk van két doboz, A és B. Ezekbe egy nagyon megbízható jövendőmondó helyezett el pénzt, amihez úgy juthatunk, ha mind a két dobozt.
Környezetgazdaságtan 1
Hipotézisvizsgálat.
Vállalati brosúra A cég általános célkitűzése
Kijelentéslogikai igazság (tautológia):
Logikai programozás 2..
Tartalékolás 1.
Adatbázis-kezelés (PL/SQL)
2. Bevezetés A programozásba
Közigazgatási alapvizsga a Probono rendszerben
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.
Kvantitatív módszerek
Algoritmusok és Adatszerkezetek I.
KÉPZÉSSEL A MUNKAERŐ-HIÁNY ELLEN?
Kalickás forgórészű aszinkronmotor csillag-delta indítása
Aritmetikai kifejezések lengyelformára hozása
Szoftverrobotok vs biorobotok Bemutatkozik Albert, a vállalati robot
A villamos installáció problémái a tűzvédelem szempontjából
Online jegyzőkönyv kitöltési segédlet
Új pályainformációs eszközök - filmek
7. Szabály: A mérkőzés időtartama
Feladat 1: decentralizáltság az általános egyensúlyelméletben
Szerzője Konzulens neve
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Algoritmusok és Adatszerkezetek I.
Foglalkoztatási és Szociális Hivatal
Vállalati brosúra A cég általános célkitűzése
A Szociális Ágazati Regiszter használatával kapcsolatos tudnivalók
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Munkagazdaságtani feladatok
Szöveges adatok tárolása
Áramlástan mérés beszámoló előadás
Informatika Oktató: Katona Péter.
Mesterséges intelligencia
Algoritmusok.
OpenBoard Kezelő Tananyag közzététele a KRÉTA rendszerben.
KOHÉZIÓS POLITIKA A POLGÁROK SZOLGÁLATÁBAN
Előadás másolata:

Teljes visszalépéses elemzés adott a következő nyelvtan S » aAd | aB A » b | c B » ccd | ddc elemezzük a következő szöveget: accd S a c d S A a A d b c a c d

Teljes visszalépéses elemzés adott a következő nyelvtan S » aAd | aB A » b | c B » ccd | ddc elemezzük a következő szöveget: accd S a B d c a c d

Teljes visszalépéses elemzés az elemzés balrekurziómentes L nyelvtanokra jó az elemzés menetét egy négyessel írjuk le állapot q: előrehaladás b: visszalépés t: terminálás – véget ért az elemzés mutató a bemenet következő elemére az elemzés története (verem) vizsgált mondatforma (verem) kezdőállapot: (q, 1, , S#) 2

Teljes visszalépéses elemzés az elemzés szabályai ha q állapotban vagyunk (előrehaladás) ha a mondatformában terminális jön... ... és az megegyezik az aktuális pozíción elhelyezkedő terminálissal, léptetjük a pozíciót, és áthelyezzük a terminálist az elemzés történetének végére ... és nem egyezik, b állapotba váltunk ha nemterminális jön a mondatformában, áthelyezzük az elemzés történetébe, és az első vele szereplő szabály jobb oldalát a vizsgált mondatforma elejére fűzzük ha a mondat végére értünk (# jel következik) ... és a szöveg végén áll a mutató, t állapotba váltunk ... különben pedig b állapotba ha t állapotban vagyunk, készen vagyunk, és a mondat helyes; a szintaxisfa az elemzés történetében található

Teljes visszalépéses elemzés az elemzés szabályai ha b állapotban vagyunk (visszalépés) ha az elemzés történetének végén terminális áll, visszaírjuk az vizsgált mondatforma elejére, eltávolítjuk az elemzés végéről, és visszaállítjuk eggyel a mutatót ha az elemzés történetének végén nemterminális áll ... és még van vele alkalmazható szabály, akkor feljegyezzük, hanyadik alkalmazott szabálynál tartunk, és az előző szabály jobb oldalát, amelynek ekkor a vizsgált mondatforma elején kell lennie, lecseréljük az aktuális jobb oldalra ... ha már minden alkalmazható szabályt végigpróbáltunk, akkor visszaírjuk a vizsgált mondatforma elejére, és kitöröljük az elemzés végéről ha az elemzés története üres, a mondat nem eleme a nyelvnek kellemetlen, hogy nem tudunk semmit se mondani arról, hol rontottuk el a mondatot

Teljes visszalépéses elemzés az előző elemzés menete formálisan (ez a lényeg): (q, 1, , S#) ® (q, 1, S1, aAd#) ® (q, 2, S1a, Ad#) ® (q, 2, S1aA1, bd#) ® (b, 2, S1aA1, bd#) ® (b, 2, S1aA2, cd#) ® (q, 2, S1aA2c, d#) ® (b, 2, S1aA2c, d#) ® (b, 2, S1aA2, cd#) ® (b, 2, S1a, Ad#) ® (b, 1, S1, aAd#) ® (q, 1, S2, aB#) ® (q, 2, S2a, B#) ® (q, 2, S2aB1, ccd#) ® (q, 3, S2aB1c, cd#) ® (q, 4, S2aB1cc, d#) ® (q, 5, S2aB1ccd, #) ® (t, 5, S2aB1ccd, #)

Teljes visszalépéses elemzés feladat adott a következő nyelvtan S » T | TE E » +T | +TE T » F | FU U » *F | *FU F » i | [S] elemezzük a következő szöveget: i+i# # (vagyis az üres szöveg) mi lesz az elemzés végén az elemző állapota? hogyan néz ki a kapott szintaxisfa? hány lépést tettünk meg?

Teljes visszalépéses elemzés összesen 32 lépés lesz, ebből az elsők: (q, 1, ε, S#) ® (q, 1, S1, T#) ® (q, 1, S1T1, F#) ® (q, 1, S1T1F1, i#) ® (q, 2, S1T1F1i, #) ® (b, 2, S1T1F1i, #) ® (b, 1, S1T1F1, i#) ® (q, 1, S1T1F2, [E]#) ® (b, 1, S1T1F2, [E]#) ® (b, 1, S1T1, F#) ® (q, 1, S1T2, FU#) ® (q, 1, S1T2F1, iU#) ® (q, 1, S1T2F1i, U#) ® (q, 1, S1T2F1iU1, *F#) ® ...

Teljes visszalépéses elemzés Az elemzés végállapota: (t, 4, S2T1F1iE1+T1F1i, #) Ez kiolvasható a fából szélességi bejárással; a harmadik komponens alapján pedig fel lehet építeni a szintaxisfát. T E F T F i + i

Korlátozott visszalépéses elemzés mohó algoritmus: elfogadott terminálist nem von vissza a grammatikát át kell hozzá alakítani A » ab | ag helyett A » aB és B » b | g szabályok nem tartalmazhatják egymást, azaz nem lehet ilyen: A » x és B » xb működése: programozott mikrogép 1 bites regiszter mutató a szövegre mikroprocesszor verem

Korlátozott visszalépéses elemzés általános programsor: működés: if a = c[i] then c[i] a szöveg i-edik karakterét jelöli i = i + 1 execute AT else if nemterminális( a ) then push i call a if reg then end if else execute AF címke a AT AF execute X: ha üres a mező: a következő sorra megyünk logikai érték esetén: a regiszter felveszi az értéket, majd visszatérünk a rutinból OK vagy ERROR: program vége

Korlátozott visszalépéses elemzés egy általános szabály A » aBcd programja A a false B false AF mindig false, AT az utolsó sorban true, különben üres. c false d true false S-hez tartozó szabály S » ABc programja S A ERROR B ERROR Különbségek: jobb oldal végén # (ez jelzi a szöveg végét) true és false helyett OK és ERROR (ezek jelzik az elemzés végét) c ERROR # OK ERROR

Korlátozott visszalépéses elemzés epszilon-szabály A » ε programja A X * true X * false false a csillagok helyére bármilyen jel kerülhet több alternatívával rendelkező szabály A » b | g | d programja átírjuk a szabályt A » X | Y | d alakra, ahol X és Y új nemterminálisok A X true Y true d utolsó sora kivételével, mint az egyszerű szabálynál, AF false és AT üres d1 false ... false dutolsó true false

Korlátozott visszalépéses elemzés feladat: add meg az alábbi nyelvtan programját! S » AB A » aa | a B » b | ac adj meg egy olyan mondatot, amely eleme a nyelvnek, de a program mégse fogadja el! az elemző komoly hiányossága a nemteljessége feladat: add meg az alábbi nyelvtan programját, majd elemezd az a=(a+b)# mondatot vele! S » A A » B=B B » a | b | ( B + B )

Korlátozott visszalépéses elemzés az A » aa | a szabály átalakítandó C új nemterminális A » aC C » a | ε S A ERROR B ERROR # OK ERROR A a false C true false B b true ha az alternatíva csak egy terminálist tartalmaz, akkor nem szükséges új nyelvtani jelet bevezetni a false c true false C a true S » AB A » aa | a B » b | ac Cε true false Cε Cε2 true Cε2 a false false

Korlátozott visszalépéses elemzés az aac# szöveg eleme a nyelvnek az alábbi szintaxisfával az elemző azonban rossz szabályt próbál alkalmazni, és elakad S A B c a S A B a a b a c

Korlátozott visszalépéses elemzés az elemzés állapota tartalmazza: a pozíciót a szövegben a végrehajtandó sor sorszámát a visszatérési címeket kezdetben: S A ERROR # OK ERROR A B false = false 1 1 B true false B a true b true ( false B false S » A A » B=B B » a | b | ( B + B ) + false B false ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 2 # OK ERROR 3 A B false 4 = false 5 B true false 6 B a true 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 3 A B false 4 = false 5 B true false 6 B a true 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 4 = false 5 B true false 6 B a true 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 5 B true false 6 B a true 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 6 B a true 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 7 11 1 5 6 B a true 3 6 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 7 11 1 5 6 B a true 3 6 1 5 7 12 1 5 7 b true 3 7 1 5 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 7 11 1 5 6 B a true 3 6 1 5 7 12 1 5 7 b true 3 7 1 5 8 5 1 8 ( false 3 8 1 5 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 7 11 1 5 6 B a true 3 6 1 5 7 12 1 5 7 b true 3 7 1 5 8 5 1 8 ( false 3 8 1 5 8 1 9 B false 4 9 1 5 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 7 11 1 5 6 B a true 3 6 1 5 7 12 1 5 7 b true 3 7 1 5 8 5 1 8 ( false 3 8 1 5 8 1 9 B false 4 9 1 5 8 2 10 + false 4 6 1 5 9 11 B false a = ( a + b ) # 12 ) true false

Korlátozott visszalépéses elemzés 1 1 5 9 1 5 1 S A ERROR 1 3 1 5 10 1 5 2 # OK ERROR 1 6 1 3 6 11 1 5 3 A B false 2 3 1 6 6 1 5 11 4 = false 2 4 1 6 7 1 5 11 5 B true false 3 5 1 7 11 1 5 6 B a true 3 6 1 5 7 12 1 5 7 b true 3 7 1 5 8 5 1 8 ( false 3 8 1 5 8 1 9 B false 4 9 1 5 8 2 10 + false 4 6 1 5 9 9 OK 11 B false a = ( a + b ) # 12 ) true false