Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

Like dokumenter
Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) 21/ Stein Krogdahl Ifi, UiO. Angående Oblig 1:

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) 16/ Stein Krogdahl Ifi, UiO

Bottom up parsering (nedenfra-og-opp) Kap. 5 del 1 Intro til parsering nedenfra-og-opp samt LR(0) og SLR(1) grammatikker INF5110 v2006

Kap.4, del 2: Top Down Parsering Kap. 5, del 1: Bottom Up Parsing INF5110, 7/ Legger ut en oppgave til kap. 4 (se beskjed).

Oppgave 2. INF5110 oppgave 2 på eksamen v04 med teori. FirstMengder. Arne Maus Ifi. Eks. 4.9 Beregning av First-mengde. terminal

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 V2009

Kap. 5 del 2: LR(1)- og LALR(1)-grammatikker INF5110 V2005. Stein Krogdahl, Ifi, UiO

INF /2, 2015 Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO

Kap. 5, del 2 LR(1)- og LALR(1)-grammatikker INF5110 V2008

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

Kap. 5, Del 3: INF5110, fra 1/3-2011

Oppgaver til INF 5110, kapittel 5

INF5110, 15/ Dagens temaer: Avslutning kap. 4 Begynne på kap. 5 Se på oppgave. Stein Krogdahl, Ifi UiO

Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF /2-2011

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker

Kap. 5, Del 2: INF / (og 2/3 og 3/3)

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

Kap. 5: Oppgaver m.m. (Noen lysark fra tidligere er gjentatt her) Stein Krogdahl, Ifi, UiO 8. Mars 2007

Oppgaver til INF 5110, kapittel 5 Fullt svar på oppgave 5.4, og en del andre oppgaver med svar

Oppgaver til INF 5110, kapittel 5, med svarforslag Gjennomgått torsdag 26. febr Dette er versjon fra 28/7

INF3110 Programmeringsspråk

Kap. 4: Ovenfra-ned (top-down) parsering

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden

Repetisjon. 1 binærtall. INF3110 Programmeringsspråk. Sist så vi ulike notasjoner for syntaks: Jernbanediagrammer. BNF-grammatikker.

Kap.4 del 2 Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

Kap. 4, del I: Top Down Parsering Pluss oppgave til kapittel 3 INF5110 V2008

INF5110, onsdag 19. februar, Dagens tema: Parsering ovenfra-ned (top-down)

Stoff som i boka står i kap 4, men som er

Stoff som i boka står i kap 4, men som er. 10. Februar Ifi, UiO

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden

Oppgave 2. Eksamen INF2820, 2015, oppgave 2. La gramatikk G være:

INF 5110, 3. februar Dette foilheftet: Kapittel 3

Hvor er vi nå - kap. 3 (+4,5)? Forenklet skisse av hva en parser gjør PARSER. Kontekstfrie grammatikker og syntaksanalyse (parsering)

INF januar Forelesninger fremover:

Topic of the day: Ch. 4: Top-down parsing

Kontekstfrie grammatikker og syntaksanalyse (parsering)

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

Med rettelser til oppgave 5.18, gjort 3/3

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Hovedstoffet i kap 4: 16. Februar Ifi, UiO

Syntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Syntax/semantics - I INF 3110/ /29/2005 1

Dagens Tema: Grammatikker

INF2820 Datalingvistikk V Gang 19.3 del 1 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

2/22/2011. Høyre- og venstreavledninger. I dag. Chomsky-normalform (CNF) Chomsky-normalform (CNF) PARSING. Jan Tore Lønning & Stephan Oepen

INF5830, H2009, Obigatorisk innlevering 2. 1 Oppgave: Unære produksjoner i CKY

Anatomien til en kompilator - I

Dagens Tema: Grammatikker

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

Språktyper og syntaksanalyseteknikker. Dagens temaer. Hvordan lage en deterministisk automat? Fra jernbanediagram til ID-automat

TMA4140 Diskret Matematikk Høst 2016

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Dagens tema: Regulære språk og uttrykk

INF2820 Datalingvistikk V2012

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

Hovedstoffet i kap 4:

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden

2/24/2012. Context-Free Grammars. I dag. Avledning. Eksempel: grammar1 PARSING. Jan Tore Lønning

Hjemmeeksamen 1 i INF3110/4110

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

6. oktober Dagens program: Første time: Andre time, gjesteforelesning: Uavgjørbarhet. Stein Krogdahl. (Ikke pensum, egne foiler legges ut)

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang 4.5 Jan Tore Lønning

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

Notat for oblig 2, INF3/4130 h07

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

Anatomien til en kompilator - I

INF5110, tirsdag 5. februar, Dagens temaer: - Oppgaver til kap. 3 Svar ligger på slutten av foilene, men forsøk deg først selv!!

INF2820 Datalingvistikk V2012. Jan Tore Lønning

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgås tirsdag 21. febr. 2012

Skanning del I INF /01/15 1

MED SVARFORSLAG UNIVERSITETET I OSLO

Statisk semantisk analyse - Kap. 6 Foiler ved Birger Møller-Pedersen (Forelest 10/3 og 12/ av Stein Krogdahl)

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgått torsdag 14. febr Disse foilene er justert 15/2, kl. 11

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

3/8/2011. I dag. Dynamic Programming. Example. Example FORMELLE EGENSKAPER VED SPRÅK (KAP. 16) Jan Tore Lønning & Stephan Oepen

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

Svarforslag til ukeoppgaver til INF 4130

Transkript:

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF5110 8/2-2013 tein Krogdahl Ifi, UiO 1

Bottom up parsering (nedenfra-og-opp) Tokenklasser + ikketerminaler B B Tilstander Tabell for LR-parsering t 1 t 2 t 3 t 7 t 4 t 5 t 6 LR-parsering og grammatikker: Metodene angitt under kan i rekkefølge ta vanskeligere og vanskeligere grammatikker - LR(0) Gir ca 300 tilstander på et vanlig programmeringsspråk - LR(1) -- amme -- Vi skal se mest på denne - LLR(1) -- amme -- Og litt på denne - LR(1) Gir ca 3000 tilstander på et vanlig programmeringsspråk -utimatiserte verktøy som ut fra BNF-grammatikk leverer parserings-program: -YCC, Bison, CUP ( LLR(1) ) 2

Til sammenlikning: Top down -parsering C B Hvilket alternativ for? Input nalysert og funnet OK token kal matches mot resten i prosedyrene 3

Datastrukturen for LR-parsering B t 7... t 4 t 5 t 1 B B t 2 t 3 t 6... ett på ny ytterste produksjon. Derved vil startsymbolet aldri forkomme i en høyreside nta at grammatikken er entydig, og at vi kjenner syntaks-treet for setningen: B B t 1 t 2 t 3 t 4 t 5 t 6 t 7 LR-parsering : Ha en stakk for det som er lest Gjør reduksjonen av et subtre når det ligger på toppen av stakken 4

Prinsippet og datastrukturen LR-parsering II B t 7... t 4 t 5 t 1 B B t 2 t 3 t 6... Ny ytterste produksjon B B t 1 t 2 t 3 t 4 t 5 t 6 t 7 nta at grammatikken er entydig, og anta (foreløpig!) at vi kjenner syntaks-treet for setningen: Ha en stakk for det som er lest (og er redusert!) Gjør reduksjonen av et subtre når subtreet ligger på toppen av stakken. Da erstatter vi dette med den ikke-terminalen som produserte dette subtreet. n reduksjon: n produksjon brukt baklengs tart-situasjonen: $ t 1 t 2 t 3 t 4 t 5 t 6 t 7 $ stakk lutt-situasjonen: stakk input $ $ input 5

Prinsippet for LR-parsering og opersjonene: skift og redusèr B t 7... t 4 t 5 t 1 B B t 2 t 3 t 6... B B t 1 t 2 t 3 t 4 t 5 t 6 t 7 stakk input $ t 1 t 2 t 3 t 4 t 5 t 6 t 7 $ $ t 1 t 2 t 3 t 4 t 5 t 6 t 7 $ $ t 1 t 2 t 3 t 4 t 5 t 6 t 7 $ $ t 1 t 2 t 3 t 4 t 5 t 6 t 7 $ $ t 1 B t 4 t 5 t 6 t 7 $ $ t 4 t 5 t 6 t 7 $ $ t 4 t 5 t 6 t 7 $ $ t 4 t 5 t 6 t 7 $ $ t 6 t 7 $ $ t 6 t 7 $ $ B t 7 $ $ B t 7 $ $ $ Det blir to typer steg: kift ( les ) neste input over til stakken Reduksjon på toppen av stakken med bestemt regel α Dersom man kjenner syntakstreet for den aktuelle setning, er det lett å angi de rette stegene. MN: Hvordan i all verden gjøre dette underveis uten å kjenne verken: resten av input eller det fulle syntakstre Husk at vi nå skal redusere input (bottom up) til startsymbolet (eller ), IKK produsere input fra startesymbolet (slik vi gjorde top-down i kap 4)

ksempel på LR-parsering (når vi kjenner treet!) n + n Høyre-avledning (men håpløst eksempel på det!) I boka, men vi stresser det ikke: Den neste reduksjonen som skal gjøres, kalles situasjonens handle (håndtak). stakk + input utgjør et stadium i en høyre-avledning, men de kommer i omvendt rekkefølge av en høyre-avledning 7

ksempel på LR-parsering ε ( ) ε NB: ε blir litt rar : Ved reduksjon med denne dukker en ikketermial bare opp på enden av stakken, her og her. 8

Typisk situasjon under LR-parsering lle slike er redusert: Betyr at de er samme noden C B Det neste reduksjonen som blir gjort er reduksjon med: C -> t1 Deretter (etter noen skiftoperasjoner) reduser med: D D -> t2 t3 $ t 1 t 2 t 3 t 4 t 5 t 6...t n $ stakken token resterende input s 1 s 2 s 3 s 4...s k lest input (stakken er redusert utgave av dette) 9

Gitt en entydig grammatikk G. Denne behandles som følger for å lage en LR-parser: (Ikke alt er beskrevet i boka, og bare det i boka er pensum) Vi ser på alle mulig stakker som kan opptre, og ser disse som strenger over alfabetet: {terminaler} {ikke-terminaler}. Vi ser altså på: { utgjør stakken på ett eller annet stadium i LR-parsering av en eller annen setning i L(G)} Dette språket viser seg å være regulært, og kan beskrives av en NF der alle tilstander er aksepterende: Tilstandene angis av itemer av formen: X Y. Z (mer presist: LR(0)-itemer ) Kantene kan beskrives nokså greit (kommer snart) Denne NF-en gjør vi om til en DF på vanlig måte (subset construction fra kap. 2) Tilstandene i DF-en er mengder av NF-tilstander, og vil her altså være mengder av itemer LR-parseringens hovedsetning (uformelt): e på en situasjon under LR-parsering av en setning, der vi har strengen på stakken. trengen vil da aksepteres av DF-en omtalt over. nta at den bringer oss til DFtilstanden T. Da vil mengden av itemer i T angi de mulige lokale forhold vi har ved det punktet vi nå er i i parseringen. elv om grammatikken er entydig er det ofte flere muligheter/valg (ett for hvert item). Dette kommer av at vi ennå ikke har sett på resten av input. 10

ltså Itemer : Hver produksjon i BNF-grammatikken gir opphav til et antall slike. For produksjonen : X Y Z Lager vi itemer med punktum på alle plasser (punktumet er et Meta-symbol): X Y Z X Y Z X Y Z X Y Z Punktumet angir grovt sett hvor vi er hen i dypeste aktive del av parseringen i øyeblikket: Det til venstre for punktum er lest fra input, enten bare lest eller at deler av det er redusert til en ikke-terminal Det til høyre for punktum har vi enda ikke sett/lest 11

Kantene i NF-en Dette er ikke fullt forklart i boka, og er ikke pensum kal lage en NF som aksepterer alle slike linjer, og intet annet Gitt en grammatikk G og en situasjon under passering av en setning s i L(G). Husk: Ingen slik på venstre side. De er redusert! B Opprinnelig input: takk: $ $ 12

Mer: Kantene i NF-en Dette er ikke fullt forklart i boka, og er ikke pensum tilsvarer Gitt en grammatikk G og en situasjon under passering av en setning s i L(G). Husk: Ingen slik på venstre side. De er redusert! α X η B tilsvarer α X η ε β Y Opprinnelig input: takk: x $ $ 13

NF en som beskriver alle mulige stakker + n n Itemer (LR(0)-itemer) start + n Den samme, i litt ryddigere utgave: ε ε. ε. +n ε.n n.. +n n. + +.n n +n. 14

LR(0)-NF (ltså litt mer systematisk enn i boka): start.. ε ε. +n. +n + ε +.n ε.n n n. LR(0)-DF, laget ved subset-konstruksjonen (kap 2): n +n. $ på stakken gir tilstand 1. De to mulighetene kan da eksemplifiseres ved: Tillukning Ingen av de andre tilstandene har tillukning! + n

Hvordan sette opp LR(0)-DF en direkte fra grammatikken? (Rett fram bruk av subset-konstruksjonen. Bør trenes på!) Tillukning av item-mengde I: Dersom: α Bγ er med i I B er en ikke-terminal Tilstandsovergang ved symbol X fra tilstand I X er terminal eller ikketerminal (behandles likt!) B β 1 β 2... Da er også Itemene: med i I B β 1 B β 2 tart-tilstanden til LR(0)-DF en er: + tillukning Tilstand I:... 1 α 1 X β 1... 2 α 2 X β 2... 1 α 1 X β 1 2 α 2 X β 2 + tillukning Få med alle av formen α X β X 16

Hvordan sette opp LR(0)-DF en direkte fra grammatikken - II LR(0) NF: Merk at ε bare gir ett item, nemlig: (ltså ikke: ε og ε ) LR(0) DF:

Hva sier topp-tilstanden? Topp-tilstanden: Den DF-tilstanden vi kommer til ved å la stakken gå gjennom DF en. LR-parseringens hovedsetning (n gang til, litt løselig, bevises ikke): Itemene i topptilstanden er, ut fra det vi har lest av input, alle de mulige lokale forhold ved toppen av stakken (iden vi ikke har lest resten av input kan det være flere muligheter selv om grammatikken er entydig) B X Dersom itemet X α β er med i topp-tilstanden kan situasjonen altså være som angitt til høyre. takk: α β Resten av input: 18

Hva sier topp-tilstanden? ksempel: kal skifte n + n $ kal redusere med LR(0)-grammatikk: Topptilstanden bestemmer alltid entydig neste steg. Derved: Denne grammatikken er ikke LR(0). For stakk er neste skritt ubestemt. 19

Når er skift en mulighet? nta vi er i tilstand s under: s... α a β a t... α a β...... B ngir at situasjonen kan være som til høyre, og derved: Neste skritt kan være skift X kift er lovlig om neste input er a Ny topptilstand blir i så fall t α β Resten av input: takk: 20

LR(0)-grammatikker og LR(0)-algoritmen: nta at topptilstanden er s, og at den er slik:... Kalles et slutt-item (complete item) : γ... ngir at situasjonen kan være som til høyre, og at neste skritt derved kan være reduksjon med γ NB: Vi holder tilsandene mellom stakksymbolene Nåværende stakk... v u w z s Ny stakk:... v u t Reduser-steget: Pop av det som tilsvarer γ (og mellomliggende tilstander), og push på, og finn riktig ny topptilstand ut fra u og u γ takk: t γ B C Resten av input: 21

r eksempel-grammatikkene i Kap 5 LR(0)? er på tre grammatikker: Har vi sett på: r ikke LR(0) gir følgende LR(0) DF: Tilst. Mulig aksjoner: 0 Bare skift mulig, for ( og a 1 Bare red. mulig, med 2 Bare red. mulig, med a 3 Bare skift mulig, for ( og a 4 Bare skift mulig, for ) 5 Bare red. mulig, med () ltså: ntydig bestemt aksjon for alle tilstander betyr: Grammatikken er LR(0) MRK: Der det er reduksjon må det ikke være tvil om med hvilken produksjon! 22

Tabell-oppsett for en LR(0) grammatikk NB: Den er litt annerledes enn for LR(1), LLR(1), LR(1), som alle er like Hvis en reduksjon bringer oss tilbake til tilstand 0 eller 3, sier Goto hvilken tilstand gir. Parsering av setningen: ((a)) ( ( a ) ) kal her redusere med, og input tom: Ferdig

Parsering av noen gale strenger for: ( ) a $ 0 ( ( a ) $ $ 0 ( 3 ( a ) $ $ 0 ( 3 ( a ) $ $ 0 ( 3 ( 3 a ) $ $ 0 ( 3 ( 3 a ) $ $ 0 ( 3 ( 3 ) 5 $ $ 0 ( 3 ( 3 4 $ $ 0 ( ) $ $ 0 ( 3 ) $ Viktig: kifter aldri noe ulovlig inn på stakken! 24

n (litt ruskete) formulering av LR(0)-kravet: Dersom følgende gir en entydig algoritme er grammatikken LR(0): s er en DF-tilstand med flere itemer X t, where s t Kan forekomme i flere tilstander u u vslutning t, where u t 25

r denne grammatikken LR(0)? Nei, pga. tilstandene 0, 2 og 4 LR(0) DF: 26

r denne LR(0)? Nei, pga. tilstand 1: (har vi sett på tidligere) kal skifte n + n $ kal redusere med Derved: Denne grammatikken er ikke LR(0): For stakk er neste skritt ubestemt 27