Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Från mönster till algebra
Relationsdatabasdesign
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
2D1311 Programmeringsteknik med PBL
DAB752: Algoritmteori Leif Grönqvist
För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)
Logikprogrammering Ons, 25/9
Dcg-notation 21.2 G 2.3 M (BBS 8). dagens föreläsning extra argument i dcg-notation prolog-anrop i dcg-notation avslutande kommentarer om dcg.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Filhantering Grundprincipen för filhantering Öppna filen
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Algoritmer och datastrukturer
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Växjö 29 april -04Språk & logik: Kontextfria grammatiker i språkteknologi1 DAB760, 29 april Kontextfria grammatiker i språkteknolog Leif Grönqvist
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 6: Definite Clause Grammars (kap. 7) Teori –Introducerar kontextfria grammatikor och några besläktade.
Programmering B PHP Lektion 2
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Programmering B PHP Lektion 3
Programmering i C# 3. Klasser.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmering B PHP Lektion 3
Vektorer (klassen Vector) Sortering
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Språkteknologiska metoder Språkteknologisk forskning och utveckling (HT 2006)
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Listor En lista är en föränderlig ordnad samling objekt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Det finns i V en operation kallad addition, betecknad + sådan att
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
Länkade listor Binära träd
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
Satslogik, forts. DAA701/716 Leif Grönqvist 5:e mars, 2003.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
Logik med tillämpningar
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Växjö 22 april -04Språk & logik: Introduktion till labb 11 DAB760:Språk och logik: 22 aprilLabbintroduktion Leif Grönqvist
Växjö 14 april -04Språk & logik: Finita automater1 DAB760: Språk och logik 14/4:Finita automater Leif Grönqvist Växjö Universitet.
Anders Sjögren Funktioner något in och något annat ut.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Lars Madej  Talmönster och talföljder  Funktioner.
KPP053, HT2015 MATLAB, Föreläsning 4
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg Universitet (Institutionen för lingvistik)

2Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Dagens föreläsning  Lite om ambiguitet som inte hanns med igår  Parsning I allmänhet Recursive-Descent-parsning Problem Tabelldriven parsning

3Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Ambiguitet  För uttrycket finns två olika parsträd:  Eftersom det finns uttryck som kan beskrivas av flera olika parsträd så är grammatiken ambiguös  Att en grammatik är icke-ambiguös är mycket svårt att bevisa  Problem kan uppstå om evaluering av uttryck i språket blir olika beroende på parsträd: if a then if b then c else d

4Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Icke-ambiguös grammatik för aritmetiska uttryck  Vi lägger till nya syntaktiska kategorier för termer och faktorer: 1.  + | - | 2.  * | / | 3.  ( ) | 4.  | 5.  1|2|3|4|5|6|7|8|9|0 e=expression, t=term, f=factor, n=number, d=digit  Regel 1 och 2 garanterar att och 1/2*3 grupperas korrekt

5Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Parsning  Vi vill lösa två olika uppgifter  Givet en kontextfri grammatik G vill vi klara: Igenkänning: avgör om en sträng s є Σ T * ingår i språket L(G) Parsning: bygg upp ett parsträd för s om s є L(G)  Vi har sett hur parsträdet kan se ut men inte hur man systematiskt kan konstruera det  Vi skall titta på två parsningsalgoritmer som inte klarar riktigt alla kontextfria grammatiker  Att klara alla CFG går men algoritmerna är långsammare (CYK, Earley)  En annan känd algoritm är LR-parsning (Left to Right)

6Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Recursive-Descent-parsning  Fungerar top-down  Metoden bygger på idén att göra en funktion för varje icke-terminal-symbol  Denna funktion skall avgöra om en sträng kan härledas från sin symbol och göra ett parsträd  Fungerar bara för vissa typer av grammatiker (inte så allvarligt – se lite senare)

7Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Recursive-Descent, algoritmen för igenkänning  Strängen som skall parsar finns i x 1 …x n  NextTerminal innehåller x i, den senast inlästa symbolen  s Σ N finns en funktion f s som: Returnerar True om x i …x j kan härledas från s Sätter NextTerminal till x j+1  Igenkänning av x 1 …x n som en s (startsymbolen) sker genom att anropa f s  Om svaret blir True och NextTerminal är x n+1 så ingår x 1 …x n i språket, annars inte

8Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Recursive-Descent-igenkänning, algoritmens funktioner  f s där s är en icke-terminal symbol med m produktionsregler (exklusive en eventuell s  ε) kan konstrueras enligt: m-1 if-satser efter varandra: if(cond 1 ) { }; if(cond 2 ) { }; if(cond m ) { }; Om s  ε finns returneras true, annars false

9Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Recursive-Descent-parsning, algoritmens funktioner, forts.  if-satsen som svarar mot s  x 1 …x k matchar symbolerna x 1 …x k enligt:  Om x i är en terminal symbol: om x i =NextTerminal fortsätt till nästa symbol, annars returnera false  Om x i är en icke-terminal t: om f t returnerar true så fortsätt, annars returnera false  Om x 1 …x k matchats returneras true

10Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Funktionen för “faktor”- projektionen  Pseudokoden svarande mot:  ( ) | Boolean function factor(void) { if(*NextTerminal==‘(‘)) { NextTerminal++; if(expr()) { return *NextTerminal==‘)’; } else return false; } if(num()) return true; return false; }

11Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Recursive-Descent-parsning  Liknar igenkänningsalgoritmen men funktionerna modifieras: De skall returnera träd istället för boolean (misslyckad parsning returnerar NULL) Rotnoden skapas som A och svarar mot en projektion s  x 1 …x n, och har n barn:  Om x i är en terminal så skapas barn i som ett löv med etiketten x i.  Om x i är en icke-terminal så är barn i det träd som returneras av f x i

12Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Funktionen för “faktor”- projektionen (parsning)  Pseudokoden svarande mot:  ( ) | Tree *function factorTree(void) { if(*NextTerminal==‘(‘)) { NextTerminal++; if(expr()) { if(*NextTerminal==‘)’) return node3(“factor”, node0(‘(‘), expTree(), node0(‘)’)); else return NULL; } else return NULL; } if(num()) return node1(“factor”, numTree()); return NULL; }

13Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Funktionen för “balanced”- projektionen (parsning)  Pseudokoden svarande mot:  ε,  ( balanced> ) Tree *function balancedTree(void) { if(*NextTerminal==‘(‘)) { NextTerminal++; if(balanced()) { if(*NextTerminal==‘)’) { if(balanced()) return node4(“balanced”, node0(‘(‘), balancedTree(), node0(‘)’), balancedTree()); else return NULL; } else return NULL; } return node0(””); }

14Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Exempel på Recursive-Descent- parsning  Svårt att handexekvera rekursiva funktioner…  I boken finns exempel 11.9 som är rätt bra, med tillhörande riktig C-kod 1.  ε 2.  ( balanced> ) | Parsa: ( ) ( ) ENDM

15Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Problem med Recursive-Descent- parsning  Vänster-rekursion får inte förekomma, dvs regler av typen s  s x 2 …x n Dessa skulle leda till oändlig rekursion Den vänsterrekursiva regeln  a | b kan skrivas om som två regler:  b och  a | ε  Valet av produktion för en icke-terminal måste vara entydigt bestämd av första symbolen i kroppen. Problem: → | Kan skrivas om som: → → | ε

16Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Tabelldriven parsning  Den stora nackdelen med Recursive-Descent- parsning är att man måste skriva ett nytt program för varje grammatik  En tabelldriven parser lagrar grammatiken i en tabell men programmet är samma för alla grammatiker  Två strukturer behövs: En (tvådimensionell) tabell T:  En rad för varje icke-terminal symbol  En kolumn för varje symbol s som kan inleda en sträng, härledbar från en icke-terminal symbol  Produktionsregler i cellerna En stack för återstående symboler att matcha

17Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Tabelldriven parsning, algoritmen 1.Först läggs startsymbolen på stacken och NextTerminal är första symbolen i strängen som skall parsas 2.Om stacken inte är tom så poppas översta symbolen på stacken x: 1.Om x är en terminal så matchas den mot NextTerminal, om lika så läser vi nästa symbol i strängen, annars misslyckas parsningen 2.Om x är en icke-terminal så slås x, NextTerminal upp i T. Om platsen är tom så misslyckas parsningen, annars om x  x 1 …x n hittas så läggs x n …x 1 på stacken (x 1 hamnar överst). 3.Om strängen är slut och stacken tom så lyckas parsningen annars misslyckas den

18Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Exempel på tabelldriven parsning  På sidan 627 i boken finns i fig en grammatik: 1.  w c 2.  { 3.  s ; 4.  5.  } Tabellen T blir: Låt oss testa att parsa: {w c s ; s ; } END wc{}s;END

19Språk & logik: Parsning med kontextfria grammatikerVäxjö 22 april -04 Reguljära uttryck (RE) vs. kontextfria grammatiker (CFG)  I boken finns bevis för att: Varje språk som kan beskrivas av ett RE kan också beskrivas av en CFG  I beviset gås varje konstruktion i RE igenom för att visa att man kan skapa en CFG för ett godtyckligt RE RE är inte tillräckligt kraftfullt för att beskriva alla språk som kan beskrivas av en CFG  Se exempelvis på det oändliga språket: {01, 0011, , …}  Beskrivs som CFG:  0 1 | 01