Statisk semantisk analyse - Kap. 6

Like dokumenter
Statisk semantisk analyse - Kap. 6

Semantisk Analyse del I

Statisk semantisk analyse - Kap. 6 Foiler ved Birger Møller-Pedersen (Forelest 10/3 og 12/ av Stein Krogdahl)

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

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

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

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

Kap. 4 del I Top Down Parsering INF5110 v2006. Stein Krogdahl Ifi, UiO

Datatyper og typesjekking

Anatomien til en kompilator - I

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

Spørsmål og svar rundt oblig 1 og verktøy

Datatyper og typesjekking

Kap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars Dagens tema: Typer og typesjekking

Datatyper og typesjekking

Anatomien til en kompilator - I

Datatyper og typesjekking

Hovedstoffet i kap 4: 16. Februar Ifi, UiO

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

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

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. 5, Del 2: SLR(1), LR(1)- og LALR(1)-grammatikker INF5110 V2009

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

UNIVERSITETET I OSLO

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

Dagens Tema: Grammatikker

UNIVERSITETET I OSLO

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

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

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

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

Hovedstoffet i kap 4:

INF 5110, 3. februar Dette foilheftet: Kapittel 3

Obligatorisk Oppgave 1

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

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

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

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

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

Dagens Tema: Grammatikker

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

Kap 6.3: Symboltabellen Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 17. mars Dagens tema:

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

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

UNIVERSITETET I OSLO

Diverse eksamensgaver

Obligatorisk oppgave 1 INF Kompilatorteknikk Våren 2012 Frist mandag 19. mars

INF Oblig 2 semantikksjekk og kodegenerering

INF5110. Oblig 2 presentasjon

INF januar Forelesninger fremover:

Obligatorisk Oppgave 1

Obligatorisk Innlevering 2

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

MED SVARFORSLAG UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Kontekstfrie grammatikker og syntaksanalyse (parsering)

Oppgaver til INF 5110, kapittel 4, med svarforslag Gjennomgås tirsdag 21. febr. 2012

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Semantisk Analyse del III

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

INF3110 Programmeringsspråk

UNIVERSITETET I OSLO

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

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

Stoff som i boka står i kap 4, men som er. 10. Februar Ifi, UiO

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

UNIVERSITETET I OSLO

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

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

Hjemmeeksamen 2 i INF3110/4110

Oversikt. INF5110 Obligatorisk Oppgave 1. Andreas Svendsen SINTEF

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

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

Skal bindes opp til en deklarasjon av samme navn

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

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

Variable Man kan bruke variable i ML. ML (kap 5 og 6) Nye datatyper INF3110/4110 INF3110/4110 INF3110/4110 INF3110/4110. Variable i ML.

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

Rekker (eng: series, summations)

Syntax/semantics INF 3110/ /8/2004 1

Kap. 5: Oppgaver m.m. (Noen lysark fra tidligere er gjentatt her) Stein Krogdahl, Ifi, UiO 8. Mars 2007

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Hjemmeeksamen 1 i INF3110/4110

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt

Dagens tema: Sjekking

Skal bindes opp til en deklarasjon av samme navn

INF2820 Datalingvistikk V2012

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

INF2820 Datalingvistikk V2012. Jan Tore Lønning

UNIVERSITETET I OSLO

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

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering

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

Beskrivelse av programmeringsspråket Simpila INF Kompilatorteknikk Våren 2012

Kap. 8 del 1 kodegenerering INF april, 2008

Dagens tema: Mer av det dere trenger til del 1

Transkript:

Statisk semantisk analyse - Kap. 6 Generelt om statisk semantisk analyse Attributt-grammatikker Symboltabell Datatyper og typesjekking 3110/4110-2004 5110-2009 3/3/2009 1

Generelt om semantisk analyse Oppgave: Sjekke alle krav i språkdefinisjonen i som kan sjekkes før utførelsen ikke naturlig sjekkes under syntaktisk analyse Merk Ikke altid klart hvor grensen mellom syntaktisk/semantisk sjekk går (eller bør velges ) If a then... Må godkjennes syntaktisk If a+b then...?? 3110/4110-2004 IN F 5110-2009 3/3/2009 2

Poenger og begreper Typiske ting som sjekkes at bruk av navn er konsistent med deres deklarasjon at typen av (sub)-uttrykk stemmer med operasjonene Det vil altid være ting som ikke kan sjekkes før utførelsen index out of range i arrayer none-test for remote access ra r.a Stor forskjell på språk med og uten typer på variable og parametre data er egentlig altid typet om variable ikke er typet: t testing ti hele tiden på at data-operasjoner er OK om variable er typede: Nesten all sjekk kan gjøres på kompileringstidspunktet, i kt t og det kan genereres bedre kode 3110/4110-2004 IN F 5110-200 9 3/3/2009 3

En drøm men Intet t standard d beskrivelsesspråk Input til semantisk sjekker er rimelig komplisert Det er altid en masse ad-hoc regler Derfor Man ser på generelle metoder Men, de må programmeres i hvert tilfelle Why MDA PIM to PSM via a model of the platform will stay a dream 3110/4110-2004 IN F 5110-200 9 3/3/2009 4

Attributt og attributt-grammatikker En attributt er en egenskap ved et språkbegrep Eksempler: statisk? også: typen til uttrykk dynamisk? (av og til statisk) {Fortran: statisk, Java: dynamisk} statisk? statisk Statiske attributter: Kan beregnes før utførelsen Dynamiske attributter: Må beregnes under utførelsen For attributt-grammatikker er alle attributter statiske, og de er definert i tilknytning til grammatikken for språket 3110/4110-2004 IN F 5110-200 9 3/3/2009 5

Attributt-grammatikker Attributter er variable knyttet til nodene i parseringstreet Hver semantisk Deres verdier regel er knyttet til definert ved en produksjon semantiske regler Bare ett attribut til hvert symbol, alle har samme navn, bare een regel pr produksjon 3110/4110-2004 5110-2009 3/3/2009 6

Attributt-grammatikker Gitt en grammatikk på ren BNF-form For hvert grammatikk-symbol X (terminal eller ikke-terminal) skal det være gitt en mengde (navnede) attributter Attributt-mengdene for de forskjelige symboler kan generelt være helt forskjellige, men har ofte mye felles Attributtene er ment å materialisere seg som variable knyttet til nodene i et parseringstre Attributten a til noden X skrives X.a Attributtene er definert ved at det til hver regel er knyttet en likning av formen: X 0 -> X 1 X 2 X 3 må være arvet a X 0 a 1 a 2 X 1 X 2 X 3 3110/4110-2004 IN F 5110-200 9 arvet attributt a 1 a 1 a 1 a 2 syntetisert attributt 3/3/2009 7

Eksempel Alle symboler (bortsett fra +, - og * ) har det ene attributtet val. exp i brukes hvis samme symbol fler ganger Skal ikke beregnes ved semantiske regler 3/3/2009 8 3110/4110-2004 5110-200 9

Eksempel Attributter number: val digit: val Terminaler: - (ingen) Litt merkelig eksempel, da dette vanligvis gjøres i scanneren 3110/4110-2004 5110-200 9 3/3/2009 9

Syntetiserte attributter Trykkfeil: A.a får også være avhengig av A.b dersom b er et arvet attributt NB: Hvert attributt må velges til enten å være syntetisert ti t eller arvet arvede 3110/4110-2004 IN Avhengighet i en S-attribut-grammatikk syntetiserte Mulig avhengighet for syntetisert attributt 3/3/2009 10 F 5110-200 9

Arvede attributter An attribute that is not synthesized is called an inherited i attribute. Heller: et attributt sies å være arvet, når det defineres for et symbol på høyresiden av de produksjoner det opptrer i A -> X 1 X 2 X 3 X 2.a = A.b+X 1.c+X 3.d b 3110/4110-2004 IN d c a 3/3/2009 11 F 5110-200 9

Man kan gjerne tenke i flertydige grammatikker abstrakte syntakstrær Attributter exp: val number: val (fra scanneren) terminaler: - 3110/4110-2004 5110-2009 3/3/2009 12

Attr.-grammatikk som bygger abstrakt syntakstre exp term term * factor factor exp number lexval=42 3110/4110 - Attributter: exp: tree term: tree factor: tree number: lexval Merk: det abstrakte syntakstreet bygges ut fra at vi har det konkrete parseringstreet exp term factor - term factor number - 2004 IN F 5110-200 9 lexval=34 number lexval=3 3/3/2009 13

Grammatikk med arvede attributter Attributter decl: - type, varlist,id: id: dtype Attributtet t dtype er her et arvet attributt Vi kan skrive om grammatikken slik at den blir nesten syntetisert (eksempel 6.18) 3110/4110-2004 IN Avhengighetsgraf F 5110-2009 3/3/2009 14

Eksempel 6.18 Denne ga arvede attr.: Nytt forslag: dtype er nå nesten bare syntetisert er egentlig arvede, men kan gjøres ferdige fra var-list og decl 3/3/2009 15 3110/4110-2004 5110-2009

Eksempel på arvede attributter Attributter based-num: val basechar: base (syntetisert) num: val, base (base er arvet) digit: val (val er overalt syntetisert ) 3110/4110-2004 IN F 5110-200 9 3/3/2009 16

Kan også lages om til syntetiserte attributter Mulig beregningsrekkefølge 3110/4110-2004 IN F 5110-200 9 3/3/2009 17

Konsistens og beregnbarhet Alle attributter er enten arvede eller syntetiserte Men merk: OK at basechar.base syntetisert, mens num.base arvet Alle attributter må være definerte. Gjøres ved at innen hver produksjon: alle syntetiserte attributter i venstresiden er definert alle arvede attributter i høyresiden er definert det må ikke være noen lokale avhengighets-løkker Siden alle attributter ttib er enten arvede eller syntetiserte, ti t er hvert attributt ttib tti et parseringstre definert een og bare een gang Def 1 Def 2 9Def 3110/4110-2004 IN F 5110-200 3/3/2009 18

Løkker i avhengighets-grafen Ikke i noe syntakstre må det være løkker i avhengighetsgrafen! h Generelt er dette vanskelig å garantere Man kan sjekke det etter at treet er bygget. Om ikke løkker: Finn topologisk sortering som gir brukbar rekkefølge Det som brukes Man overbeviser seg på forhånd om at det ikke kan bli løkker i noe syntakstre Forhåndsbestemmer en rekkefølge for beregning 3110/4110-2004 IN F 5110-2009 3/3/2009 19

Beregningsalgoritme for type-grammatikk NB: Treet antas å være bygget ferdig på forhånd Filosofi Syntetiserte attributter settes i T ut fra barnas verdier Arvede attributter setts i barna til T ut fra verdiene i T og i andre barn 3110/4110-2004 5110-2009 3/3/2009 20

3110/4110-2004 5110-2009 3/3/2009 21

Beregning for base -grammatikken Antar ferdiglaget tre Samme filosofi som for foil 20. 3110/4110-2004 5110-2009 3/3/2009 22

Alternativ til EvalWithBase For basechar er den base,ellers er den val Mangler teknisk en parameter, men uten betydning Ny filosofi Returverdier er syntetiserte attributter Parametere er arvede attributter 3110/4110-2004 IN F 5110-200 9 3/3/2009 23

3110/4110-2004 5110-2009 3/3/2009 24

For beregning under parsering venstre > høyre Trykkfeil: Krever også X 0.a 1,... X o.a k må alle være arvede attributter (ellers kan det oppstå løkker, og man kan få høyre->venstre avhengigheter 3110/4110-2004 IN F 5110-200 9 3/3/2009 25

Beregning av L-attribut-gramm. under recursive descent parsering A aa sa A ->... B C D... B C D int A(aA){... if <A-> BCD skal velges> then { int ab,sb,ac,sc,ad,sd ab = fb(aa); sb = B(aB); ac = fc(aa,ab,sb); sc = C(aC); ad = fd(aa,ab,sb,ac,sc); ab ac sc); sd = D(aD); return ga(aa,ab,sb,ac,sc,ad,sd); } else... Beregning av sa } ab sb ac sc ad sd Generalisering av eksempel 6.16, men for L-attributt grammatikk 3/3/2009 26 3110/4110-2004 IN F 5110-200 9