Övning 5 - Tillämpad datalogi 2013

Relevanta dokument
Föreläsning 7: Syntaxanalys

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Preschool Kindergarten

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP

Textbearbetning i skalet och man-sidor

Styrteknik: Binära tal, talsystem och koder D3:1

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Övning 3 - Tillämpad datalogi 2012

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

b) S Ø aa, A Ø aa» bb, B Ø aa» bc, C Ø ac» bc» 2. Låt L vara språket över 8a< som nedanstående NFA accepterar.

Föreläsning 11 - Automater, textsökning, tillstånd

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Tildatenta Lösningsskiss

Konstruktion av datorspråk

Grundläggande datalogi - Övning 9

729G09 Språkvetenskaplig databehandling

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Programmering för språkteknologer II. OH-serie: Ändliga automater. reguljära uttryck i Java. Deterministiska ändliga automater

TDDD02 Föreläsning 2 HT Reguljära uttryck och reguljära språk Lars Ahrenberg

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

Fredag 10 juni 2016 kl 8 12

Solutions to exam in SF1811 Optimization, June 3, 2014

Pre-Test 1: M0030M - Linear Algebra.

Mer om språk och Ruby

Reguljära uttryck Grammatiker Rekursiv nedåkning Allmänna kontextfria grammatiker. Syntaxanalys. Douglas Wikström KTH Stockholm

Tentamen EDAF30 Programmering i C++

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Inlämningsuppgift MiniPlotter

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Procedurer och villkor

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Programkonstruktion och Datastrukturer

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Alfabeten, strängar och språk. String

Föreläsning 7: Syntaxanalys

12.6 Heat equation, Wave equation

Att skriva till och läsa från terminalfönstret

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

Vectorer, spannet av vektorer, lösningsmängd av ett ekvationssystem.

1 Reducerat faktorförsök rf f

Labb 1 - Textbearbetning med reguljära uttryck. Formella språk. Definitioner. Chomskyhierarkin. Formella språk. Formella språk

Lösningsförslag till exempeltenta 1

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Stad + Data = Makt. Kart/GIS-dag SamGIS Skåne 6 december 2017

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

Kelly, Kevin (2016) The Inevitable: Understanding the 12 Technological Forces The Will Shape Our Future. Viking Press.

SkillGuide. Bruksanvisning. Svenska

Exempelsamling Assemblerprogrammering

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Tentamen, Algoritmer och datastrukturer

F11 - Rekursion. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen i Objektorienterad modellering och diskreta strukturer

Programmering A. Johan Eliasson

Övning 6 - Tillämpad datalogi 2012

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

Algoritmer, datastrukturer och komplexitet

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Webbregistrering pa kurs och termin

Föreläsning 11: Rekursion

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Support Manual HoistLocatel Electronic Locks

Motivet finns att beställa i följande storlekar

Visual Basic, en snabbgenomgång

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen i Matematik 2: M0030M.

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

Föreläsning 7. Felrättande koder

Grammar exercises in workbook (grammatikövningar i workbook): WB p 121 ex 1-3 WB p 122 ex 1 WB p 123 ex 2

Grammatik. BNF-grammatik

Isometries of the plane

Styrteknik : Funktioner och funktionsblock

Webbreg öppen: 26/ /

Algoritmer, datastrukturer och komplexitet

Mer om språk och Ruby

Övning 7 - Tillämpad datalogi DD1320, TENTAMEN I TILLÄMPAD DATALOGI Tisdagen den 12 januari 2010 kl 14 18

Grundläggande datalogi - Övning 1

Det finns en handledning till kortet på hemsidan. AVR STK500.

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Listen to me, please!

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 3. Stack

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

14. Potentialer och fält

GigaCom AB Säterigatan Göteborg

729G09 Språkvetenskaplig databehandling

Grunderna i SQL del 1

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 4 Om rekursion. PK1&PM1 HT-06 moment 4 Sida 1 Uppdaterad

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Transkript:

/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 1 0 # coding : latin Övning 5 - Tillämpad datalogi 2013 Automater, reguljära uttryck, syntax Sammanfattning Idag gick vi igenom automater, reguljära uttryck och syntax. Vi exemplifierade detta genom att lösa 5 uppgifter. Vi tittade på hur next vecktorn i en KPM automat byggs up, hur reguljära uttryck kan skapas och tolkas samt vi felsökte 4 olika syntax grammatiker och skapade får egna grammatik för att kolla om en websida är rätt skriven. 1. Abrakadabra Konstruera en KMP-automat som söker efter texten ABRAKADABRA. Ange även den next-vektor som definierar automaten. Ungefär hur många jämförelser behövs för att automaten ska se att ordet inte finns med i "Harry Potter och Fenixorden", en bok på 1.8 MB? i=0 A? B? R? A? K? A? D? A? B? R? A? i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 i=11 i=12 Klar Ja: i=i+1 Nej i=next(i) i 1 2 3 4 5 6 7 8 9 10 11 next(i) 0 1 1 0 2 0 2 0 1 1 0 KMP-sökning tar m + n jämförelser (bygga upp next vektorn och sen gå igenom), där m är antal tecken i söksträngen och n är antal tecken i texten. ASCII kod krväver en byte, vanligtvis 8 bits där en bit kan ta värdet 0 eller 1 ). För varje tecken så vi får alltså 1.8 miljoner + 11 (alt. med bas två definitionen av en megabyte som då är 2 20 = 1048576 bytes så att vi får 1.8 * 2 20 + 11 = 1887437 + 11 jämförelser. 2. Värstingvrålsautomat (Tildatenta 000831) Skriv en KMP-automat som söker efter OHOJ-OHOJ! i en texfil med nedtecknade värstingvrål från en vitmaktskonsert. Ange också den next-vektor som definerar automaten.

/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 2 i=0 O? H? O? J? -? O? H? O? J?!? i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 i=11 Klar Ja: i=i+1 Nej i=next(i) i 1 2 3 4 5 6 7 8 9 10 next(i) 0 1 0 2 1 0 1 0 2 5 Regular expression Metatecken Beskrivning. matchar ett tecken, vilket som helst (utom radslut) X? matchar noll eller X X* matchar noll eller flera X X+ matchar en eller flera X [ ] matchar ett av tecknen inom klammrarna X Y matchar uttrycket X eller uttrycket Y. matchar en punkt. ("escape:a metatecken") ( ) skapar en grupp, tex (ab)+ ett eller flera ab:n n refererar n:te gruppen (0-9) For exampel, ca*t will match ct (0 a characters), cat (1 a), caaat (3 a characters), and so forth. A step-by-step example will make this more obvious. Let s consider the expression a[bcd]*b. This matches the letter a, zero or more letters from the class [bcd] (b or c or d), and finally ends with a b. Now imagine matching this RE against the string abcbd. Step Matched Explanation 1 a The a in RE matches 2 abcbd The engine matches [bcd]*, going as far as it can but the current position is to the end of the string. 3 Failure The engine tries to match b, but the current position is at the end of the string to it fauls 4 abcb Back up so that [bcd]* matches one less character 5 Failure Try b again, but the current postion is at the last character, which is d 6 abc Back up again, so that [acd]* only mathces bc 7 abcb Try b again. This time the character at the current position is b, so it succeeds. htt p : //docs.python.org/howto/regex.htmlregex howto 110 111 i m p o r t r e 112 p a t t e r n = " a [ bcd ] *b " 113 s o m e t e x t = " abcbd " 114 p r i n t r e. f i n d a l l ( p a t t e r n, s o m e t e x t )

/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 3 3. Regexp a) Givet det reguljära uttrycket s(a o)nd-?låda Skriv upp tre strängar som matchas av det reguljära uttrycket och ett som inte gör det. b) Söka efter Kronskog. Skriv ett reguljärt uttryck som matchar alla tänkbara -bara sätt att stava namnet Kronskog (Crounskog, Krohnskoog, etc). 1. sandlåda, sand-låda, sondlåda men inte syndlåda 2. i) C eller K [CK] ii) alltid ro ro ii) eventuellt flöljt av ett u u? iv) eventuellt flöljt av ett h h? v) sen alltid nsko nsko vi) eventuellt flöljt av ett o o? vii) och alltid g på slutet h? Det ger oss det regulgära uttrycket [CK]rou?h?nskoo?g Observera att [CK]ro[uh]?nskoo?g ( Kouhuhuhuhnskog), dvs multipla uh

/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 4 4. Syntax för kanadensare (Tildatenta 040313) Olle sitter och rättar ett tentatal. Tentatalet går ut på att man ska skriva en grammatik för meddelanden av följande typ: Kanot 42, 666, 4711 och 17 ska in! Kanot 1 och 2 ska in! Kanot 13 ska in! Vilken eller vilka av följande fyra alternativ kan producera dessa meddelan- den? Motivera med exempel varför de övriga inte kan producera dem. En del av alternativen kan producera oönskade meningar, man vill t ex inte ha Kanot 1 och 2, 3 och 4 ska in! Vilket eller vilka av alternativen kan producera oönskade meningar? Ge exempel. (1) ::= Kanot <tal><svans> <tal><svans> <svans> ::= och ska in!, <tal> ::= 1 2 3... (2) ::= Kanot <tal> ska in! Kanot <tal><svans> <svans> ::= och <tal> ska in!, <tal><svans> <tal> ::= 1 2 3... (3) ::= Kanot <tal><svans> <svans> ::= ska in!, <tal> och <tal> <tal> ::= <svans> 1 2 3... (4) ::= Kanot <tal><svans> <tal><svans> <svans> ::= ska in!, och <tal> ::= 1 2 3... Observera att grammatik 1,2 och 3 har rekursiva anrop medans gramatik 4 inte har det. Detta borde leda till begränsningar för vad grammatik 4 kan kan göra. Alternativ 1 och 2 kan producera alla meningarna. Alternativ 3 och 4 kan inte producera Kanot 1 och 2 ska in! Alternativ 1 och 4 godkänner felaktigt Kanot 4 och Alternativ 3 godkänner felaktigt Kanot och 2

/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 5 Exempel på syntaxträd: Mening at parsa: Kanot 42, 4711 och 17 ska in! Kanot 42, 4711 och 17 ska in! Kanot 42, 4711 och <tal> <svans> 17 ska in! Kanot 42, <tal> 4711 <svans> och 17 ska in Kanot <tal> <svans> 42, 42, 4711 och Grammatik: ::= Kanot <tal><svans> <tal><svans> <svant> ::= och ska in!, <tal> ::= 1 2 3... Utmaningen är att skriva ett program som rekursivt kan bygga trädet och identifiera att varje löv är ok. Mening at parsa: Kanot 42 och 4711 ska in! 17, Kanot 42 och 4711 ska in! 17, Kanot 42 och 4711 ska in! <tal> <svans> 17, Kanot 42 och <tal> 4711 <svans> och 17, Kanot <tal> <svans> 42 och 42 och 4711 och Grammatik: ::= Kanot <tal><svans> <tal><svans> <svant> ::= och ska in!, <tal> ::= 1 2 3... Felaktig mening som grammatiken godkänner

/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 6 5. Värsta webbsyntaxen (Tildatenta 000831) En webbfil innehåller dels webbsidans text, dels taggar för radbrytningar och indragningar. Taggen <BR> ger ny rad och för att få indragning av ett textavsnitt skriver man taggen <Q> före och taggen </Q> efter. Exempelvis ger webbfilen Organismer <BR> <Q> Djur <BR> <Q> Flugor <BR> Sillar <BR> </Q> Svamp <BR> <Q> Flugsvamp <BR> Sillkremla <BR> </Q> </Q> följande webbsideutseende: Organismer Djur Flugor Sillar Svamp Flugsvamp Sillkremla Skriv en syntax för webbfiler där endast dessa taggar och vanlig text före- kommer. Du kan få använda <text> för att beteckna godtycklig taggfri text. Låt os skriva om det: websida1= Organismer <BR> <Q> Djur <BR> <Q> Flugor <BR> Sillar <BR> </Q> Svamp <BR> <Q> Flugsvamp <BR> Sillkremla <BR> </Q> </Q> Men detta är också en websida: websida2= Djur <BR> <Q> Flugor <BR> Sillar <BR> </Q> Svamp <BR> <Q> Flugsvamp <BR> Sillkremla <BR> </Q> Så vi kan egentligen skriva websida1 som Organismer <BR> <Q> websida2 </Q>. Så texten mellan <Q> och </Q> är också en websida. Vi får regeln. (1) websida=<q> websida </Q> En trivial hemsida är endast en text, så vi behöver att grammatiken godkänner det. (2) websida=text Slutligen observerar vi att om organismer är en websida och <Q> Djur <BR> <Q> Flugor <BR> Sillar <BR> </Q> Svamp <BR> <Q> Flugsvamp <BR> Sillkremla <BR> </Q></Q> är en websida endlig (1) så får vi att websida <BR> websida är en websida. Det ger oss regeln: (3) websida=websida <BR> websida Den resulterande grammatiken blir: <hemsida> ::= <text> <Q><hemsida></Q> <hemsida><br><hemsida> <Q>::= "<Q>" </Q>::= "</Q>" <BR>::= "<BR>"