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

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

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

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

INF /2, 2015 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 V2008

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

Med rettelser til oppgave 5.18, gjort 3/3

Oppgaver til INF 5110, kapittel 5

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

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

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

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. 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

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) INF / Stein Krogdahl Ifi, UiO

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

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

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

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

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

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

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

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

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

Hovedstoffet i kap 4: 16. Februar Ifi, UiO

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

Kontekstfrie grammatikker og syntaksanalyse (parsering)

UNIVERSITETET I OSLO

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

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:

Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

Statisk semantisk analyse - Kap. 6

Statisk semantisk analyse - Kap. 6

Hovedstoffet i kap 4:

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

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

INF3110 Programmeringsspråk

MED SVARFORSLAG UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Dagens Tema: Grammatikker

Semantisk Analyse del I

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

UNIVERSITETET I OSLO

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

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

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

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

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

Dagens Tema: Grammatikker

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

MED SVARFORSLAG UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

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.

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Kap. 8 del 1 kodegenerering INF april, 2008

Anatomien til en kompilator - I

Anatomien til en kompilator - I

INF2820 Datalingvistikk V2014. Jan Tore Lønning

TMA4140 Diskret Matematikk Høst 2016

Kap. 8 del 1 kodegenerering INF5110 Vår2007

INF april, 2015 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8. Ble lagt ut 24. april

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

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Hjemmeeksamen 1 i INF3110/4110

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

Mer kodegenerering: Tilleggsnotat fra AHU. INF mai Stein Krogdahl,

INF april, 2014 Stein Krogdahl Ifi, UiO. Svar på oppgaver til kap. 8

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

UNIVERSITETET I OSLO

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

INF-5110 Oppgaver kodegenerering etc. INF-5110, vår 2011

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

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

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

Mer kodegenerering: Tilleggsnotat fra AHU Om Javas Byte-kode INF april 2009

MAT1030 Plenumsregning 1

INF Algoritmer og datastrukturer

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

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

MAT1030 Diskret Matematikk

UNIVERSITETET I OSLO

Følger Sipsers bok tett både i stoff og oppgaver.

LØSNINGSFORSLAG, SIF 5015, DISKRET MATEMATIKK 12. august 2003 Oppgave 1. La oss begynne med å bygge en ikke-deterministisk maskin:

INF2820 Datalingvistikk V Gang Jan Tore Lønning

Transkript:

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

Typisk Yacc-produsert parseringstabell (merk påfyll av ekstra reduksjoner, som en plass-optimalisering i Yacc) Grammatikk: command exp exp exp + term exp term term term term * factor factor factor NUMBER ( exp ) 2

Panic-mode for LR-parsering (det eneste vi skal se på) 3

Panic-mode for LR-parsering kan gå i evig løkke Vi bruker følgende grammatikk: command exp exp exp + term exp term term term term * factor factor factor NUMBER ( exp ) samt parseringstabellen som Yacc produserte for denne (tidligere lysark) Parsering med feil input ( n n ) : $ 0 ( n n ) $ $ 0 ( 6 n n ) $ $ 0 ( 6 n 5 n ) $ $ 0 ( 6 F 4 n ) $ $ 0 ( 6 T 3 n ) $ $ 0 ( 6 E 10 n ) $ $ 0 ( 6 F 4 n ) $ gjentar seg selv Feil, siden [10, n] i parserings-tabellen er tom. Videre: 10 har ingen goto, så E 10 poppes av 6 har goto for E T F ville gå til tilstand 10 3 4 ved input n gir dette - r4 r6 (ingen skift, dessverre!) Av T og F velger vi F, som er den minst generelle, og pusher derfor på F 4 Men da er vi tilbake til en tilstand vi har vært i (uten å ha lest noe input), og ting vil da bare gjenta seg selv. Mulig løsning (meget løslig): Hold greie på om du kommer tilbake til samme tilstand, og gjør noe spesielt: Ta da mer bort fra stakken, og forsøk igjen Kanskje: Forlange en skift-mulighet for å sette i gang igjen 4

Oppgave 5.4 5

Oppgave 5.4 (a) Samme kjerne men annen lookahead. Går igjen hele veien. I den basale LR(1)-måten skriver man disse itemene hver for seg. I LALR(1)-DFA er vil man vanligvis skrive disse to som én linje, slik: S S ( S ) ) ( 6

Oppgave 5.4 (a og b) 7

Oppgave 5.4 (a og b) r( S ε) s 2 r( S ε) r( S ε) s 5 s 4 r( S S ( S ) ) r( S ε) r( S ε) s 5 s 7 r( S S ( S ) ) r( S ε) accept r( S S ( S ) ) 1 3 6 8

Oppgave 5.4 -c

Oppgave 5.4 -c $ $ ) ( ) ) ( ) ) Follow(S) = { (, ), $ } For en del slutt-itemer får vi altså færre lookahead-symboler enn de i Follow(S). (Men det får ikke betydning for entydigheten av parseringstabellen, grammatikken er også SLR(1) )

Oppgave 5.4 - d og e $ ) ( ) ) $ ) ( ) Deloppgave (e): For riktige setninger vil LALR(1)- tabellen og LR(1)-tabellen gjøre nøyaktig de samme stegene. For gale setninger kan LALR(1)- tabellen gjøre noen flere reduksjoner før feilen oppdages r( S ε) s25 r( S ε) r( S ε) r( S ε) accept 1 36 s25 r( S S ( S ) ) s47 r( S S ( S ) ) r( S S ( S ) )

5.11 a og b A A A A a a a ε a a a For både tilstand 2 og 4 gjelder at på input a så foreslås det både å skifte og å redusere med A ε. Altså er grammatikken ikke LR(1). (b) Grammatikken genererer alle strenger med et partall antall a -er, og den er entydig siden den bare kan gjøre dette på en måte (se figur). Ekstra: Med denne grammatikken må vi imidlertid lese helt til slutten av setningen for å finne når vi skal gå over fra å skifte til å redusere. Det skal skje på midten. Vi kan dermed se at grammatikken ikke er LR(k) for noen k. Andre grammatikker som gir de samme setninger, og som helt kurant er SLR(1) er: A A a a ε eller: A a a A ε 12

Oppgave 5.12 En rimelig idiotisk grammatikk som er LR(1), men ikke LALR(1) d LR(1)-DFA en blir som angitt til venstre. De eneste stedene det kunne bli LR-konflikt er tilstandene 4 og 5 (reduse/reduser-konflikter) Men vi ser de lar seg løse i LR(1), siden det i hver tilstand er slik at lookahead-symbolet er forskjellige for de to reduksjonene. Men, når vi skal lage LALR(1)- DFA en ser vi at tilstandene 4 og 5 blir slått sammen, og da får begge reduksjonene lookaheadmengden {d, e}. Dermed lar ikke konflikten seg løse i LALR(1)- DFA en. Kunne vi også laget et eksempel der LALR(1)-DFA en fikk en skift/red.-konflikt? NEI, se oppg. 5.13 neste lysark 13

5.13: Anta at en grammatikk G er LR(1) men ikke LALR(1). Vis at LALR(1)-DFA en til G da bare kan ha red./red.-konflikter (altså kan ikke ha skift/red.-konflikter) Vi viser: Dersom LALR(1)-DFA en til en grammatikk har en skift/red.-konflikt, så vil også LR(1)-DFA en ha en skift/red.- konflikt. Kobling: Anta at G er LR(1), og at den ikke er LALR(1) bl.a. på grunn av en skift/red.-konflikt. Dette blir en selvmotsigelse, for vi har vist (til venstre) at LR(1)-DFA en da også må ha en skift/red.-konflikt, og dermed ikke være LR(1). M og N er mengder av lookahead-symboler Vi antar at skift/red.-konflikten i LALR(1)-DFA en består i at a M N. Da må enten a M eller a N, og det betyr at det måtte være en skift/red.-konflikt i en av LR(1)-tistandene. 14