2002-11-15F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Databaser & databasdesign
PROJEKTLEDARE Projektledarrollen gestaltar projektledningsfunktionen
Utbildning i hantering av Behovstrapporna
Sortera Ordna följande bråk så att det minsta kommer först:
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Sökning och sortering Linda Mannila
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Analys av algoritmer T(n) och ordo
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.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Algoritmer och datastrukturer
Programmeringsteknik för K och Media
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 6: Definite Clause Grammars (kap. 7) Teori –Introducerar kontextfria grammatikor och några besläktade.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Programmering B PHP Lektion 2
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Språkteknologiska metoder Språkteknologisk forskning och utveckling (HT 2006)
Max start-guide Liten och väldigt snabbt ihopkastad.
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
Exder EPC. Exder EPC Välkommen! I det här bildspelet går vi igenom hur man lägger upp nya artiklar samt skickar artikelinformation. Du bläddrar framåt.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Marknadsplan Gör en marknadsplan.
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Logikprogrammering 21/10 Binära träd
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Problemlösningsmetodik
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
15 September, Lexikala element mm Eftersom C är ett språk, har det ett alfabet och regler för hur bokstäverna kan bilda ord och hur olika strukturella.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Problemlösning. Programmeringsmetaforer Instruktion Konstruktion Problemlösning Adaptation Demonstration.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: Rum: D438.
2D1311 Programmeringsteknik med PBL
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Satslogik, forts. DAA701/716 Leif Grönqvist 5:e mars, 2003.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
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.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
@ Anna Sågvall Hein 2005 Uppsala Chart Processor - UCP icke-deterministisk chartparser procedurell formalism versioner –UCP-1, UCP2 –UCP3 (light)
Pickering Robust semantisk parser Del i HIGGINS- projektet –Felhantering i dialogsystem –Navigering i stadsmiljö.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Karlstads universitet Datavetenskap DAVA07/08 JE,MG,MG,PS Kontraktsprogrammering.
Föreläsningsanteckningar Kortfattat om programmeringsmetodik Ola Ågren Hur det går till att göra ett program.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Selektion jämförande och logiska operatorer
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
DA-omvandling, oftast PWM William Sandqvist En DA-omvandlare tar stor plats på processor- chippet. Den vanligaste DA-lösningen är i stället.
Bedömning av text Innehåll Texten är lätt att följa och förstå. Innehållet stämmer med uppgiften och följer instruktionerna. Längden på texten är tillräcklig.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Utbildning i hantering av Behovstrapporna
Presentationens avskrift:

F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys i bilder Top-down-syntaxanalys Lookahead Bottom-up-syntaxanalys

F. Drewes, Inst. f. datavetenskap2 Syntaxanalysens mål kolla syntaktisk korrekthet  parserns mest grundläggande uppgift bygga ett deriveringsträd (explicit eller implicit)  trädet används senare för att översätta/interpretera programmet om möjligt, fortsätta med analysen efter att fel upptäckts  programmeraren behöver inte göra 387 kompileringsförsök om det finns 386 fel ge nyttiga felmeddelanden  vilket ställe tycks vara fel?  vad förväntades där?  vanliga åtgärder (om felet är ett ”standardfel”)

F. Drewes, Inst. f. datavetenskap3 Tillvägagångssätt och komplexitet Nivåer lexikalisk/kontextfri hittas igen i parserns struktur  lexikalisk analys=rutiner som läser inputsträngen och producerar token =en ändlig automat (i princip)  kontextfri analys= rutiner som läser token och bygger upp deriveringsträdet Kontextfri analys brukar göras top-down eller bottom-up  top-down börjar i deriveringsträdets rot (arbetar framåt)  bottom-up börjar i deriveringsträdets löv (arbetar bakåt) Komplexitet är viktig  i allmänhet O(n 3 ) för kontextfria språk (som ofta är för hög)  O(n) för LL- och LR-grammatiker

F. Drewes, Inst. f. datavetenskap4 EQ_SIGN syntaxanalys (operativsystem) lexikalisk analys void advance() (nextToken) kontextfri analys …; count = count + 1; … ? ? top-down ! regelns högersida IDENTIFIER syntaxanalys (operativsystem) lexikalisk analys void advance() (nextToken) kontextfri analys …; count = count + 1; … top-down INTEGER syntaxanalys (operativsystem) lexikalisk analys void advance() (nextToken) kontextfri analys bottom-up …; count = count + 1; … ? INTEGER syntaxanalys (operativsystem) lexikalisk analys void advance() (nextToken) kontextfri analys bottom-up …; count = count + 1; … ! SEMICOLON syntaxanalys (operativsystem) lexikalisk analys void advance() (nextToken) kontextfri analys …; count = count + 1; … bottom-up ? SEMICOLON syntaxanalys (operativsystem) lexikalisk analys void advance() (nextToken) kontextfri analys …; count = count + 1; … bottom-up Syntaxanalys i bilder

F. Drewes, Inst. f. datavetenskap5 Top-down-syntaxanalys (exempel) Varje icketerminal blir en rutin: void S() { P(); while (lex.nextToken  {PLUS, MINUS}) { lex.advance(); P(); } } void P() { F(); while (lex.nextToken  {TIMES, DIVIDE}) { lex.advance(); F(); } } void F() { S  P { (  |  ) P } P  F { (  |  ) F } F  | ( S ) EBNF (extended Backus-Naur form) {…}= får upprepas 0,1,2,… gånger …|…= val mellan alternativ if (lex.nextToken==NUMBER) lex.advance(); else if (lex.nextToken==RIGHT_PAR) { lex.advance(); S(); if (lex.nextToken==LEFT_PAR) lex.advance(); else error(”missing ‘)‘”); } else error(“number or ‘(‘ expected”); }

F. Drewes, Inst. f. datavetenskap6 Top-down: För- och nackdelar Fördelar  lätt att implementera (även för hand)  snabb (dvs linjär)  oftast är LL-grammatikklassen tillräckligt stor Nackdelar  grammatiken får inte vara vänsterrekursiv (egentligen behövs ”lookahead k”; oftast krävs k=1)  LR-grammatikklassen (som bottom-up-analys bygger på) är större än LL-grammatikklassen

F. Drewes, Inst. f. datavetenskap7 Lookahead STMT  ( CALL | ASSIGN ) { ; STMT } CALL  ( PARAM ) ASSIGN  = EXPR PARAM  … EXPR  …  i (???) måste vi kolla toknet efter nextToken (´(´ eller ´=´)  lookahead är 2, grammatiken är en LL(2)-grammatik En LL-grammatik är en LL(1)-grammatik void STMT() { if (???) CALL(); ELSE ASSIGN(); while (lex.advance==SEMICOLON) { lex.advance(); STMT(); } }

F. Drewes, Inst. f. datavetenskap8 Bottom-up-syntaxanalys Inputsträngen reduceras till startsymbolen genom att använda reglerna bakåt Det som ännu inte kan reduceras (plus ytterligare statusinformation) lagras på en stack Två typer av steg: ´shift´ och ´reduce´ Vad som görs i varje steg beror på de översta symbolerna på stacken och nextToken (  LR(1)) Informationen om vad som ska göras finns i tabellerna ´action´ och ´goto´ Nackdel: Allmän LR-parsning (Knuth, 1965) kräver för stora tabeller  ytterligare restriktioner behövs