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

Størrelse: px
Begynne med side:

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

Transkript

1 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 Regulære språk (type 3-språk) o En BN-grammatikk med ett metasymbol på venstresiden og kun grunnsymboler på høyresiden, eventuelt med et metasymbol til slutt o Kan analyseres med ikke-deterministiske og deterministiske automater Kontekstfrie språk (type 2-språk) o En BN-grammatikk med bare ett metasymbol på venstresiden o Nesten alle programmeringsspråk er av denne typen o Kan analyseres med parsere (syntakstolkere) Institutt for informatikk 2 september 22 IN2-Syntaksanalyse- Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-2 Hvordan lage en deterministisk automat? En deterministisk automat (D-automat) er lett å bruke, men ikke nødvendigvis så intuitiv å forstå eller lage ra et regulært uttrykk (evt via et jernbanediagram) er det imidlertid ganske lett å lage en ikke-deterministisk automat (ID-automat) Kan ha: omme kanter (såkalte -kanter) lere kanter fra samme node med samme symbol ra jernbanediagram til ID-automat a utgangspunkt i jernbanediagrammet: Hver pens blir til en node i ID-automaten 2 Linjene (med eventuelle symboler) blir merkede kanter mellom nodene Noen kanter får et tomt symbol () 3 Merk nodene hvor man skal begynne og slutte Deretter kan vi bruke en standard-algoritme for å gjøre om ID-automaten til en D-automat Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-3 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-4

2 IN2-Syntaksanalyse-5 Institutt for informatikk 2 september 22 Eksempel: IN2-Syntaksanalyse-6 Institutt for informatikk 2 september 22 ra ikke-deterministisk til deterministisk automat Ikkedeterministisk: Deterministisk: a, a, a, a, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b, a, a,b,,d, a, a,b,,d, a, a,b,,d, a, a,b,,d, a, a,b,,d, a b d IN2-Syntaksanalyse-7 Institutt for informatikk 2 september 22 Ikke-determimistisk automat - IN2-Syntaksanalyse-8 Institutt for informatikk 2 september 22 Regulær grammatikk <uttrykk> - <startterm> <startterm> <startterm> <term> <term> <term> <term> -

3 Deterministisk automat Minimal deterministisk automat - - Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-9 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse- Implementasjon av en deterministisk automat En deterministisk automat kan lett representeres av en tabell som angir neste tilstand: t ilstand Slutt Ja Sjekkalgoritme Gitt en slik tabell t, finnes det en enkel og meget rask sjekkalgoritme: tilstand := ; while <flere tegn igjen> do begin := <neste tegn>; tilstand := t(tilstand,); end while; if slutt(tilstand) then <math funnet> else <ingen math>; Det er vanlig å innføre en tilstand for feil Ja Oppsummering: Hvordan lage raske sjekkprogrammer: Sett opp en ikke-deterministisk automat for det regulære uttrykket Lag en deterministisk automat ut fra den ikke-deterministiske automaten Sett opp tilstandstabellen t Bruk søkeløkken over til å sjekke input mot uttrykket Institutt for informatikk 2 september 22 IN2-Syntaksanalyse- Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-2

4 Kompilering? Interpretering? Ved å legge inn programsetninger for å generere kode eller kalle på rutiner får vi henholdsvis en kompilator eller en interpreter tilstand := ; while <flere tegn igjen> do begin := <neste tegn>; tilstand := t(tilstand,); // generering av kode (kompilering) eller // kall på rutiner (interpretering) end while; if slutt(tilstand) then <math funnet> else <ingen math>; Syntaksanalyse av kontekstfrie språk Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-3 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-4 Syntaksanalyse Parser: Et program som analyserer en tekst i henhold til en syntaks Alle kompilatorer og interpretere inneholder en parser Skanner: En «preprosessor» til en parser Skanner Det er vanlig at en parser har en preprosessor, kalt en skanner/leksikalsk analysator: fil Skanner tokens Parser Skanneren setter sammen tegn til symboler (ofte kalt leksikalske enheter eller tokens) Eksempel: BEGIN IDEN LPAR E RPAR END begin Outext ( Hallo ) end Et alternativt syn at skanneren konverterer fra tastaturets alfabet til språkets alfabet Skanneren kan konstrueres som en deterministisk automat Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-5 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-6

5 Skanneren forenkler parseren Uten skanner: if (a[x]== e && a[x+]== n && a[x+2]== d ) Med skanner: if (symbol == END) Streamokenizer Javas skanner Java har innebygget en fullt ferdig skanner: Streamokenizer Streamokenizer s; s = new Streamokenizer( new ilereader(new ile(filnavn)) ); Ved hver kall på snextoken( ) vil skanneren o fjerne kommentarer o hoppe over blanke or dokumentasjon: o finne neste symbol Symbolet plasseres i sttype, og kan være: o _WORD for navn (på variable, funksjoner, ) Navnet ligger i ssval o _NUMBER for tall (heltall eller flyt-tall) allets verdi ligger i snval o _EO når det ikke er flere symboler igjen o Hvis vi har et symbol (+, <=, ), ligger selve symbolet i sttype Streamokenizer kan konfigureres til ulike språk nextoken() kan gi IOExeption, så programmet må fange opp dette Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-7 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-8 En grammatikk for eksempelspråket 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> + Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-9 Eksempel: Symbolene i et L-program import javaio*; lass Lsymbols { publi stati void main(string[] args)throws Exeption { Streamokenizer s; String t; s = new Streamokenizer( new ilereader(new ile(args[]))) snextoken(); while (sttype!= s_eo) { swith(sttype) { ase s_word: t = word + ssval; break; ase s_number: t = number +snval; break; default: t = symbol + (har)sttype; break; Systemoutprintln( Line +slineno()+ : +t); snextoken(); Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-2

6 Eksempel: Symbolene i et L-program (forts) Parsering: Parsering or L-programmet?v v = v + v!v Å 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) gir programmet utskriften Line : symbol? Line : word v Line : word v Line : symbol = Line : word v Line : symbol + Line : word v Line 2: symbol! Line 2: word v 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 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-2 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-22 op-down parsering Bottom-up 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: 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> <uttrykk> + <term> <uttrykk> <term> <term> <term> * navn <term> navn URYKK <uttrykk> <uttrykk> + <term> <uttrykk> <term> <term> <term> * navn <term> navn URYKK navn * navn + navn navn * navn + navn Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-23 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-24

7 LL()-parsering LL()-parsering er en top-down strategi der vi foretar en venstreavledning fra startsymbolet Reursive desent o il hvert metasymbol svarer en metode o Metoden tar seg av det ene metasymbolet, men kan kalle andre metoder o Når metoden kalles, skal skanneren inneholde første symbol i den aktuelle produksjonen (for syntaktisk korrekt setning) o Når metoden er ferdig, skal skanneren inneholde første symbol etter den leste teksten Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-25 Syntaksanalyse av L Siden vi vil sjekke L-program tegn for tegn, kan vi bruke en meget enkel skanner: Hvert kall på read( ) legger et nytt tegn i import javaio*; lass Sanner { stati har symbol = ' '; stati boolean eof = false; stati ilereader fil; stati void read() { int ; try { do { = filread(); if ( < ) throw new IOExeption(); symbol = (har); while (CharaterisWhitespae(symbol)); ath (IOExeption e) { eof = true; symbol = ' '; Sanner(ileReader f) { fil = f; Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-26 import javaio*; lass Lparser { stati Sanner s; Parser for L ( av 6) publi stati void main(string[ ] args) { // Initialisering av skanneren: try { s = new Sanner( new ilereader(new ile(args[]))); sread(); ath (ilenotoundexeption e) { Systemoutprintln("Kan ikke lese " + args[]); Systemexit(); // "program" er startsymbolet i L-grammatikken program(); Reursive desent for L or et metasymbol med bare en mulig produksjon (skrevet i klassisk BN), er det lett å lage den tilhørende metoden: o or hvert grunnsymbol i høyresiden: Sjekk at symbolet i skanneren er lik dette grunnsymbolet o or hvert metasymbol i høyresiden: Kall metasymbolets metode Hjelpemetode o Vi bruker en hjelpemetode: lessymbol(har ) som sjekker om gjeldende symbol (i ssymbol) er lik, og leser inn neste symbol ved et kall på sread( ) Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-27 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-28

8 <program> <setningsliste> stati void program() { setningsliste(); Parser for L (2 av 6) if (!seof) { Systemoutprintln("ull etter programslutt!"); Systemexit(); <tilordning> <variabel> = <variabel> <operator> <operand> stati void tilordning() { variabel(); lessymbol('='); variabel(); operator(); operand(); Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-29 Parser for L (3 av 6) <inputsetning>? <variabel> stati void inputsetning() { lessymbol('?'); variabel(); <outputsetning>! <variabel> stati void outputsetning() { lessymbol('!'); variabel(); <variabel> v <siffer> stati void variabel() { lessymbol('v'); siffer(); Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-3 Alternative høyresider or et metasymbol med alternative høyresider må vi beregne startmengden til hver produksjon Startmengden er de 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(har ) som sjekker om gjeldende symbol (i ssymbol) er lik (uten å lese inn nytt symbol) Parser for L (4 av 6) <setning> <tilordning> <inputsetning> <outputsetning> stati void setning() { if (sjekksymbol('v')) { tilordning(); else if (sjekksymbol('?')) { inputsetning(); else if (sjekksymbol('!')) { outputsetning(); <operator> + - stati void operator() { if (sjekksymbol('+')) { lessymbol('+'); else if (sjekksymbol('-')) { lessymbol('-'); Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-3 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-32

9 Parser for L (5 av 6) <operand> <variabel> <nummer> stati void operand() { if (sjekksymbol('v')) { variabel(); else { nummer(); <siffer> Med litt effektivisering får vi: stati void siffer() { if (ssymbol >= '' && ssymbol <= '9') { sread(); else { Systemoutprintln("orventet siffer, fikk " + ssymbol); Systemexit(); Parser for L (6 av 6) <setningsliste> <setning> + stati void setningsliste() { setning(); while (sjekksymbol('v') sjekksymbol('?') sjekksymbol('!')) { setning(); <nummer> <siffer>+ Også denne er litt effektivisert: stati void nummer() { siffer(); while (ssymbol >= '' && ssymbol <= '9') { siffer(); Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-33 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-34 Kompilering? Interpretering? LL()-grammatikker <inputsetning>? <variabel> stati void inputsetning() { lessymbol('?'); variabel(); Vi kan ikke lage en reursive desent -parser for alle grammatikker, de må (som vi har sett) oppfylle følgende krav: o Grammatikken må være kontekstfri, dvs kun ha ett metasymbol på venstre side // generering av kode (kompilering) eller // kall på rutiner (interpretering) o 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()-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 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-35 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-36

10 Beregning av utvidede startmengder or å beregne de utvidede startmengdene må vi først ha beregnet tre andre mengder: Meta-til-tom-mengden Metasymboler som kan produsere den tomme setningen kompliserer ting litt, så vi beregner meta-til-tom-mengden først: 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 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 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-37 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-38 Startmengder Etterfølgermengder or enkelthets skyld sier vi at grunnsymboler har seg selv som startmengde Initialisering:La startmengden for hvert metasymbol være de grunnsymbolene som står først i en høyreside for dette metasymbolet o Se på en høyreside for et metasymbol M or hvert (grunn- eller 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 o Gjenta inntil ingen av startmengdene kan økes mer Initialisering: or 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 o o umiddelbart bak dette metasymbolet, eller bak slik at de mellomliggende symboler er metasymboler i meta-tiltom 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 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-39 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-4

11 Eksempel ølgende eksempelgrammatikk er hentet fra eksamen 996, oppgave a: U' U A B + A ( U ) B * Beregn og angi meta-til-tom mengden, og start- og etterfølgermengden til hvert av metasymbolene'' Utvidede startmengder - endelig! or 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 Metasymbol Meta-til-tom Start Etterfølger U U A B Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-4 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-42 Eksempel Vi ser igjen på grammatikken: U' U A B + A ( U ) B * Avgjør om dette er en LL()-grammatikk Begrunn svaret Hva hvis en grammatikk ikke er LL()? Vi skal se på to standard-teknikker for å skrive om en grammatikk til å bli LL() Ikke-disjunkte startmengder jerning av venstrerekursjon Produksjon U' U A B U + A ( U ) A B * B Utvidet startmengde Disjunkt? Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-43 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-44

12 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> jerning av venstrerekursjon <uttrykk> <uttrykk> + <term> <term> Strategi: Skriv om til utvidet BN: <uttrykk> <term> { + <term> * ør tilbake til klassisk BN, men nå med høyrerekursjon (og eventuelt ekstra metasymboler): <uttrykk> <term> <xterm> <xterm> + <term> <xterm> Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-45 Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-46 Andre grammatikker LL(n) LR() SLR Simple LR LALR Se kompendium 47 Ikke pensum! Institutt for informatikk 2 september 22 IN2-Syntaksanalyse-47

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

Syntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk Syntaksanalyse Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger Ark 1 av 26 Forelesning 15.10.2001 Syntaksanalyse En parser er et program som analyserer

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

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

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

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

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

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

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

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

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

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

Kap. 5, Del 2: INF / (og 2/3 og 3/3) Kap. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 23/2-2010 (og 2/3 og 3/3) Løsningsforslag s til oppgaver til kap 4 ligger bakerst her Oblig 1 legges ut i løpet av uka Stein Krogdahl, Ifi,

Detaljer

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

Dagens Tema: Grammatikker Kap. 3 i K. C. Louden INF 5110, 29. januar 2015 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

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

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

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned INF5110 V2012 Kapittel 4: Parsering ovenfra-ned (top-down) Tirsdag 7. februar Stein Krogdahl, Ifi, UiO Oppgaver som gjennomgås i morgen, onsdag: -Spørsmålene på de to siste foilene fra onsdag 1/2 (Bl.a.

Detaljer

INF 5110, 3. februar Dette foilheftet: Kapittel 3

INF 5110, 3. februar Dette foilheftet: Kapittel 3 INF 5110, 3. februar 2009 Stein Krogdahl Min Foil-stil: Ofte mer tekst enn man helt kan få med seg på forelesningen, for at de skal være gode til repetisjon De kommende ca. 4 forelesninger: Kontekstfrie

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

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 1. februar 2007 Stein

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

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

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

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

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

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

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

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO Kap.4 del I Top Down Parsering INF5110 v2005 Arne Maus Ifi, UiO Innhold Motivering Boka gir først parsering uten First/Follow-mengder og så innfører dem. Vi tar teorien først First og Follow-mengder Fjerning

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

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille

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

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

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

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

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. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO

Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO Kap. 4 del I Top Down Parsering INF5110 v2006 Stein Krogdahl Ifi, UiO 1 Innhold First og Follow-mengder Boka ser på én parseringsmetode først, uten å se på First/Follow-mengder. Vi tar teorien først To

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. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF5110 8/2-2013 tein Krogdahl Ifi, UiO 1 Bottom up parsering (nedenfra-og-opp) Tokenklasser + ikketerminaler B B Tilstander Tabell for LR-parsering

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

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

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

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

Skanning del I INF /01/15 1

Skanning del I INF /01/15 1 Skanning del I INF 5110-2015 21/01/15 1 Skanning: innhold (begge forelesningene) Hva gjør en skanner? Input: Programteksten. Output: Ett og ett token fra programteksten (sekvensielt). Regulære uttrykk/definisjoner.

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

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

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

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

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

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

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

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

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

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

Kap. 5 del 2: LR(1)- og LALR(1)-grammatikker INF5110 V2005. Stein Krogdahl, Ifi, UiO Kap. 5 del 2: LR(1)- og LALR(1)-grammatikker INF5110 V2005 Stein Krogdahl, Ifi, UiO 1 Bottom up parsering (nedenfra-og-opp) S A B B A LR-parsering og grammatikker: t 1 t 2 t 3 t 7 t 4 t 5 t 6 - LR(0) Det

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

Hovedstoffet i kap 4: 16. Februar Ifi, UiO

Hovedstoffet i kap 4: 16. Februar Ifi, UiO INF5110 V2010 Hovedstoffet i kap 4: Parsering ovenfra-ned ned ( top down ) 16. Februar 2010 Stein Krogdahl Ifi, UiO Oppgaver som gjennomgås i dag: - Spørsmålene på foil 35 og 36 fra 9/2 - Finn First og

Detaljer

Skanning del I. Kapittel 2 INF 3110/ INF

Skanning del I. Kapittel 2 INF 3110/ INF Skanning del I Kapittel 2 18.01.2013 1 Skanning: innhold (begge forelesningene) Hva gjør en skanner? Input: programteksten. Output: Ett og ett token fra programteksten (sekvensielt). Regulære uttrykk/definisjoner.

Detaljer

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord Scanning-I Kap. 2 Hovedmål Gå ut fra en beskrivelse av de enkelte leksemer (tokens), og hvordan de skal deles opp i klasser Lage et program (funksjon, prosedyre, metode) som leverer ett og ett token, med

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

Scanning - I Kap. 2. Hva scanneren gjør

Scanning - I Kap. 2. Hva scanneren gjør Scanning - I Kap. 2!! Hovedmål! Gå ut fra en beskrivelse av de enkelte tokens, og hvordan de skal deles opp i klasser! Lage et program (funksjon, prosedyre, metode) som leverer ett og ett token, med all

Detaljer

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord Scanning - I Kap. 2 Hovedmål Gå ut fra en beskrivelse av de enkelte tokens, og hvordan de skal deles opp i klasser Lage et program (funksjon, prosedyre, metode) som leverer ett og ett token, med all nødvendig

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

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

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

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

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

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

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

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF3110/4110 Programmeringsspråk Eksamensdag: 2. desember 2003 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 7 sider. Vedlegg:

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

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave 1 INF1020 h2005 Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte

Detaljer

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september INF1000 undervisningen 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 Forelesningene: Første

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 211 Programmeringsspråk Eksamensdag: 4. desember 2002 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 10 sider. Vedlegg: Tillatte

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

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

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

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 ottom up parsering (nedenfra-og-opp) Kap. 5 del 1 Intro til parsering nedenfra-og-opp samt LR(0) og LR(1) grammatikker INF5110 v2006 rne Maus, Ifi UiO t 1 t 2 t 3 t 7 t 4 t 5 t 6 LR-parsering og grammatikker

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 Eksamensdag : Tirsdag 6. juni 2006 Tid for eksamen : 09.00-12.00 Oppgavesettet er på : 5 sider Vedlegg : Intet Tillatte

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

Hovedstoffet i kap 4:

Hovedstoffet i kap 4: INF5110, 15. februar 2011 Hovedstoffet i kap 4: Parsering ovenfra-ned ( top down ) Stein Krogdahl Ifi, UiO Forbedret endelig utgave, lagt ut 16/2 Oppgaver som gjennomgås i dag: -Spørsmålene på de to siste

Detaljer

Velkommen til INF Kompilatorteknikk

Velkommen til INF Kompilatorteknikk Velkommen til INF5110 - Kompilatorteknikk Kursansvarlige: Stein Krogdahl [steink@ifi.uio.no] Birger Møller-Pedersen [birger@ifi.uio.no] Eivind Gard Lund (hjelpelærer) [eivindgl@student.matnat.uio.no] Kursområdet:

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

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

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

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

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

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) 16/ Stein Krogdahl Ifi, UiO Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF5110 16/2-2011 tein Krogdahl Ifi, UiO 1 Bottom up parsering (nedenfra-og-opp) B B t 1 t 2 t 3 t 7 t 4 t 5 t 6 LR-parsering og grammatikker:

Detaljer

2/22/2011. Høyre- og venstreavledninger. I dag. Chomsky-normalform (CNF) Chomsky-normalform (CNF) PARSING. Jan Tore Lønning & Stephan Oepen

2/22/2011. Høyre- og venstreavledninger. I dag. Chomsky-normalform (CNF) Chomsky-normalform (CNF) PARSING. Jan Tore Lønning & Stephan Oepen INF2820 Datalingvistikk V2011 Jan Tore Lønning & Stephan Oepen KONTEKSTFRIE GRAMMATIKKER OG PARSING 22. februar 2011 2 Høyre- og venstreavledninger Til hvert tre svarer det mange avledninger. For kontekstfrie

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

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

Fiktiv eksamensbesvarelse IN 211 høsten 2001

Fiktiv eksamensbesvarelse IN 211 høsten 2001 Fiktiv eksamensbesvarelse IN 211 høsten 2001 Kandidat 1 6. desember 2001 Oppgave 1: Kjøresystemer 1a: Statisk og dynamisk link egne aktiveringsstakken før kallet på P 1b: Parameteroverføring 1. Verdioverføring:

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

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