Presentation laddar. Vänta.

Presentation laddar. Vänta.

Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: 786 5349 Rum: D438.

Liknande presentationer


En presentation över ämnet: "Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: 786 5349 Rum: D438."— Presentationens avskrift:

1 Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: bopspe@cs.umu.se Hemsida: http://www.cs.umu.se/~bopspe Tel: 786 5349 Rum: D438

2 Anders Broberg, Programspråksteoridelen DVA Moment 2 2 Att besriva ett språk (Kap 3) Syntax Semantik

3 Anders Broberg, Programspråksteoridelen DVA Moment 2 3 För vilka skall man beskriva Andra designers av programspråk Implementörer av språk Användarna (programmerarna)

4 Anders Broberg, Programspråksteoridelen DVA Moment 2 4 Lite (syntax) terminologi Mening Språk Lexem Token

5 Anders Broberg, Programspråksteoridelen DVA Moment 2 5 Att formellt beskriva syntax Igenkännande –Används i kompilatorer Genererande –Vad vi studerar på kursen

6 Anders Broberg, Programspråksteoridelen DVA Moment 2 6 Kontextfri grammatik Noam Chomsky 50-talet Naturligaspråk Definierar en klass av språk: Kontextfria språk

7 Anders Broberg, Programspråksteoridelen DVA Moment 2 7 Backus Normal Form (BNF) Att beskriva Algol 58 Ekvivalent med kontextfri grammatik Ett metaspråk –Dvs ett språk för att beskriva språk Abstraktioner används för att representera klasser av syntaktiska strukturer –Ungefär som syntaktiska variabler

8 Anders Broberg, Programspråksteoridelen DVA Moment 2 8 (BNF) Abstraktioner mm. En regel har en vänstersida (LHS) och en högersida (RHS) –LHS är den abstraktion som en regel definierar –RHS är definitionen av en LHS –LHS består av terminalsymboler och icketerminaler »Terminalsymboler är lexem och tokens »Icketerminaler är abstraktioner som finns definierade någonstans (LHS) »En abstraktion kan ha mer än en högersida(RHS) En grammatik är en ändlig icketom mängd av regler

9 Anders Broberg, Programspråksteoridelen DVA Moment 2 9 (BNF) Härledning En härledning är upprepade appliceringar av regler från en startsymbol till en sats där alla symboler är terminaler Ett ”parseträd” är en hierarkisk beskrivning av en härledning En grammatik är tvetydig om och endast om den genererar två eller flera distinkta parseträd för samma uttryck

10 Anders Broberg, Programspråksteoridelen DVA Moment 2 10 Exempel på en grammatik -> -> | ; -> = -> a|b|c|d -> + | - -> | const

11 Anders Broberg, Programspråksteoridelen DVA Moment 2 11 Exempel på en härledning => => => = => a = => a = + => a = + => a = b + const

12 Anders Broberg, Programspråksteoridelen DVA Moment 2 12 Exempel på parseträd

13 Anders Broberg, Programspråksteoridelen DVA Moment 2 13 Tvetydig grammatik -> | const -> / | -

14 Anders Broberg, Programspråksteoridelen DVA Moment 2 14 Variabler En abstraktion av en minnescell för att lagra värden –Namn –Bindningar –Adresser –Typkontroll Många viktiga definitioner i kap 4. 1000 1001 1002 1003 1004 Hastighet

15 Anders Broberg, Programspråksteoridelen DVA Moment 2 15 Namn (identifierare) Särskilja, identifiera och abstrahera –Variabler –Underprogram (funktioner, procedurer,…) –Parametrar –Konstanter –Labels (GOTO) 1000 1001 1002 1003 1004 Hastighet Acceleration

16 Anders Broberg, Programspråksteoridelen DVA Moment 2 16 Designfrågor Maximala längden? Vilka tecken är tillåtna? –ASCII eller Unicode –Sammanbindingstecken Skillnad på STORA och små bokstäver? Nyckelord eller reserverade ord

17 Anders Broberg, Programspråksteoridelen DVA Moment 2 17 Maximal längd FORTRAN 1: max 6 tecken COBOL : max 30 tecken FORTRAN 90 och ANSI C : max 31 tecken Ada: Ingen begränsning på längden, och alla tecken är signifikanta C++: Ingen begränsning i språket, men många implementerare inför det HURLÅNGAIDENTIFIERAREKANMANHAISPR ÅKETFINNSDETNÅGONBEGRÄNSNINGOCH HURPÅVERKARDETLÄSBARETENOCHSKRI VBARHETEN? ???

18 Anders Broberg, Programspråksteoridelen DVA Moment 2 18 Variabler_med_flera_ord Ofta tillåts _ i namn för att sammanbinda flerordsnamn Standard Pascal, Modula 2 och FORTRAN 77 tillåter inga sådana tecken –I FORTRAN 77 har inte blanktecken någon betydelse… ManBrukarAnvändaDennaStilFörAttÖkaLäsbarheten

19 Anders Broberg, Programspråksteoridelen DVA Moment 2 19 Skillnad mellan STORA och små bokstäver Läsbarheten påverkas negativt –NAMN och namn är två olika identifierare trots att de är väldigt lika Modula-2 ställer till med ännu mer problem –Mixar STORA och småbokstäver i föredefinierade namn (WildCard) C, C++, Java, och Modula-2 gör skillnad på STORA och små i namn De flesta andra språken gör ingen skillnad

20 Anders Broberg, Programspråksteoridelen DVA Moment 2 20 Specialord Def: Ett nyckelord (keyword) är ett ord som är speciellt bara i en viss omgivning (kontext) –Påverkar läsbarheten negativt –Man kan ha egna identifierare som heter som nyckelorden –FORTAN 77 Def: Ett reserverat ord är ett speciellt ord som inte kan användas av användare för att definierade namn –Vanligast idag

21 Anders Broberg, Programspråksteoridelen DVA Moment 2 21 Variabler Abstraktion av en minnescell En förvaringslåda som kan beskrivas med 6 attribut –Namn –Adress –Värde –Typ –Livslängd –Räckvidd (scope)

22 Anders Broberg, Programspråksteoridelen DVA Moment 2 22 Variabelnamn Namngivna variabler Anonyma variabler –Minnesceller som bara koms åt via pekare –(Ibland även arrayer och element i arrayer) Adress –Den minnesadress som är associerad med variabeln (platsen i minnet som värdet lagras) –Adressen kan ändras under exekvering –Olika adresser på olika ställen i programmet –Två variabel namn kan användas för att komma åt samma minnescell (Aliasing) –L-value 1000 1001 1002 1003 1004

23 Anders Broberg, Programspråksteoridelen DVA Moment 2 23 Aliasing Återanvändning av minne –Pekare, referensvariabler, –Variant records i Pascal –Union i C och C++ –FORTRAN har EQUIVALENCE Aliasing påverkar läsbarheten negativt Motivet med Minnesåteranvändning håller inte längre –Dynamsik minnesallokering finns i de flesta moderna språk –Även i FORTRAN

24 Anders Broberg, Programspråksteoridelen DVA Moment 2 24 Typer Bestämmer omfånget av värden och vad man kan göra med en variabel –Heltal –Flytal –Strängar –”Boolska tal” För flyttal avgör de också precisionen

25 Anders Broberg, Programspråksteoridelen DVA Moment 2 25 Värde Innehållet i en minnescell som en variabel är associerad med R-value Abstrakt minnescell-den är de minnesceller som är associerade med en variabel –Valigtvis »En heltalsvariabel tar upp flera fysiska minnesceller »En teckenvariabel tar upp 1 fysisk minnescell Hastighet:=320; 1000 1001 1002 1003 1004 10110001 Hastighet


Ladda ner ppt "Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: 786 5349 Rum: D438."

Liknande presentationer


Google-annonser