Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Begreber og Redskaber 1 BRP.

Lignende præsentationer


Præsentationer af emnet: "Begreber og Redskaber 1 BRP."— Præsentationens transcript:

1 Begreber og Redskaber 1 BRP

2 Sprog = mængde af sætninger
Programmeringssprog Sprog = mængde af sætninger ?

3 Sprog = syntaks+semantik+pragmatik
Programmeringssprog Sprog = syntaks+semantik+pragmatik Syntaks: hvilken tekst der må stå Semantik: hvad det betyder Pragmatik: hvordan det bruges

4 Syntaksbeskrivelse Syntaksbeskrivelse:
beskrivelse af de korrekte sætninger i sproget. idag Jernbanediagrammer Regulære udtryk Kontekstfri grammatikker (EBNF)

5 Formål Kunne læse syntaksbeskrivelse af Java
Nyttigt redskab i en værktøjskasse Forstå hvad en syntaksbeskrivelse er Se om tekster er syntaktisk korrekt Skrive syntaks ud fra eksempler Give et videre perpektiv Historie Videnskab mellem lingvistik og matematik

6 Sprog Formelt vs. Naturligt sprog Programmering sker i formelle sprog
Maskinel analyse af naturlige sprog er kompliceret aktivt forskningsfelt Eksempler på formelle sprog Telefonnumre adresser HTML dokumenter Java programmer

7 Jernbanediagrammer og EBNF
adresser som jernbanediagram Og som EBNF navn { navn ”.” } navn ”.” navn navn : følge af bogstaver, tal mm. navn @ navn . navn

8 Notation Terminaler: Det der skal stå direkte i tekster (f.eks. Dele af Javaprogram ) I Jernbanediagram: I EBNF f.ex. class Nonterminaler: dele af tekster som forklares andetsteds i grammatikken I Jernbanediagram I EBNF Expression class Expression

9 Mere notation EBNF udtryk bruger: EBNF regler har ofte formen
[ .. ] mulighed 0-1 { .. } gentagelse 0-flere (.. | .. ) valgmulighed EBNF regler har ofte formen Nonterminal: udtryk1 udtryk2 Det skal læses som: (udtryk1 | udtryk2)

10 Fra EBNF til jernbanediagram
(Den anden vej er ikke helt så triviel) udtryk1 udtryk2 (sammensætning) {udtryk} (gentagelse 0-flere) [udtryk] (mulighed 0-1) (udtryk1 | udtryk2) (valg) udtryk1 udtryk2 udtryk udtryk udtryk1 udtryk2

11 Grammatik for MiniJava
Program : ClassDef ClassDef : ”public” ”class” ClassName ”{” ”public static void main(String[] args){” Statements ”}” ”}” Statements : { Statement } Statement : Identifier ”(”Parameters ”)” ”;” | VarDef | VarName ”=” Expression ”;”

12 Grammatik fortsat VarDef : TypeName VarName ”;”
| TypeName VarName ”=” Expression ”;” Parameters : | Expression { ”,” Expression } Expression : VarName | Number | ””” { Tegn } ””” | Expression ”+” Expression | Expression ”-” Expression | ”(” Expression ”)”

13 Grammatik fortsat Identifier : Name { ”.” Name } VarName : Name
TypeName : Name ClassName : Name Name : følge af bogstaver og cifre der starter med bogstav Number : følge af cifre Tegn: ..

14 Et Java Program public class A {
public static void main(String[ ] args) System.out.println(”Hello”); }

15 Afledning Program → ClassDef ClassDef → ”public” ”class” ClassName ”{”
”public static void main(String[ ] args){” Statements ”}” ”}” ClassName → ”A” Statements → Statement

16 Afledning fortsat Statement → Identifier ”(”Parameters ”)” ”;”
Identifier → Name ”.” Name ”.” Name → ”System” ”.” ”out” ”.” ”println” Parameters → Expression { ”,” Expression } → Expression Expression → ””” Hello ”””

17 Syntakstræ (lettere beskåret)
Program ClassDef public class ClassName { public static void main(String[ ] args){ Statements }} A Identifier ”(”Parameters ”)” ”;” System.out.println ”Hello”

18 Syntakstræer ”Program” er roden i træet
Bladene i træet er ”terminalerne” Der sidder ”nonterminaler” i alle forgreninger Når det tegnes vokser det nedad med roden øverst Samler man bladene ved gennemløb af træet fra venstre til højre får man programteksten

19 Eksempel: udtryk Grammatikken for regneudtryk i MiniJava
Expression : VarName | Number | ””” { Tegn } ””” | Expression ”+” Expression | Expression ”-” Expression | ”(” Expression ”)”

20 Grammatikken er rekursiv
To regneudtryk kan sættes sammen med et ”+” eller et ”-” og tilsammen er det et regneudtryk. Rekursive definitioner kan være problematiske… Barbereren barberer alle de folk i byen som ikke barberer sig selv. Hvem barberer barbereren?

21 Fibonacci tal De to første fibonacci tal er 1 og 1.
Et fibonacci tal er summen af de to foregående fibonacci tal. Definitionen er rekursiv. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 Rekursive definitioner er ok hvis det definerer noget ”større” ud fra noget ”mindre” og det ”mindste” er veldefineret uden rekursion. (”større”, ”mindre” og ”mindste” kan formaliseres som ordnede mængder i matematikken)

22 Eksempel: udtryk Java udtryk: 2-3+4 Afledning:
Expression → Expression ”-” Expression Number Expression ”+” Expression

23 Eksempel: udtryk Javaudtryk: 2-3+4 Alternativ afledning:
Expression → Expression ”+” Expression Expression ”-” Expression Number

24 Tvetydig grammatik Grammatikken er tvetydig
Dvs: Der findes tekststrenge som kan afledes på mere end en måde fra grammatikken. Tvetydighed er ikke et problem for hvad der er syntaktisk korrekt Tvetydighed er et problem når vi skal forklare semantikken af udtryk Tvetydighed afklares ved at specificere associativitet og præcedens af operatorer..

25 EBNF Extended Backus Naur Form
1963: Brugt i Algol rapport (Peter Naur ed.) John Backus medforfatter. (De brugte en simplere version uden ”{” og ”}”) Variant af Kontekst-fri grammatikker (Chomsky 1956) Variant brugt af Panini, indisk grammatiker ca. 300 BC, til beskrivelse af Sanskrit

26 Regulære udtryk Regulære udtryk er en variant af EBNF hvor man kun har et udtryk og ikke mulighed for ekstra regler Kendes fra søgninger i mange tekstbehandlingssystemer Bruger ofte lidt andre symboler: ( .. )* betyder gentag 0-flere gange ( .. )+ betyder gantag 1-flere gange ( .. )? betyder mulighed 0-1

27 Chomsky hierarkiet Type 0 sprog: Uindskrænkede sprog (sprog med en formel syntaks) Type 1 sprog: Kontekst-følsomme sprog (hvad der må stå hvor i tekster afhænger af kontekst) Type 2 sprog: Kontekst-frit sprog (sprog der kan beskrives med EBNF eller tilsv.) Type 3 sprog: Regulære sprog (sprog der kan beskrives ved en enkelt regel i EBNF eller tilsv. Dvs. regulære udtryk)

28 Chomsky Noam Chomsky: lingvist og samfundsdebatør (f. 1928)
Chomsky hierarkiet er fra 1956 og primært tænkt til beskrivelse af naturlige sprog (vha transformationsgrammatikker..)

29 Et par resultater Sproget: ”ab”,”aabb”,”aaabbb”,...
er kontekstfrit men ikke regulært. Sproget: ”abc”,”aabbcc”,”aaabbbccc”,.. er ikke kontekstfrit men kontekstafhængigt. Sprog1: ab a Sprog1 b

30 Et par resultater Der findes ingen generelle teknikker til at undersøge om to EBNF’er beskriver samme sprog (Det kan bevises at en sådan teknik heller ikke kan findes!) (det er et uafgørligt problem) En sådan teknik findes for regulære udtryk.

31 Hvad kan det bruges til? Regulære udtryk → søgninger i store datamængder Genkendelse kan klares af endelige automater (uden hukommelse) Kontekst fri sprog → oversættere, parsere Genkendelse kræver hukommelse Særligt effektive genkendere/parsere findes for klasser af kontekst-fri grammatikker (LL(1), LALR(1),..) De kan konstrueres automatisk ud fra grammatikken (YACC, Bison, Antlr)

32 Ord, ord, ord … Syntaks Jernbanediagram Genkendelse Semantik EBNF
Parser Pragmatik Regulært udtryk Kontekstfrit sprog Formelt sprog Syntakstræ Regulært sprog Naturligt sprog Afledning Uafgørligt Nonterminal Tvetydig Chomsky hierarki Terminal Rekursion

33 Afrunding EBNF og Jernbanediagrammer er redskaber til at beskrive tekster i formelle sprog Undersøge om en given tekst hører til sproget: Genkendelse, afledning Afklare hvad der er korrekt Java


Download ppt "Begreber og Redskaber 1 BRP."

Lignende præsentationer


Annoncer fra Google