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

Save this PDF as:
 WORD  PNG  TXT  JPG

Størrelse: px
Begynne med side:

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

Transkript

1 Syntaksanalyse Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger Ark 1 av 26 Forelesning

2 Syntaksanalyse En parser er et program som analyserer en tekst i henhold til en syntaks. Alle kompilatorer og interpreter inneholder en parser. Skanner Det er vanlig at en parser har en «preprosessor» som kalles en skanner: fil Skanner tokens Parser Den setter sammen tegn til symboler (ofte kalt tokens), for eksempel BEGIN begin IDENT OutText LPAR ( TEXT "Hallo" RPAR ) END end Forelesning Ark 2 av 26

3 Parsering Parsering vil si å sjekke at en setning (eller et program) er syntaktisk riktig, det vil si å konstruere det tilhørende syntakstreet. (I praksis bryr vi oss gjerne ikke om å faktisk konstruere syntakstreet, vi nøyer oss med å vite at vi kunne laget et hvis vi hadde hatt behov for det.) Generelt ønsker vi å kunne konstruere treet ved å lese setningen en gang, fra venstre mot høyre. Eksempelgrammatikk: uttrykk uttrykk + term uttrykk term term term *navn term navn Ut fra denne grammatikken skal vi se på parsering av setningen: navn * navn + navn Forelesning Ark 3 av 26

4 Top-down parsering Her konstrueres treet ovenfra og ned, det vil si at vi starter med startsymbolet i roten, og så forsøker å avlede den aktuelle setningen ut fra dette: UTTRYKK navn * navn + navn Forelesning Ark 4 av 26

5 Bottom-up parsering Her konstruerer vi treet nedenfra og opp. Vi starter da med å finne noe i setningen som tilsvarer høyresiden i en produksjon, og reduserer denne delsetningen til det tilhørende metasymbolet. Målet er da å redusere seg tilbake til startsymbolet: UTTRYKK navn * navn + navn Forelesning Ark 5 av 26

6 LL(1)-parsering LL(1)-parsering er en top-down strategi der vi foretar en venstreavledning fra startsymbolet. Recursive descent Til hvert metasymbol svarer en metode. Metoden tar seg av det ene metasymbolet, men kan kalle andre metoder. Når metoden kalles, skal skanneren inneholde første symbol i den aktuelle produksjonen (for syntaktisk korrekt setning). Når metoden er ferdig, skal skanneren inneholde første symbol etter den leste teksten. Forelesning Ark 6 av 26

7 En grammatikk for L program setningsliste setningsliste setning + setning tilordning inputsetning outputsetning tilordning variabel = variabel operator operand operator + - operand variabel nummer inputsetning? variabel outputsetning! variabel variabel v siffer siffer nummer siffer + Forelesning Ark 7 av 26

8 Syntaksanalyse av L Siden vi kommer til å sjekke L-program tegn for tegn, kan vi bruke en veldig enkel skanner. Hvert kall på read() legger et nytt tegn i c. import java.io.*; class Scanner { static char symbol = ; static boolean eof = false; static FileReader fil; static void read() { int c; try { do { c = fil.read(); if (c < 0) throw new IOException(); symbol = (char)c; while (Character.isWhitespace(symbol)); catch (IOException e) { eof = true; symbol = ; Scanner(FileReader f) { fil = f; Forelesning Ark 8 av 26

9 Selve parseren kan da se slik ut: import java.io.*; class Lparser { static Scanner s; public static void main(string[] args) { // Initialisering av skanneren: try { s = new Scanner( new FileReader(new File(args[0]))); s.read(); catch (FileNotFoundException e) { System.out.println("Kan ikke lese " + args[0]); System.exit(1); // "program" er startsymbolet i L-grammatikken program();... Forelesning Ark 9 av 26

10 Recursive descent for L For et metasymbol med bare en mulig produksjon (og skrevet i klassisk BNF), er det lett å lage den tilhørende metoden: For hvert grunnsymbol i høyresiden: Sjekk at symbolet i skanneren er lik dette grunnsymbolet. For hvert metasymbol i høyresiden: Kall dennes metode. Hjelpemetode Vi bruker en hjelpemetode: lessymbol(char c) som sjekker om gjeldende symbol (i s.symbol) er lik c. Leser også inn neste symbol (ved et kall på s.read()). Forelesning Ark 10 av 26

11 program setningsliste static void program() { setningsliste(); if (!s.eof) { System.out.println("Tull etter programslutt!"); System.exit(1); tilordning variabel = variabel operator operand static void tilordning() { variabel(); lessymbol( = ); variabel(); operator(); operand(); Forelesning Ark 11 av 26

12 inputsetning? variabel static void inputsetning() { lessymbol(? ); variabel(); outputsetning! variabel static void outputsetning() { lessymbol(! ); variabel(); variabel v siffer static void variabel() { lessymbol( v ); siffer(); Forelesning Ark 12 av 26

13 Alternative høyresider For et metasymbol med alternative høyresider må vi beregne startmengden til hver produksjon, det vil si hvilke grunnsymboler som kan stå først i en setning avledet fra høyresiden i denne produksjonen. Hvis de ulike produksjonene til et metasymbol har disjunkte startmengder, kan vi sjekke klarsymbolet (det siste symbolet lest av skanneren) for å finne ut hvilken produksjon vi skal velge. Vi trenger da en hjelpemetode til: sjekksymbol(char c) som sjekker om gjeldende symbol (i s.symbol) er lik c (uten å lese inn nytt symbol). Forelesning Ark 13 av 26

14 setning tilordning inputsetning outputsetning static void setning() { if (sjekksymbol( v )) { tilordning(); else if (sjekksymbol(? )) { inputsetning(); else if (sjekksymbol(! )) { outputsetning(); operator + static void operator() { if (sjekksymbol( + )) { lessymbol( + ); else if (sjekksymbol( - )) { lessymbol( - ); Forelesning Ark 14 av 26

15 operand variabel nummer static void operand() { if (sjekksymbol( v )) { variabel(); else{ nummer(); siffer Med litt effektivisering får vi: static void siffer() { if (s.symbol >= 0 && s.symbol <= 9 ) { s.read(); else{ System.out.println("Forventet siffer, fikk " + s.symbol); System.exit(1); Forelesning Ark 15 av 26

16 setningsliste setning + static void setningsliste() { setning(); while (sjekksymbol( v ) sjekksymbol(? ) sjekksymbol(! )) { setning(); nummer siffer + Også denne er litt effektivisert: static void nummer() { siffer(); while (s.symbol >= 0 && s.symbol <= 9 ) { siffer(); Forelesning Ark 16 av 26

17 LL(1)-grammatikker Vi kan ikke lage en recursive descent -parser for alle grammtikker, de må (som vi har sett) oppfylle følgende krav: Grammatikken må være kontekstfri, dvs. kun ha ett metasymbol på venstre side. Under parseringen må vi vite hvilket alternativ vi skal velge; dvs. at mengden av startsymboler (den utvidede startmengden) for hvert alternativ må være disjunkte. En LL(1)-grammatikk er en grammatikk som oppfyller dette, og slik at vi hele tiden kan se på neste symbol (men ikke mer) for å bestemme hvilket alternativ som skal velges. Forelesning Ark 17 av 26

18 Beregning av utvidede startmengder For å beregne de utvidede startmengdene må vi først ha beregnet tre andre mengder: Startmengden til et metasymbol: Mengden av de grunnsymbolene som kan stå først i en (del-)setning avledet fra dette metasymbolet. Etterfølgermengden til et metasymbol: Mengden av de grunnsymboler som kan stå etter metasymbolet på et tidspunkt i avledningen. Meta-til-tom mengden: Mengden av de metasymboler som kan videreavledes til den tomme setning. Forelesning Ark 18 av 26

19 Meta-til-tom mengden Metasymboler som kan produsere den tomme setningen kompliserer ting litt, så det kan være greit å ha beregnet denne først: 1. Initialisering: La meta-til-tom mengden bestå av de metasymboler som har en tom høyreside. 2. Dersom det finnes et metasymbol med en høyreside som bare består av metasymboler som er med i meta-til-tom mengden, skal dette også inkluderes i mengden. 3. Gjenta inntil meta-til-tom mengden ikke øker mer. Forelesning Ark 19 av 26

20 Startmengder For enkelthets skyld sier vi at grunnsymboler har seg selv som startmengde. 1. Initialisering: La startmengden for hvert metasymbol være de grunnsymbolene som står først i en høyreside for dette metasymbolet. 2. Se på en høyreside for et metasymbol M. For hvert (grunneller meta-)symbol x i høyresiden som enten står først, eller bare har metasymboler fra meta-til-tom mengden foran, øk startmengden til M med startmengden til x. 3. Gjenta inntil ingen av startmengdene kan økes mer. Forelesning Ark 20 av 26

21 Etterfølgermengder 1. Initialisering: For hvert metasymbol, la etterfølgermengden være unionen av startmengdene til de (grunn- eller meta-) symbolene som i en eller annen høyreside står enten umiddelbart bak dette metasymbolet, eller bak slik at de mellomliggende symboler er metasymboler i meta-til-tom mengden. 2. Hvis metasymbolet M i en høyreside til metasymbolet N enten står bakerst, eller det bak M bare står metasymboler i meta-til-tom mengden: øk etterfølgermengden til M med etterfølgermengden til N. 3. Gjenta til ingen av etterfølgermengdene kan økes mer. Forelesning Ark 21 av 26

22 Eksempel Følgende eksempelgrammatikk er hentet fra eksamen 1996, oppgave 1a: U U AB + A (U) ε B * ε Oppgave: Beregn og angi meta-til-tom mengden, og start- og etterfølgermengden til hvert av metasymbolene. Metasymbol MTT Start Etterfølger U U A B Forelesning Ark 22 av 26

23 Utvidede startmengder - endelig! For en gitt produksjon består denne mengden av alle symbolene i startmengden til de symbolene i høyresiden som enten står først eller bare har metasymboler i meta-til-tom mengden foran seg. Hvis høyresiden er tom eller bare består av meta-til-tom mengden, inngår også symbolene i etterfølgermengden til produksjonens venstreside. Forelesning Ark 23 av 26

24 Eksempel Vi ser igjen på grammatikken: U U AB + A (U) ε B * ε Oppgave: Avgjør om dette er en LL(1)-grammatikk. Begrunn svaret. Utvidet Produksjon startmengde Disjunkt? U U AB U + A (U) A ε B * B ε Forelesning Ark 24 av 26

25 Hva hvis en grammatikk ikke er LL(1)? Vi skal se på to standard-teknikker for å skrive om en grammatikk til å bli LL(1). Ikke-disjunkte startmengder Ofte vil to alternative startsider kunne begynne på samme måte (ha overlappende utvidede startmengder), men forskjellig avslutning, som i: setning uttrykk + term uttrykk * term Vi kan her innføre et nytt metasymbol som skal stå for den varierende delen: setning uttrykk xsetning xsetning + term * term Forelesning Ark 25 av 26

26 Fjerning av venstrerekursjon uttrykk uttrykk + term term Strategi: 1. Skriv om til utvidet BNF: uttrykk term [[ + term ]] 2. Før tilbake til klassisk BNF, men nå med høyrerekursjon (og eventuelt ekstra metasymboler): uttrykk term xterm xterm ε + term xterm Forelesning Ark 26 av 26

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

Språktyper og syntaksanalyseteknikker. Dagens temaer. Hvordan lage en deterministisk automat? Fra jernbanediagram til ID-automat Dagens temaer Språktyper og syntaksanalyseteknikker Regulære språk og automater (fortsatt fra forrige uke) Syntaksanalyse o Skanner o Parsering top-down bottom-up o LL()-parsering Reursive desent orutsetninger

Detaljer

INF3110 Programmeringsspråk

INF3110 Programmeringsspråk INF3 Programmeringsspråk Dagens tema Syntaks (Komp 47, kap 3 (og noe 4)) Repetisjon Regulære språk i klassisk BNF Regulære språk i utvidet BNF Regulære språk i jerbanediagrammer Regulære språk og automater

Detaljer

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

Repetisjon. 1 binærtall. INF3110 Programmeringsspråk. Sist så vi ulike notasjoner for syntaks: Jernbanediagrammer. BNF-grammatikker. INF3 Programmeringsspråk INF3 Programmeringsspråk Dagens tema Syntaks (Komp 47, kap 3 (og noe 4)) Repetisjon Regulære språk i klassisk NF Regulære språk i utvidet NF Regulære språk i jerbanediagrammer

Detaljer

Syntax/semantics INF 3110/ /8/2004 1

Syntax/semantics INF 3110/ /8/2004 1 Syntax/semantics Program program execution Paradigms Compiling/interpretation Syntax Classes of langauges Regular langauges Context-free langauges Scanning/Parsing Meta models INF 3/4-24 9/8/24 Program

Detaljer

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

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Dagens tema Syntaks (kapittel 2.1 + Komp. 47, kap. 1 og 2) 1/19 Forelesning 6 1.10.2003 Litt om kompilering og interpretering En kompilator oversetter et program til et annet språk, for eksempel maskinspråk.

Detaljer

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

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk Litt om kompilering og interpretering Dagens tema Syntaks (kapittel 2. + Komp. 47, kap. og 2) En kompilator oversetter et program til et annet språk, for eksempel maskinspråk. Et program interpreteres

Detaljer

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

INF2100. Oppgaver 9. oktober 2012 C 100 X 10 INF2100 Oppgaver 9. oktober 2012 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side. Tallkonstanter

Detaljer

INF2100. Oppgaver uke 40 og

INF2100. Oppgaver uke 40 og INF2100 Oppgaver uke 40 og 41 2014 For å få trening i å programmere en parser, skal vi aller først gjøre det for et veldig enkelt programmeringsspråk: E. Dette språket består av uttrykk med de fire vanligste

Detaljer

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10 INF2100 Oppgaver 6. og 11. oktober 2011 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side.

Detaljer

INF2100. Oppgaver 23. og 24. september 2010

INF2100. Oppgaver 23. og 24. september 2010 INF2100 Oppgaver 23. og 24. september 2010 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med + og ; grammatikken ser du i figur 1 på neste side. Tallkonstanter består av bare ett

Detaljer

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

Syntax/semantics - I INF 3110/ /29/2005 1 Syntax/semantics - I Program program execution Compiling/interpretation Syntax Classes of langauges Regular langauges Context-free langauges Scanning/Parsing Meta models INF 3/4-25 8/29/25 Program

Detaljer

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

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker 29. januar 2013 Stein Krogdahl, Ifi, UiO NB: Ikke undervisning fredag 1. februar! Oppgaver som gjennomgås 5. februar

Detaljer

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.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.4, del 2: Top Down Parsering Kap. 5, del 1: Bottom Up Parsing INF5110, 7/2-2008 Legger ut en oppgave til kap. 4 (se beskjed). tein Krogdahl Ifi, UiO Merk: Av de foilene som ble delt ut på papir på

Detaljer

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

INF5110, 15/ Dagens temaer: Avslutning kap. 4 Begynne på kap. 5 Se på oppgave. Stein Krogdahl, Ifi UiO INF5110, 15/2-2007 Dagens temaer: Avslutning kap. 4 Begynne på kap. 5 Se på oppgave Stein Krogdahl, Ifi UiO Avslutning kap. 4 1. Vi tar ikke med i pensum noe om trebygging ut fra LL(1)- parsering med stakk

Detaljer

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

Kap. 4: Ovenfra-ned (top-down) parsering Kap. 4: Ovenfra-ned (top-down) parsering Dette bør leses om igjen etter kapittelet: First og Follow-mengder Boka tar det et stykke uti kap 4, vi tok det først (forrige foilbunke) LL(1)-parsering og boka

Detaljer

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

INF5110, onsdag 19. februar, Dagens tema: Parsering ovenfra-ned (top-down) INF5110, onsdag 19. februar, 2014 Dagens tema: Kapittel 4 Parsering ovenfra-ned (top-down) Vi har med alle foilene til kap. 4 her, også de som ble gjennomgått mot slutten av forelesning 7. februar Pensum

Detaljer

INF januar Forelesninger fremover:

INF januar Forelesninger fremover: Kontekstfrie grammatikker og syntaksanalyse (parsering) Kap. 3, 4 og 5 i Louden Kan også lese om dette i notat delvis brukt i INF 3/4110 Se kursets hjemmeside (foreløpig 2007): Pensum/læringskrav INF 5110

Detaljer

Dagens tema Grundig repetisjon og utdyping: Syntaks kontra semantikk

Dagens tema Grundig repetisjon og utdyping: Syntaks kontra semantikk Dagens tema Grundig repetisjon og utdyping: Syntaks kontra semantikk Regulære uttrykk og automataer Ulike typer språk Ulike representasjoner av regulære språk Endelige tilstandsmaskiner (FSM-er) Deterministiske

Detaljer

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

Kap. 4, del I: Top Down Parsering Pluss oppgave til kapittel 3 INF5110 V2008 Kap. 4, del I: Top Down Parsering Pluss oppgave til kapittel 3 INF5110 V2008 Stein Krogdahl Ifi, UiO NB: Av de foilene som ble delt ut på papir på forelesningen 5/2 så utgår nr 39 43. Foil 44 er tatt med

Detaljer

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at

Detaljer

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

Kap.4 del 2 Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO Kap.4 del 2 Top Down Parsering INF5110 v2005 Arne Maus Ifi, UiO LL(1) tabell for uttrykks-grammatikk Har fjernet venstrerekursjon: Har fjernet venstre-rekursjon: Alternativ def. av LL(1) grammatikker Sier

Detaljer

Dagens tema: Regulære språk og uttrykk

Dagens tema: Regulære språk og uttrykk IN 2 Programmeringsspråk Dagens tema: Regulære språk og uttrykk Ulike typer språk (Kompendium 47: 23) Hvorfor er regulære uttrykk så interessante? Ulike representasjoner av regulære språk (Kompendium 47:

Detaljer

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

Hvor er vi nå - kap. 3 (+4,5)? Forenklet skisse av hva en parser gjør PARSER. Kontekstfrie grammatikker og syntaksanalyse (parsering) Hvor er vi nå - kap. 3 (+4,5)? Kontekstfrie grammatikker og syntaksanalyse (parsering) INF5110 - kap.3 i Louden + hjelpenotat (se hjemmesida) Arne Maus Ifi, UiO v2006 program Pre - processor Makroer Betinget

Detaljer

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

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden INF 5110, 31. januar 2014 Stein Krogdahl Dagens Tema: Grammatikker Kap. 3 i K. C. Louden Min Foil-stil: Ofte mer tekst enn man helt kan få med seg på forelesningen, for at de skal være gode til repetisjon

Detaljer

Løsningsforslag til eksamen i IN 211 høsten 2001

Løsningsforslag til eksamen i IN 211 høsten 2001 Løsningsforslag til eksamen i IN 211 høsten 21 Ragnhild Kobro Runde 6. desember 21 Oppgave 1: Kjøresystemer 1a: Statisk og dynamisk link SL a = 2 a = 5 b = 3 DL main Q R S 1b: Parameteroverføring 1. Verdioverføring:

Detaljer

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

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgått torsdag 14. febr Disse foilene er justert 15/2, kl. 11 Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgått torsdag 14. febr. 2008. Disse foilene er justert 15/2, kl. 11 Oppgave 1 (Mye repetisjon): Gitt gram.: exp exp op exp (exp) num op + - * /

Detaljer

Dagens Tema: Grammatikker

Dagens Tema: Grammatikker INF 5110, 9. februar 2010 Stein Krogdahl Dagens Tema: Grammatikker Kap. 3 i K. C. Louden Min Foil-stil: Ofte mer tekst enn man helt kan få med seg på forelesningen, for at de skal være gode til repetisjon

Detaljer

Syntaksanalyse. Dagens tema: Språkdiagrammene Jernbanediagrammene er et ypperlig utgangspunkt for å analysere et program: INF2100 INF2100 INF2100

Syntaksanalyse. Dagens tema: Språkdiagrammene Jernbanediagrammene er et ypperlig utgangspunkt for å analysere et program: INF2100 INF2100 INF2100 Syntaksanalyse På skolen hadde vi grammatikkanalyse: Dagens tema: Syntaksanalyse Hva annet gjør en kompilator? Sjekking av navnebruk Testutskrifter Fanger krabber så lenge de orker Syntaksanalyse er på

Detaljer

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din. UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 211 Programmeringsspråk Eksamensdag: 6. desember 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 9 sider. Vedlegg: Ingen

Detaljer

Hva er syntaks? En overskrift i en norsk avis: Dagens tema Grundig repetisjon og utdyping:

Hva er syntaks? En overskrift i en norsk avis: Dagens tema Grundig repetisjon og utdyping: Hva er syntaks? En overskrift i en norsk avis: Fanger krabber så lenge de orker Dagens tema Grundig repetisjon og utdyping: Er det i C lov å skrive for (;;) { while () { Syntaks kontra semantikk for å

Detaljer

Dagens tema: INF2100. Syntaksanalyse. Hva annet gjør en kompilator? Sjekking av navnebruk. Testutskrifter

Dagens tema: INF2100. Syntaksanalyse. Hva annet gjør en kompilator? Sjekking av navnebruk. Testutskrifter Dagens tema: Syntaksanalyse Hva annet gjør en kompilator? Sjekking av navnebruk Testutskrifter Dag Langmyhr,Ifi,UiO: Forelesning 4. oktober 2005 Ark 1 av 20 Syntaksanalyse På skolen hadde vi grammatikkanalyse:

Detaljer

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering Dagens tema Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at vi lager dette lille

Detaljer

Dagens Tema: Grammatikker

Dagens Tema: Grammatikker INF 5110, 8. februar 2011 Stein Krogdahl Dagens Tema: Grammatikker Kap. 3 i K. C. Louden Min Foil-stil: Ofte mer tekst enn man helt kan få med seg på forelesningen, for at de skal være gode til repetisjon

Detaljer

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

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF /2-2011 Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 22/2-2011 Stein Krogdahl, Ifi, UiO Oppgaver til kap 4: På slutten av dagens foiler ligger noen oppgaver med svarforslag. Disse vil bli forholdsvis

Detaljer

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

INF5110, tirsdag 5. februar, Dagens temaer: - Oppgaver til kap. 3 Svar ligger på slutten av foilene, men forsøk deg først selv!! INF5110, tirsdag 5. februar, 2013 Dagens temaer: - Oppgaver til kap. 3 Svar ligger på slutten av foilene, men forsøk deg først selv!! - Resten av kap. 4 Parsering ovenfra-ned (top-down) (Vi har med alle

Detaljer

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

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden INF 5110, 1. februar 2012 Stein Krogdahl Dagens Tema: Grammatikker Kap. 3 i K. C. Louden Min Foil-stil: Ofte mer tekst enn man helt kan få med seg på forelesningen, for at de skal være gode til repetisjon

Detaljer

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden.

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden. Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan analysere et program? Hvordan programmere dette i Java? Hvordan

Detaljer

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

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110 NB: Disse foilene er litt justert og utvidet i forhold til de som er delt ut tidligere på en forelesning. Ta dem ut på nytt! Stein Krogdahl

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 11

INF 1010, vår 2005 Løsningsforslag uke 11 INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato

Detaljer

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning INF2820 Datalingvistikk V2012 Jan Tore Lønning KONTEKSTFRIE GRAMMATIKKER OG PARSING 23. februar 2012 2 I dag Kontekstfrie grammatikker, avledninger og trær (delvis repetisjon) Parsing: ovenifra og ned

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning INF2820 Datalingvistikk V2015 6. Gang - 23.2 Jan Tore Lønning PARSING DEL 1 2 I dag Høyre- og venstreavledninger Recursive-descent parser (top-down) Begynne Shift-reduce parser (bottom-up) 25. februar

Detaljer

INF2100. Oppgaver 26. september til 1. oktober 2007

INF2100. Oppgaver 26. september til 1. oktober 2007 INF2100 Oppgaver 26. september til 1. oktober 2007 1 Språket Denne uken skal vi implementere en utvidelse av språket fra forrige ukes oppgave. Syntaksen er vist i figur 1 på neste side og betydning er

Detaljer

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

Kap. 5, Del 3: INF5110, fra 1/3-2011 Kap. 5, Del 3: LR(1)- og LALR(1)-grammatikker INF5110, fra 1/3-2011 Bakerst: Oppgaver til kap 5 (svar kommer til gjennomgåelsen) gåe Nytt 2/3: Nå også oppgave 2 fra eksamen 2006 Stein Krogdahl, Ifi, UiO

Detaljer

Semantisk Analyse del I

Semantisk Analyse del I Semantisk Analyse del I Attributtgrammatikker Kapittel 6.1-6.2 26.02.2013 1 Statisk semantisk analyse kapittel 6: Innhold Generelt om statisk semantisk analyse Attributt-grammatikker (kapittel 6.1-6.2)

Detaljer

Dagens tema: Mer av det dere trenger til del 1

Dagens tema: Mer av det dere trenger til del 1 Dagens tema Dagens tema: Mer av det dere trenger til del 1 Hvilke klasser trenger vi? Uttrykk Typer Testutskrifter 12 gode råd Dagens tema Prosjektet Utifra dette AlboC-programmet: int pot2 (int x) { int

Detaljer

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

INF /2, 2015 Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO INF5110 17/2, 2015 Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO Mer om LR-parsering Hadde også igjen noen foiler fra 12/2 Oblig 1 er lagt ut. Det blir en intro til Oblig 1 ved Eyvind Axelsen torsdag 19/2 1 Flertydige

Detaljer

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Kontekstfrie grammatikker og syntaksanalyse (parsering) Kontekstfrie grammatikker og syntaksanalyse (parsering) INF5110 - kap.3 i Louden + hjelpenotat (se hjemmesida) Arne Maus Ifi, UiO v2005 Hvor er vi nå - kap. 3 (+4,5)? program Symboltabell tekst tokens

Detaljer

INF2820 Datalingvistikk V2012

INF2820 Datalingvistikk V2012 INF2820 Datalingvistikk V2012 Jan Tore Lønning KONTEKSTFRIE GRAMMATIKKER OG PARSING 24. februar 2012 2 1 I dag Kontekstfrie grammatikker, avledninger og trær (delvis repetisjon) Parsing: ovenifra og ned

Detaljer

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 7 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

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

INF / Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO INF5110 12/2-2013 Kap. 5, Del 2 Stein Krogdahl, Ifi, UiO Dagens temaer: Noen foiler igjen fra forrige gang SLR(1), LR(1)- og LALR(1)-grammatikker NB: Oppgaver til kap 4 og 5 er lagt ut på undervisningsplanen

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 4. juni 2008 Tid for eksamen : 14.30-17.30 Oppgavesettet er på : 7 sider Vedlegg

Detaljer

Programmering Høst 2017

Programmering Høst 2017 Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør

Detaljer

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

INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) 21/ Stein Krogdahl Ifi, UiO. Angående Oblig 1: INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) Del 1 21/2-2014 Stein Krogdahl Ifi, UiO ngående Oblig 1: Blir lagt ut tirsdag/onsdag neste uke Oblig-ansvarlig Henning Berg orienterer 28/2

Detaljer

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 V2009

Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 V2009 Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 V2009 Stein Krogdahl, Ifi, UiO Torsdag 26/2: Første time Kap. 5 (avslutning?) Andreas Svendsen kommer andre time, snakker om oblig 1 (spesielt

Detaljer

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 8 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Fredag 10. desember

Detaljer

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,

Detaljer

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal Del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud

Detaljer

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:

Detaljer

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 1 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Kandidatnr: Eksamensdato: 14.desember 2007 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasser: LO347D Web-applikasjoner med Java EE Nettstudenter

Detaljer

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

Løsningsforslag til hjemmeeksamen 2 i INF3110/4110

Løsningsforslag til hjemmeeksamen 2 i INF3110/4110 til hjemmeeksamen 2 i INF3110/4110 Roger Antonsen November 2003 Oppgave 1 Siden oppgaven går ut på å utvide programmet slik at det også genereres kode for prosedyrer, må flere funsjoner endres og legges

Detaljer

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

2/24/2012. Context-Free Grammars. I dag. Avledning. Eksempel: grammar1 PARSING. Jan Tore Lønning INF2820 Datalingvistikk V2012 Jan Tore Lønning KONTEKSTFRIE GRAMMATIKKER OG PARSING 24. februar 2012 2 Context-Free Grammars Det mest sentrale verktøyet i datalingvistikk 24. februar 2012 3 2/24/2012 Speech

Detaljer

INF 2820 V2016: Obligatorisk innleveringsoppgave 3

INF 2820 V2016: Obligatorisk innleveringsoppgave 3 INF 2820 V2016: Obligatorisk innleveringsoppgave 3 Besvarelsene skal leveres i devilry innen torsdag 21.4 kl 18.00 Filene det vises til finner du i o /projects/nlp/inf2820/cfg Oppgave 1: Shift-reduce-effektivisering

Detaljer

Løse reelle problemer

Løse reelle problemer Løse reelle problemer Litt mer om løkker, metoder med returverdier, innlesing fra fil og strenger INF1000, uke5 Ragnhild Kobro Runde MER OM LØKKER Repetisjon fra forrige uke: while Syntaks: while (condition)

Detaljer

INF2820 Datalingvistikk V Gang Jan Tore Lønning

INF2820 Datalingvistikk V Gang Jan Tore Lønning INF2820 Datalingvistikk V2016 6. Gang - 24.2 Jan Tore Lønning PARSING DEL 1 2 I dag Hva er parsing? Høyre- og venstreavledninger Recursive-Descent parser (top-down) Shift-Reduce parser (bottom-up) Pythonimplementasjon:

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at

Detaljer

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

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene Dagens tema: INF 2100 8. september 2004 Mer om strukturen i treet og hvordan bygge det Testing av at navn er deklarert og brukt riktig Arbeid i gruppene neste uke: Oppgaver relevant for dette stadiet i

Detaljer

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning INF2820 Datalingvistikk V2016 8. Gang 9.3 Jan Tore Lønning CHART-PARSING 2 I dag Bakgrunn Svakheter med andre parsere CKY og Chart Chart-parsing: hovedideer BU chart-parsing algoritmen Algoritmen uttrykt

Detaljer

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015 Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den

Detaljer

Oppgave 2. Eksamen INF2820, 2015, oppgave 2. La gramatikk G være:

Oppgave 2. Eksamen INF2820, 2015, oppgave 2. La gramatikk G være: 2 Eksamen INF2820, 2015, oppgave 2 Oppgave 2 La gramatikk G være: S > NP VP VP > VI VP > VTV NP VP > VS CP CP > C S NP > 'dyret' 'barnet' 'Kari' 'Ola' VI > 'sov' 'smilte' 'danset' VTV > 'kjente' 'likte'

Detaljer

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning

Detaljer

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn? Dagens tema: 12 gode råd for en kompilatorskriver Hva skal gjøres med navn? Sjekking av navn Hvordan sjekke navn? Testutskrifter 12 gode råd En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme

Detaljer

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær: TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer

Detaljer

Hjemmeeksamen 2 i INF3110/4110

Hjemmeeksamen 2 i INF3110/4110 Hjemmeeksamen 2 i INF3110/4110 Innleveringsfrist: onsdag 19. november kl. 1400 Innlevering Besvarelsen av oppgave 2,3,4 og 5 skal leveres skriftlig på papir i IFI-ekspedisjonen. Merk denne med navn, kurskode,

Detaljer

INF1000 - Løsning på seminaropppgaver til uke 8

INF1000 - Løsning på seminaropppgaver til uke 8 INF1000 - Løsning på seminaropppgaver til uke 8 Oppgave 1 a) for(string nokkel : studenter.keyset){ System.out.println(nokkel); Studenten sitt navn blir skrevet ut. b) for(student dennestudenten : studenter.values()){

Detaljer

Videregående programmering 6

Videregående programmering 6 Videregående programmering 6 1. Feilkontroll i klasser uten unntaksobjekter Klasser skal lages sikre. Argumentverdier skal kontrolleres, og eventuelle feil skal rapporteres til klienten. I praksis har

Detaljer

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20 Java på 20 enkle ark spesielt for de som kan Simula (og gjerne litt C) Ark 1 av 20 Forelesning 28.9.1998 Et minimalt eksempel Filen Hallo.java ser slik ut: class Hallo { public static void main(string

Detaljer

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2018 tirsdag 23. januar INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean

Detaljer

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste Datafiler og serialisering Tekstfiler Scanner klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php

Detaljer

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Kontekstfrie grammatikker og syntaksanalyse (parsering) Kontekstfrie grammatikker og syntaksanalyse (parsering) Kap. 3, 4 og 5 i Louden Kan også lese om dette i notat delvis brukt i INF 3/4110 Se kursets hjemmeside: Pensum/læringskrav INF 5110 6. februar 2007

Detaljer

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

Stoff som i boka står i kap 4, men som er INF5110 V2011 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker 9. Februar 2011 Stein Krogdahl, Ifi, UiO Oppgaver som gjennomgås gå tirsdag 15/2: - Spørsmålene på de to siste foilene

Detaljer

Løsningsforslag til eksamen i IN 211 høsten 2002

Løsningsforslag til eksamen i IN 211 høsten 2002 Løsningsforslag til eksamen i IN 211 høsten 2002 Ragnhild Kobro Runde og Gerhard Skagestein 4. desember 2002 Oppgave 1: Kjøresystemer 1a: Statisk skop Print-setningen vil skrive ut 2, da det i C er main

Detaljer

Kap. 5, del 2 LR(1)- og LALR(1)-grammatikker INF5110 V2008

Kap. 5, del 2 LR(1)- og LALR(1)-grammatikker INF5110 V2008 Kap. 5, del 2 LR(1)- og LALR(1)-grammatikker INF5110 V2008 Stein Krogdahl, Ifi, UiO I dag 19/2: Time 1: Fortsette kap.5 Time 2: Hjelpelærer Fredrik Sørensen presenterer Oblig 1 Plan framovrer: Torsdag

Detaljer

Eksempel 1 Eksempel 2 Dramatisering. INF1000 uke 3. Sundvollen 7. september 2015 Dag Langmyhr. INF1000 Sundvollen

Eksempel 1 Eksempel 2 Dramatisering. INF1000 uke 3. Sundvollen 7. september 2015 Dag Langmyhr. INF1000 Sundvollen INF1000 uke 3 Sundvollen 7. september 2015 La oss starte med noe helt trivielt Problem: Sangtekster Du har fått ansvaret for å lage hefter for en allsangsaften. Den store favoritten er 99 bottles of beer

Detaljer

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15. Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 15. januar 2016 Forkurs INF1010 - dag 3 Strenger 2 Forkurs INF1010 - dag

Detaljer

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 9.3 Jan Tore Lønning INF2820 Datalingvistikk V2016 8. Gang 9.3 Jan Tore Lønning CHART-PARSING 2 I dag Bakgrunn Svakheter med andre parsere CKY og Chart Chart-parsing: hovedideer BU chart-parsingalgoritmen Algoritmen uttrykt

Detaljer

Dagens tema: 12 gode råd for en kompilatorskriver

Dagens tema: 12 gode råd for en kompilatorskriver Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme

Detaljer