Title: Taal
1Taal
- Een Alfabet iseen eindige verzameling symbolen
- Een Taal iseen deelverzameling van Tbij een
bepaald alfabet T - Een Zin iseen element van een taal
- Een Zin van een taal iseen element van die
taal
2Liever inductief dan predicatief
Zijn dezedefinities equivalent?
- Palindromen predicatief
- Palindromen inductief
s ? a,b,c s sR
sound
complete
- e is een palindroom
- a, b, en c zijn palindromen
- Als P en palindroom is dan zijn aPa , bPb
en cPc het ook - Niets anders is een palindroom
3Grammatica
- Een grammatica bestaat uit (T, N, R, S)
- Het alfabet T eindig
- Hulpsymbolen N eindig T?NØ
- Productieregels R eindig
- Een startsymbool S één S ? N
Met als elementen
A ? w
waarbij A ? N w ? (N?T)
4Contextvrije grammatica
van palindromen
a , b , c
- Terminals
- Nonterminals
- Regels
- Startsymbool
P
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
P
5Afkorting-notatie
- P ? e
- P ? a
- P ? b
- P ? aPa
- P ? bPb
BNFBackus-Naur Form
6Afkorting-notatie
EBNFExtended Backus-Naur Form
7Echt Voorbeeld
- Contextvrije grammatica voor stukje Java
- Stat ? Var Expr if
(Expr) Stat else Stat while
(Expr) Stat - Expr ? Const Var Expr
Op Expr - Op ? -
8Afleiding van een zin
a , b , c
P
P
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
P ? b P b
P
9Afleiding van een zin
a , b , c
P
?
P
b P b
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
P ? b P b
P
10Afleiding van een zin
a , b , c
P
?
P
b P b
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
P ? a P a
P
11Afleiding van een zin
a , b , c
P
?
P
b P b
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
?
b a P a b
P ? a P a
P
12Afleiding van een zin
a , b , c
P
?
P
b P b
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
?
b a P a b
P ? c
P
13Afleiding van een zin
a , b , c
P
?
P
b P b
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
?
b a P a b
?
P ? c
b a c a b
P
14Afleiding van een zin
a , b , c
P
?
P
b P b
P ? e , P ? a , P ? b , P ? c , P ? a P a ,
P ? b P b , P ? c P c
?
b a P a b
?
b a c a b
P ? b a c a b
P
15Afleiding van een zin
? ,? ,
? , X , ? ,
?????? X ???
?
X ?
?????? ???
X ? ? ? Rdan ? X ? ? ? ? ?
P
16Ontleden
- Zij grammatica G ( T, N, R, S )
- Ontleden van zin zzoek een afleiding
S ? z
17DefinitieTaal van een grammatica
- Zij grammatica G ( T, N, R, S )
- de taal van G
- is
L(G)
z ? T S ? z
18Contextvrij
- Contextvrije grammaticaregels van de vorm
- Contextvrije taalL(G) voor zekere contextvrije
G
X ? ?
- StellingDe taal van palindromen is een
contextvrije taal
19Voorbeelden van regels van grammaticas van talen
- Digit ? 0 1 2 3 4 5 6 7 8 9
- Digits ? e Digit Digits
- Nietnul ? 1 2 3 4 5 6 7 8 9
- Nat ? 0 Nietnul Digits
- Teken ? -
- Int ? Teken Nat Nat
- Lower ? a b c x y z
- Upper ? A B C X Y Z
- Letter ? Lower Upper
- Naam ? Letter Rest
- Rest ? e Letter Rest Digit Rest
20Verschillende afleidingen
- S
- S S
- S S S
- S a S
- a a S
- a a a
a
- S
- S S
- a S
- a S S
- a a S
- a a a
- S
- S S
- S S S
- a S S
- a a S
- a a a
S
S ? S S , S ? a
S
leftmostderivation
ook leftmost,maar anders!
21Ontleedboom
22Unieke ontleding
- Een zin heeft een unieke ontleding als
- er maar één ontleedboom is
- of equivalent
- er maar één leftmost derivation is
23Ambigue grammatica
- Een grammatica is ambigu als
- er een zin is met een niet-unieke ontleding
24Publieksvraag
Expr ? , Stat ? Var Expr , Stat ?
while ( Expr ) Stat , Stat ? if ( Expr ) ,
- Grammatica voor Statements in Java
- Maak aanvulling voor if-statements
- Is de grammatica ambigu?
25Een mogelijke oplossing
Expr ? , Stat ? Var Expr , Stat ?
while ( Expr ) Stat , Stat ? if ( Expr ) Stat
Rest , Rest ? e else Stat
- Is deze grammatica ambigu?
26Ja, de grammatica is ambigu
want deze zin heeft 2 ontledingen
if(E) if(E) S else S
27Eigenschappen van grammaticas
- die je zou kunnen nagaan
- Is de grammatica ambigu?
- Zijn er nonterminals N met N ? e ?
- Heeft de grammatica alleen regels
- X ? A B
- X ? a
- Chomsky-normaalvorm
binaire ontleedbomen
28Grammatica-transformaties
- Aanpassen van de regels,
- maar zo dat
- De taal hetzelfde blijft
- Wenselijke eigenschappen ontstaan
29Transformaties (1/6)Dubbelen verwijderen
A ? u u v
A ? u v
30Transformaties (2/6)Regels expanderen
A ? u B v z B ? x w
A ? u x v u w v z B ? x w
31Transformaties (3/6)Links-factorisatie
A ? u x u w z
A ? u B z B ? x w
32Transformaties (4/6)Verwijderen links-recursie
A ? A x A y u v
A ? u u B v v B B ? x x B y y
B
33Transformaties (5/6)Associatieve operatoren
Ds ? D Ds ? Ds Ds
Ds ? D Ds ? D Ds
niet meerambigu
34Transformaties (6/6)Operatoren met prioriteiten
E ? E E E ? E E E ? ( E ) E ? N
E ? T E ? T E T ? F T ? F T F ?
( E ) F ? N
gaat nuvoor
35Ambigue if-statement
if(E) if(E) S else S
36Publieksvraag
- Kun je een niet-ambigue grammatica maken voor
Statements in Java?
Stat ? if ( Expr ) Stat Rest , Rest ? e
else Stat , Stat ? Var Expr , Stat ? while (
Expr ) Stat ,
37Hint
Stat ? Compleet Half , Compleet ? , Half
? , Overig ? Var Expr , Overig ? while (
Expr ) Stat ,
38Oplossing
Stat ? Compleet Half , Compleet ? if ( Expr
) Compleet else Compleet , Compleet ? Overig ,
Half ? if ( Expr ) Stat , Half ? if ( Expr )
Compleet else Half , Overig ? Var Expr ,
Overig ? while ( Expr ) Stat ,
39Haskell datatypevoor ontleedbomen
- Haskell datatypedat ontleedboom representeert
X ? A B , X ? C d , X ? e
data X A B C d
e
show X ? String show (Een a b) show a
show b show (Twee c) show c d show (Drie)
e
uit deabstracte syntaxkun je concrete
syntaxreconstrueren
parse String ? X
40Het parse-probleem
- Ontleden van zin zzoek een afleiding
- We zoeken een Haskell-functie
S ? z
parse String ? S