1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

43
1 Context-Free Languages
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    233
  • download

    1

Transcript of 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

Page 1: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

1

Context-Free Languages

Page 2: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

2

Regular Languages

}{ nnba }{ Rww

Page 3: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

3

Regular Languages

}{ nnba }{ Rww

Context-Free Languages

Page 4: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

4

Context-Free Languages

PushdownAutomata

Context-FreeGrammars

stack

automaton

Page 5: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

5

Context-Free Grammars

Page 6: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

6

A context-free grammar G:

S

aSbS

aaabbbaaaSbbbaaSbbaSbS

Page 7: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

7

S

aSbS

}0:{)( nbaGL nn

(((( ))))

Page 8: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

8

A context-free grammar G:

S

bSbS

aSaS

abaabaabaSabaabSbaaSaS

Page 9: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

9

S

bSbS

aSaS

}{)( RwwGL

Page 10: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

10

A context-free grammar G:

S

SSS

aSbS

abababaSb

abSaSbSaSbSSSS

Page 11: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

11

S

SSS

aSbS

}prefixany

),()(

),()(:{)(

v

vnvn

wnwnwGL

ba

ba

() ((( ))) (( ))

Page 12: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

12

Definition of Context-Free Grammars

Any grammar G=(V,T,S,P)

P: production rules of the form

V: variablesT: terminal symbolsS: start variable

xA

x: string of variables and terminals

Page 13: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

13

Definition of Context-Free Languages

A language L is context-free

if and only if

there is a grammar G with L = L(G)

Page 14: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

14

Derivation Order ABS .1

aabaaBbaaBaaABABS54321

aabaaAbAbABbABS32541

A

aaAA

.3

.2

B

BbB

.5

.4

Leftmost derivation:

Rightmost derivation:

Page 15: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

15

Derivation Trees

Page 16: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

16

ABS |aaAA |BbB

ABS

S

BA

Page 17: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

17

ABS |aaAA |BbB

aaABABS

S

BA

a a A

Page 18: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

18

ABS |aaAA |BbB

aaABbaaABABS

S

BA

a a A B b

Page 19: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

19

ABS |aaAA |BbB

aaBbaaABbaaABABS

S

BA

a a A B b

Page 20: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

20

ABS |aaAA |BbB

aabaaBbaaABbaaABABS

S

BA

a a A B b

Derivation Tree

Page 21: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

21

S

BA

a a A B b

aabaaBbaaABbaaABABS

yield

aab

baa

sentence

Derivation Tree

Page 22: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

22

Partial Derivation Trees

ABS

S

BA

Partial derivation tree

ABS |aaAA |BbB

Page 23: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

23

aaABABS

S

BA

a a A

Partial derivation tree

sententialform

yield

aaAB

Page 24: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

24

aabaaBbaaBaaABABS aabaaAbAbABbABS

S

BA

a a A B b

Same Derivation Tree

Often, derivation order doesn’t matter

Page 25: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

25

Ambiguity

Page 26: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

26

aEEEEEE |)(||

aaa

E

EE

EE

a

a a

aaaEaa

EEaEaEEE

*

Page 27: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

27

aEEEEEE |)(||

aaa

E

EE

a a

EE a

aaaEaa

EEaEEEEEE

Page 28: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

28

E

EE

a a

EE a

E

EE

EE

a

a a

aEEEEEE |)(||

aaa

Page 29: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

29

The grammar

aEEEEEE |)(||

is ambiguous:

string aaa has two derivation trees

Page 30: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

30

The grammar aEEEEEE |)(||

is ambiguous:

string aaa has two leftmost derivations

aaaEaa

EEaEEEEEE

aaaEaa

EEaEaEEE

*

Page 31: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

31

In general:

A context-free grammar is ambiguous

if some string has:

two or more derivation trees

G

)(GLw

Page 32: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

32

In other words:

A context-free grammar is ambiguous

if some string has:

two or more leftmost derivations

G

)(GLw

rightmost

Page 33: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

33

Why do we care about ambiguity?

E

EE

a a

EE a

E

EE

EE

a

a a

aaa

take 2a

Page 34: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

34

E

EE

EE

E

EE

EE

222

2

2 2 2 2

2

Page 35: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

35

E

EE

EE

E

EE

EE

6222

2

2 2 2 2

2

8222

4

2 2

2

6

2 2

24

8

Page 36: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

36

E

EE

EE

6222

2

2 2

4

2 2

2

6

The right solution:

Page 37: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

37

We want to remove the ambiguity

Ambiguity is bad for programming languages

Therefore:

Page 38: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

38

We fix the ambiguous grammar:

aEEEEEE |)(||

New grammar:

aF

EF

FT

FTT

TE

TEE

)(

Page 39: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

39

aF

EF

FT

FTT

TE

TEE

)(

aaaFaaFFa

FTaTaTFTTTEE

E

E T

T F

F

a

T

F

a

a

aaa

Page 40: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

40

E

E T

T F

F

a

T

F

a

a

aaa

Unique derivation tree

Page 41: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

41

The grammar

aF

EF

FT

FTT

TE

TEE

)(

Is not ambiguous

Page 42: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

42

Inherent Ambiguity

Some context free languageshave only ambiguous grammars

Example: }{}{ mmnmnn cbacbaL

||11

aAbA

AcSS

||22

bBcB

BaSS

21 | SSS

Page 43: 1 Context-Free Languages. 2 Regular Languages 3 Context-Free Languages.

43

The string nnn cba

has two derivation trees

S

1S

S

2S

1S c 2Sa