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

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

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

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

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

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

Oppgaver til INF 5110, kapittel 5

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

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus 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

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

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

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

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

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

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 I: Top Down Parsering Pluss oppgave til kapittel 3 INF5110 V2008

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

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

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

INF 5110, 3. februar Dette foilheftet: Kapittel 3

INF januar Forelesninger fremover:

Kontekstfrie grammatikker og syntaksanalyse (parsering)

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

Med rettelser til oppgave 5.18, gjort 3/3

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

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

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

Hovedstoffet i kap 4: 16. Februar Ifi, UiO

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

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

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

Dagens Tema: Grammatikker

UNIVERSITETET I OSLO

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Dagens Tema: Grammatikker

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

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

INF2820 Datalingvistikk V2012

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

Anatomien til en kompilator - I

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

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

Dagens tema: Regulære språk og uttrykk

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

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

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 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

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

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V gang, Jan Tore Lønning

Notat for oblig 2, INF3/4130 h07

Hjemmeeksamen 1 i INF3110/4110

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

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

UNIVERSITETET I OSLO

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

INF2820 Datalingvistikk V Gang 4.5 Jan Tore Lønning

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

Kontekstfrie grammatikker og syntaksanalyse (parsering)

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 V Gang 13.3 Jan Tore Lønning

Stack. En enkel, lineær datastruktur

MED SVARFORSLAG UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Anatomien til en kompilator - I

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

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

Matchinger i ikke-bipartite grafer

TMA4140 Diskret Matematikk Høst 2016

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V Gang 27.2 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 2.3 Jan Tore Lønning

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

Slides til 12.1 Formelt språk og formell grammatikk

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

Transkript:

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110 NB: Disse foilene er litt justert og utvidet i forhold til de som er delt ut tidligere på en forelesning. Ta dem ut på nytt! Stein Krogdahl Ifi, UiO 1

Bottom up parsering (nedenfra-og-opp) S B B 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 - SLR(1) -- Samme -- - LLR(1) -- Samme -- - 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 S C B Hvilket alternativ for? Input nalysert og funnet OK token Skal matches mot resten i prosedyrene 3

Prinsippet og datastrukturen for LR-parsering S S S B t 7... t 4 t 5 t 1 B B t 2 t 3 t 6... nta at grammatikken er entydig, og at vi kjenner syntaks-treet for setningen: S S B B t 1 t 2 t 3 t 4 t 5 t 6 t 7 LRparsering : 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 S S S B t 7... t 4 t 5 t 1 B B t 2 t 3 t 6... Sett på ny ytterste produksjon S S B B t 1 t 2 t 3 t 4 t 5 t 6 t 7 nta at grammatikken er entydig, og anta at vi kjenner syntaks-treet for setningen: Ha en stakk for det som er lest (og 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. Dette tilsvarer en bestemt produksjon brukt omvendt Start-situasjonen: $ stakk input Slutt-situasjonen: t 1 t 2 t 3 t 4 t 5 t 6 t 7 $ $ S $ stakk input 5

Prinsippet med LR-parsering III S S S B t 7... t 4 t 5 t 1 B B t 2 t 3 t 6... S S 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 t 2 3 t 4 t 5 t 6 t 7 $ $ t 1 t 2 t t 3 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 t 4 5 t 6 t 7 $ $ t 4 t t 5 6 t 7 $ $ t 6 t 7 $ $ t t 6 7 $ $ B t 7 $ $ B t 7 $ $ S $ Får to typer steg: Reduksjon på toppen av stakken med bestemt α Lesing ( skift ) av input over til stakken Dersom man kjenner syntakstreet for den aktuelle setning, er det lett å angi de rette stegene. MEN: Hvordan gjøre dette underveis uten å kjenne resten av input og det fulle syntakstre?? Stakk + input: Går gjennom en høyreavledning, i omvendt rekkefølge Husk at nå skal vi redusere input (bottom up) til startsymbolet S, IKKE produsere input fra startesymbolet (slik vi gjorde top-down i kap 4)

Eksempel på LR-parsering E E E Boka: (Stakk + input) utgjør et stadium i en høyre-avledning. Den neste reduksjonen som skal gjøres, kalles situasjonens handle (håndtak). n + n 7

Eksempel på LR-parsering S S S ε ( ) S ε NB: S ε blir litt rar 8

Typisk situasjon under LR-parsering S lle slike er redusert: S Betyr at de er samme noden C B Det neste reduksjonen som blir gjort er reduksjon med C -> t1 Deretter (etter noen skift): D -> t2 t3 D $ t 1 t 2 t 3 t 4 t 5 t 6...t n $ stakken 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, men bare 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å: {S S utgjør stakken på ett eller annet stadium i LR-parsering av en 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 denne DF-en vil altså være mengder av itemer LR-parseringens hovedsetning (uformelt): Se på en situasjon under LR-parsering av en setning, der vi har strengen S på stakken. Strengen S vil da aksepteres av DF-en angitt 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. Selv om grammatikken er entydig er det ofte flere muligheter/valg (ett for hvert item). Dette kommer av at vi ikke har tatt hensyn til resten av input. 10

ltså Itemer : Hver produksjon i BNF-grammatikken gir opphav til et antall slike. For produksjonen : αx β Lager vi itemer med punktum på alle plasser (punktumet er et Meta-symbol): α X β α X β αx β αx β Punktumet angir grovt sett hvor vi er hen i dypeste aktive del av parseringen i øyeblikket: Det til venstre for punktum er gjenkjent 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 I Dette er ikke fullt forklart i boka, og er ikke pensum Skal lage en NF som aksepterer alle slike linjer, og intet annet S S 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: Stakk: $ $ 12

Kantene i NF-en II Dette er ikke fullt forklart i boka, og er ikke pensum S S 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: Stakk: x $ $ 13

Eksempel på NF E E E E + n E n Itemer (LR(0)itemer) E E E + n 14

LR(0)-NF (litt mer systematisk enn boka): start E E.E E E. ε ε E.E +n E E E. +n + ε E E+.n ε E.n n E n. LR(0)-DF, laget ved subset-konstruksjonen (kap 2): n E E+n. $ E på stakken gir tilstand 1. De to mulighetene kan da eksemplifiseres ved: E E E E E + n

Hvordan sette opp LR(0)-DF en direkte fra grammatikken (Rett fram bruk av subset-konstruksjonen) 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 B β 1 β 2... Da er også Itemene: med i I B β 2. B β 1 Start-tilstanden til LR(0)-DF en er: start S S + 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 S εbare gir ett item, nemlig: S (ltså ikke: S ε og S ε ) LR(0) DF:

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

Hva sier topp-tilstanden? Eksempel: E E E Skal skifte n + n $ Skal redusere med E E Derved: Denne grammatikken er ikke LR(0): For stakk E er neste skritt ubestemt 19

1) 2) LR(0)-grammatikker og LR(0)-algoritmen: Vi holder tilsandene mellom stakksymbolene s t... α a β... a... αa β... ngir at neste skritt kan være skift, og at dette er lovlig om neste input er a (ny topptilstand blir t) s... γ... Nåværende stakk: Ny stakk: Kalles et slutt-item (complete item) ngir at neste skritt kan være reduksjon γ... v u w z s u... v u t γ t N.B : s,t,u,v,w,z står for nummere på tilstander fra DFen. Disse ligger på stakken sammen med det vi foreløpig har skiftet inn fra innput og evt. redusert dette til. LR(0) grammatikk: Dersom dette gir entydige aksjoner for alle tilstander (kan=må), er grammatikken LR(0)! Da har vi en grei algoritme! Reduser-steget: Pop av det som tilsvarer γ (og mellomliggende tilstander), og push på, og finn riktig ny topptilstand ut fra u og

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

Tabell-oppsett for en LR(0) - grammatikk: Hvis en reduksjon bringer oss tilbake til tilstand 0 eller 3, sier Goto hvilken tilstand gir. Parsering av setningen: ((a)) ( ( a ) ) Skal her redusere med, og input tom: Ferdig

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

En (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 24

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

Er den LR(0)? Nei, pga. tilstand 1: E E E Skal skifte n + n $ Skal redusere med E E Derved: Denne grammatikken er ikke LR(0): For stakk E er neste skritt ubestemt 26