In een reguliere taal…

30
In een reguliere taal… zin y x z S E A B v u w u w x z v u w x z v v u w x z v v v u w x z v v v lengte n

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

Transcript of In een reguliere taal…

Page 1: In een reguliere taal…

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

Page 2: In een reguliere taal…

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

Page 3: In een reguliere taal…

“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

Page 4: In een reguliere taal…

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

Page 5: In een reguliere taal…

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

Page 6: In een reguliere taal…

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

Page 7: In een reguliere taal…

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

Page 8: In een reguliere taal…

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

Page 9: In een reguliere taal…

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)*

Page 10: In een reguliere taal…

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)

Page 11: In een reguliere taal…

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

Page 12: In een reguliere taal…

Ontleedboom bij CFG

S ……… | ……A ………… | ……B …… | …… | …C …… | … | …

m

k nivo’s

m k

z

S

Page 13: In een reguliere taal…

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

Page 14: In een reguliere taal…

Pomp-stelling voor CFG

u y

S

v x

A

w

A

v x

A

w

A

v x

A

w

A

Page 15: In een reguliere taal…

Pomp-stelling voor CFG

u y

S

A

w

A

Page 16: In een reguliere taal…

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

Page 17: In een reguliere taal…

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

Page 18: In een reguliere taal…

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|

Page 19: In een reguliere taal…

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

Page 20: In een reguliere taal…

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

Page 21: In een reguliere taal…

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

Page 22: In een reguliere taal…

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

Page 23: In een reguliere taal…

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

Page 24: In een reguliere taal…

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?

Page 25: In een reguliere taal…

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

Page 26: In een reguliere taal…

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)

Page 27: In een reguliere taal…

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) ?

Page 28: In een reguliere taal…

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

Page 29: In een reguliere taal…

Definitie Lookaheadset van alternatief N

S

x

N

{ x | S * N * x }

Lah(Nx) = {x}Lah(NP) = ……

Page 30: In een reguliere taal…

Eigenschappen vanNonterminals

… nodig om Lookahead-sets te bepalen

Empty(N) First(N)

Follow(N)

N *

S

x

N

x

N