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

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

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

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

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

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

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

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

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

INF 5110, 3. februar Dette foilheftet: Kapittel 3

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

INF januar Forelesninger fremover:

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

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

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

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

Kontekstfrie grammatikker og syntaksanalyse (parsering)

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

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

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).

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

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

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

Hovedstoffet i kap 4: 16. Februar Ifi, UiO

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

Dagens Tema: Grammatikker

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

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

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

Dagens Tema: Grammatikker

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

Hovedstoffet i kap 4:

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

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

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

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

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

Kontekstfrie grammatikker og syntaksanalyse (parsering)

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

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

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

Oppgaver til INF 5110, kapittel 5

Kontekstfrie grammatikker og syntaksanalyse (parsering)

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

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

Slides til 12.1 Formelt språk og formell grammatikk

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF mai 2014 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

INF2820 Datalingvistikk V Gang Jan Tore Lønning

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

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

Statisk semantisk analyse - Kap. 6

Statisk semantisk analyse - Kap. 6

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

Med rettelser til oppgave 5.18, gjort 3/3

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

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

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

INF2820 Datalingvistikk V2014. Jan Tore Lønning

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

Semantisk Analyse del I

kap. 8.6 Computational Geometry Hovedkapittelet (kap. 8) dreier seg generelt om devide-and-conquer eller splitt og hersk :

INF3110 Programmeringsspråk

INF2820 Datalingvistikk V2012

Anatomien til en kompilator - I

INF oktober Stein Krogdahl. Kap 23.5: Trær og strategier for spill med to spillere

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:

UNIVERSITETET I OSLO

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

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

INF2820 Datalingvistikk V Gang 13.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 26.2 Jan Tore Lønning

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

INF2820 Datalingvistikk V Gang 6.3 Jan Tore Lønning

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

Spørsmål og svar rundt oblig 1 og verktøy

To geometriske algoritmer, kap. 8.6

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

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

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

Matchinger i ikke-bipartite grafer

Dagens tema: Regulære språk og uttrykk

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

INF Algoritmer og datastrukturer

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

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

INF INF1820. Arne Skjærholt INF1820. Dagens språk: Russisk. dyes yataya l yektsiya. Arne Skjærholt. десятая лекция

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

INF Noen oppgaver til kap. 8

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF Algoritmer og datastrukturer

MAT1030 Diskret Matematikk

Transkript:

INF5110 V2010 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker 10. Februar 2010 Stein Krogdahl Ifi, UiO Oppgaver som gjennomgås 16/2: - Spørsmålene på foil 35 og 36 fra 9/10 - Finn First og Follow til grammatikken nederst på foil 15 fra 10/2 1

Dagens temaer Noe avsluttende fra sist med oppgaver som vi gjennomgår neste gang First og Follow-mengder Boka ser på en av parseringsmetodene først, uten å se på First/Follow-mengder. Vi tar dette først (hører naturlig til i kap 3, Louden) To greie transformasjoner på grammatikker Også naturlig i kap 3 Fjerning av venstre-rekursjon Venstre-faktorisering Det blir altså i dag en del detaljert pirk uten at vi nå får se andvendelser av det 2

First og Follow-mengder, hvorfor? For visse typer syntaksanalyse er det nødvendig å vite hvilke terminalsymboler l som kan komme først i strenger som er avledet fra en ikketerminal A. Denne mengden kalles First(A). F.eks. vil First(if-setning) i de fleste språk være bare nøkkelordet if, mens First(tilordning) ofte vil være mengden {navn, ( } Tilsvarende vil vi få behov for å vite hvilke terminaler som kan følge etter en gitt ikketerminal A i en eller annen setningsform (= halvutviklet setning ) i språket. Denne mengden kalles Follow(A) F.eks vil Follow(statement) i Tiny-språket (eller snarere i den gitte grammatikken for Tiny-språket) være mengden { ;, end, else, until } Vi skal se på generelle algoritmer for å finne First- og Follow-mengdene for alle ikke-terminaler i en gitt grammatikk Det som kompliserer disse algoritmene noe er produksjoner av typen A, som også gjør at vi kan få B *, selv om ikke B direkte. Slike ikketerminaler A eller B sies å være utnullbare ( nullable ) 3

Typiske situasjoner: First- og Follow-mengder a First(A) A C D E F G H a L J K a Follow(A) S $ B B C D E G H J K $ Follow(B) Det at B kan stå på slutten av en setnings-form markeres ved å la Follow-mengden til B inneholde $. Terminal-symbolet l $ tenkes altså å stå på slutten av enhver setning. Vet fra før at a First(E) Angir informasjonsflyt under algoritmene A a 4

Kompliserte situasjoner: First- og Follow-mengder a First(A) a Follow(A) A S $ B C D E M N F G H a J K B A C D E Her er både B, M, N, C og F utnullbare. Vi markerer det ved ål la deres First-mengde inneholde F G H J K A a 5

First-mengder terminal { First (A) = { a finnes avledning A * a } Def.: Dessuten: Om A er utnullbar, så er First(A) Pr. def. For terminal-symboler: First(a) = { a} Def.: A er utnullbar hvis og bare hvis A * Tar vi som algoritme for å finne First( ), se nederst. Algoritme: Gjør steg 1. Gjenta steg 2 til alle Firstmengdene har stabilisert seg. Vi snakker altså også om First av en hel streng av terminaler og ikketerminaler 6

Eks. 4.9 Beregning av First-mengde Kan fylle ut en tabell: exp addop + term multop * factor ( n First ( n ( n NB: Kan godt ta reglene i vilkårlig rekkefølge, frem og tilbake til det roer seg.

Beregning g av Follow-mengder virkårlige strenger Def: Follow (A) = { a finnes avledning S * A a } For stratsymbolet S er $ med i followmenden Dvs.: Det finnes en avledning fra setningsformen S $ til en setningsform hvor A kommer rett før a (a er en terminal) er utnullbar Algoritme: Gjør steg 1. Gjenta steg 2 og 3 til alle Followmengdene har stabilisert seg. 8

Typiske situasjoner: First- og Follow-mengder a First(A) A C D E F G H a L J K a Follow(A) S $ B B C D E G H J K $ Follow(B) Det at B kan stå på slutten av en setnings-form markeres ved å la Follow-mengden til B inneholde $. Terminal-symbolet l $ tenkes altså å stå på slutten av enhver setning. Vet fra før at a First(E) Angir informasjonsflyt under algoritmene A a 9

Beregning av Follow-mengder: 4.12 Kan fylle ut en tabell ved å gå fram og tilbake i grammatikken til det stopper: Follow exp $+ ) addop ( n term $ + * ) multop ( n factor $ + * ) 10

Et par greie transformasjoner For noen typer syntaksanalyse er det visse krav til grammatikken for at metoden skal fungere. To vanlige krav er: Grammatikken må ikke ha venstrerekursjon Altså, det må ikke finnes produksjoner av typen: A A F.eks. går da ikke: expr expr + term term Grammatikken må ikke ha noen B (ikke-terminal), slik at to alternativer for B starter på samme måte. Altså, det må ikke finnes slike: B F.eks. går da ikke: if-setn if (bet) setn-sekv end if (bet) setn-sekv else setn-sekv end 11

Fjerning av venstre-rekursjon - case 1 Kan skrives på EBNF A A A { } Eksempel: A A A A A A A A A A A A NB: Litt dumt, siden den opprinnelige venstreassossiative strukturen forsvinner. Må ev. korrigeres for. 12

Fjerning av venstre-rekursjon case 2 Case 2: Kan skrives: A -> ( β1 β2 βm) ( α1 α2 αn ) * 13

Case 3 (indirekte venstre-rekursjon) A Ba Aa c B Bb Ab d Her er det feil i boka i algoritmen s.159 Ikke med som pensum Egner seg bare til maskinell behandling 14

Eks. side 160 Fjerning av venstre-rekursjon Den tradisjonelle entydige grammatikken Med fjernet venstre-rekursjon (beholder entydigheten, men ikke assossiativiteten): 15

Venstrefaktorisering, problemet B Blir til: ------------------------------------------------------------ f-setn if (bet ) setn-sekv end if (bet ) setn-sekv else setn-sekv end Blir til: if-setn if (bet ) setn-sekv sek else-eller-endelle end else-eller-end else setn-sekv end end Blir til: ------------------------------------------------------------- if-setn if (bet ) setn end if (bet ) setn else setn if-setn if (bet ) setn else-eller-tomeller else-eller-tom else setn ε 16

Avansert venstre-faktorisering Et litt mer komplisert tilfelle: A abcb abc ae abc ae Etter steg 1: A ab A ae A cb C Etter steg 2 A a A (og ferdig): A b A E A c B C } Gjenta så lenge det er muligheter } Velg lengst mulig prefiks Gjør som over. Pass på å få med alle alternativer med dette prefikset 17