Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale.

Lignende præsentationer


Præsentationer af emnet: "Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale."— Præsentationens transcript:

1 Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale symboler  er et sæt af terminale symboler P er et sæt af produktioner S er sætnings- eller startsymbolet.

2 Grammatik på BNF form Grammastart ->program ( ident ) globalvar begin statementlist end ident -> letter tegenlist letter -> a | b | c | d |........ | å | A | B |...... | Å tegnlist -> tegn tegnlist | e tegn -> letter | digit digit -> 0 | 1 | 2 | 3 |...... | 9 globalvar -> type identlist ; type -> char | int | float identlist -> ident | ident, identlist statementlist -> statement statementlist | e statement -> ident = exp ; exp -> exp + exp | exp - exp | exp * exp | exp / exp | (exp) | ident

3 Backus-Naur form ::= "program" "(" ")" "begin" "end” ::= ";” ::= "char" | "int" | "float"

4 EBNF En variation af BNF med nogle ekstra elementer. [..] List af alternative elementer. * En sekvens af nul eller flere elementer. + En sekvens af en eller flere elementer. (..) En gruppe af elementer. BNF: ::= |  EBNF: ::= ( )*

5 Grammatik typer: Type 0 grammatik: Fri grammatik Type 1 grammatik: Context−sensitiv grammatik Type 2 grammatik: Context−fri grammatik Type 3 grammatik: Finit grammatik

6 Grammatik typer: Produktions regel Type-0 Ingen restriktioner. Type-1 Type-2 Type-3 og enten eller    a  a  a B

7 Parser træer Parsning er processen at aflede en sætning fra et startsymbol ved gentagende anvendelse af produktioner S -> AB A -> A x | y B -> z Sætning: yxxz S A A A yxx z B

8 Parser træer program -> stlist stlist-> statement stlist |  statement-> idT = exp ; exp -> exp + exp | exp – exp | exp * exp | exp / exp | intT | idT Sprog: v= 8; k= 3+5-7*v;

9 Right−most parsing udfolder parsertræet fra højre. Left−most parsning udfolder parsertræet fra venstre. S -> A B Left−most Right−most Left-most : Right-most afledning

10 Ambiguous (flertydig) grammatik Flere parsertræer for samme sætning: S -> A A A -> x | xx Sætning: xxx S AA xxx S AA xxx Flertydig mening Ikke konsistent compiler

11 Ækvivalent grammatik Samme sprog men ikke samme grammatik L(G) = L(G’) : G: A -> A x | y G’: A -> x B B -> x B |  A A Axx y A B yBx x  Forskellig mening.

12 Rekurtion Venstre rekursiv: A -> u | A v Fx: funklist-> funklist funktion |  Højre rekursiv: A -> u | v A Fx: funklist-> funktion funklist |  exp -> exp + exp | exp – exp | exp * exp | exp / exp Både højre og venstre rekursiv.

13 Rekurtion: Venstre til højre Venstre rekursiv: A -> u | A v Kan omskrives til: A -> u B B -> v B | 

14 Precedence og flertydig grammatik exp -> exp + exp | exp – exp | exp * exp | exp / exp | ( exp ) | intT | idT Sætning: 2+3*4 exp exp + exp exp * exp intT 2 3 4 exp exp * exp exp + exp intT 4 2 3

15 Korrekt precedence exp-> term expB expB-> termopr term expB |  termopr-> + | - term-> factor termB termB-> factoropr factor termB |  factoropr-> * | / factor-> uopr exp | ( exp ) | intT | idT uopr-> - | 

16 Korrekt precedence: EBNF ::= (( “+” | “-” ) )* ::= (( “*” | “/” ) )* ::= | ”(“ “)” | | ::= “-” |  A=(b + (c - c)) + a * 3; statement IdT = exp ; term + termfactor( exp )term + termfactor ( exp ) term - term cc IdT b factor IdT factor * factor IdTIntT a 3 factor IdT

17 Left factoring A -> v w | v z Kan omskrives til: A -> v B B -> w | z


Download ppt "Sprog og grammatik Et sprog L(G) er mængden af sætninger afledt af grammatikken G. Grammatik er en 4-tupel: G={N, ,P,S}. Hvor: N er et sæt af non-terminale."

Lignende præsentationer


Annoncer fra Google