Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avViktor Abrahamsson
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.