Upload
brian-collins
View
34
Download
0
Embed Size (px)
DESCRIPTION
lengte n. x. y. z. A. B. S. E. x. u. w. z. x. u. u. v. v. w. v. w. z. x. u. v. v. v. w. z. x. u. v. v. v. v. w. z. In een reguliere taal…. zin. x. y. z. u. v. w. x. u. v. v. v. w. z. In een reguliere taal…. Er is een n , zo dat …. - PowerPoint PPT Presentation
Citation preview
In een reguliere taal…
zinyx z
S EA B
vu w
u wx z
vu wx zv
vu wx zv v
vu wx zv v v
lengte n
In een reguliere taal…
vu w
vu wx zv v
yx z
Er is een n , zo dat …
Voor elke deelzin y met lengte n …
Er is een kern v , waarvoor …
Voor alle i 0 …
x u vi w z is ook een zin
“Pomp-stelling”
L is Regulier
n
x, y, z xyzL |y|n
u, v, w uvw=y |v|1
i 0 x u vi w z L
vu w
vu wx zv v
yx z
Pomp-stelling omdraaien…
L is Regulier
n
x, y, z xyzL |y|n
u, v, w uvw=y |v|1
i 0 x u vi w z L
Gebruik vanomgekeerde Pomp-stelling
n
x, y, z xyzL |y|n
u, v, w uvw=y |v|1
i 0 x u vi w z L
Noem mij een n !
…dan geef ik jeeen zin xyz …
yx z …en nou mag jij v aanwijzen …
vu w
…dan vind ik een i zoals nodig!
L is niet Regulier
neem dan i=2…
a a a a b b b b b b baa a a a
…wijs maar een v aan!
Voorbeeld:{ ambm | m0 } is niet regulier
Noem mij een n !
…met een opsplitsing …
a a a a a a ab b b b b b b
Nou, ehh, 7 !
a a a a a a a b b b b b b b
…dan is hier een zin …
deze neem ik!a a
L
Gevolg
(Hoofdstuk 2){ am bm | m0 } is contextvrij
(Pomp-stelling){ am bm | m0 } is niet regulier
Er zijn contextvrije talendie niet regulier zijn
S a S b S
Reguliere talen: overzicht
RGDefinitie 8 +9
DFADefinitie 1 +3
NFADefinitie 4 +6
REDefinitie 14+15
Stelling 13
Stelling 12
Stelling 7
triviaal
ZRGDefinitie (11)
Stelling 11
triviaal
CFGDefinitie 2.5+7
triviaal
onmogelijk
Stelling 16
Stelling 17
Chomsky-hierarchie
Type 3: Reguliere grammatica’slinks: N rechts: T* N?
Type 2: Contextvrije grammatica’slinks: N rechts: (NT)*
Type 1: Contextgevoelige grammatica’slinks: N rechts: (NT)* Type 0: Algemene grammatica’slinks: (NT)+ rechts: (NT)*
Chomsky-hierarchie
Er zijn talen die contextvrij zijnmaar niet regulier { am bm | m0 }(bewijs met Pomp-stelling)
Er zijn talen die zelfs niet contextvrij zijn { am bm cm | m0 } (bewijs met uitgebreide Pomp-stelling)
Pomp-stellingen
We kunnen ook een pompstelling formuleren voorContextvrije talen
…en daarmee bewijzen datbepaalde talen niet Contextvrij zijn
{ am bm cm | m0 } is niet contextvrij
Ontleedboom bij CFG
S ……… | ……A ………… | ……B …… | …… | …C …… | … | …
m
k nivo’s
m k
z
S
Ontleedboom bij CFG
z
S ……… | ……A ………… | ……B …… | …… | …C …… | … | …
m
>k nivo’s
> m k
k non-
terminals
S
A
A
Als de zin lang genoeg is,is er een pad met een dubbele nonterminal
Pomp-stelling voor CFG
u y
S
v x
A
w
A
v x
A
w
A
v x
A
w
A
Pomp-stelling voor CFG
u y
S
A
w
A
Pomp-stelling voor CFG
u y
S
v x
A
w
A
v x
A
w
A
Voor alle i 0 … u vi w xi y
is ook een zin
Pomp-stelling voor CFG
u y
S
v x
A
w
A
Voor alle i 0 … u vi w xi y
is ook een zin
v en x niet allebei leeg
k+1 nivo’s
|vwx| m k+1
Pomp-stellingvoor Reguliere talen
L is Regulier
n
x, y, z xyzL |y|n
u, v, w uvw=y |v|1
i 0 x u vi w z L
vu w
vu wx zv v
yx z
namelijk|N|
Pomp-stellingvoor Contextvrije talen
L is Contextvrij
c
z zL |z|>c
u,v,w,x,y uvwxy=z |vx| 1
i 0 u vi w xi y L
namelijkm k
|vwx| d
, d
namelijkm k+1
Omgekeerde Pomp-stellingvoor Contextvrije talen
c, d
z zL |z|>c
u,v,w,x,yuvwxy=z |vx| 1
i 0 u vi w xi y L
L is niet Contextvrij
|vwx| d
Voorbeeld:{ anbncn | n0 } is niet CF
Noem mij een c,d !
a a a … a a a b b b … b b b c c c … c c c
…dan is hier een zin …max(c,d)
v xw v xw
Opsplitsing bevat <3 verschillende letters
Pompen met i>1 vermeerdert niet alle letters
…wijs maar eenopsplitsing uvwxy aan!
|vwx| d
Stelling 2.10
Als L en MCF-talen zijn dan…
L M is ook CF L M is ook CF L* is ook CF
Als L en MReg-talen zijn dan…
L M is ook Reg
L M is ook Reg
L* is ook Reg
Stelling 5.11
L M is ook Reg
Cmpl(L) is ook Reg
L M is niet CF
Cmpl(L) is niet CF
Doorsnede van CF-talenis niet altijd CF
{ an bn | n 0 } is contextvrij { ck | k 0 } is contextvrij { an bn ck | n, k 0 } is contextvrij { ak bn cn | n, k 0 } is contextvrij Met de pompstelling bewezen we:
{ an bn cn | n 0 } is niet contextvrij
Dus CF-eigenschap blijft niet behouden onder doorsnede
Ontleden met een Stackmachine
S a SS c SS b
a a b
Nonterminal bovenop stack?Vervang door een van de regels!
Terminal bovenop stack?Accepteer die input
S Sa
S
a b
Sa
S
b
b
maar door welke?
Ontleden met een Stackmachine
S c A | bA c B C | b S A | aB c c | C bC a S | b a
c c c c b a
S
c c c c b a
Ac
c c c b a
A
c c c b a
CBc
c c b a
CB
c c b a
Ccc
c b a
Cc
b a
C
b a
ab
a
a
LL(1) grammatica’s
Als je op grond van het eerstvolgende input-symboolde keuze kunt maken
dan is de grammatica een LL(1)-grammatica
… en kan het met de eerste k symbolendan is het een LL(k )-grammatica
Leftmost
Lookahead(k)
Complexiteit van ontleden
Tijd nodig voor het parsenvan een zin met lengte n
Contextvrije grammatica: O(n3) Contextvrije grammatica
met LL(1)-eigenschap: O(n)
Wanneer is een grammatica LL(1) ?
Definitie LL(1)
Een grammatica is LL(1) Als je op grond van het eerstvolgende
input-symbool kunt kiezen uit alternatieven
Formeel: Als de lookahead-sets van de
alternatieven van elke nonterminalonderling disjunct zijn
Definitie Lookaheadset van alternatief N
S
x
N
{ x | S * N * x }
Lah(Nx) = {x}Lah(NP) = ……
Eigenschappen vanNonterminals
… nodig om Lookahead-sets te bepalen
Empty(N) First(N)
Follow(N)
N *
S
x
N
x
N