Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afGrethe Sørensen Redigeret for ca. et år siden
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
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.