fall 2005costas busch - rpi1 context-free languages

62
Fall 2005 Costas Busch - RPI 1 Context-Free Languages

Post on 22-Dec-2015

233 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 1

Context-Free Languages

Page 2: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 2

Regular Languages

}0:{ nba nn }{ Rww

**ba *)( ba

Page 3: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 3

Regular Languages

}{ nnba }{ Rww

Context-Free Languages

Page 4: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 4

Context-Free Languages

PushdownAutomata

Context-FreeGrammars

stack

automaton

Page 5: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 5

Context-Free Grammars

Page 6: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 6

GrammarsGrammars express languages

Example: the English language

verbpredicate

nounarticlephrasenoun

predicatephrasenounsentence

_

_

Page 7: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 7

sleepsverb

runsverb

dognoun

catnoun

thearticle

aarticle

Page 8: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 8

A derivation of “the dog walks”:

sleepsdogthe

verbdogthe

verbnounthe

verbnounarticle

verbphrasenoun

predicatephrasenounsentence

_

_

Page 9: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 9

A derivation of “a cat runs”:

runscata

verbcata

verbnouna

verbnounarticle

verbphrasenoun

predicatephrasenounsentence

_

_

Page 10: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 10

Language of the grammar:

L = { “a cat runs”, “a cat sleeps”, “the cat runs”, “the cat sleeps”, “a dog runs”, “a dog sleeps”, “the dog runs”, “the dog sleeps” }

Page 11: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 11

Notation

dognoun

catnoun

Variable Terminal

Production Rules

Page 12: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 12

Another ExampleGrammar:

Derivation of sentence :

S

aSbS

abaSbS

ab

aSbS S

Page 13: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 13

Grammar:

Derivation of sentence :

aabbaaSbbaSbS

aSbS S

aabb

S

aSbS

Page 14: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 14

aaabbbaaaSbbbaaSbbaSbS

aaaabbbbaaaaSbbbb

aaaSbbbaaSbbaSbS

Other derivations:

S

aSbSGrammar:

Page 15: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 15

Language of the grammar

S

aSbS

}0:{ nbaL nn

Page 16: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 16

More Notation

Grammar PSTVG ,,,

:V

:T

:S

:P

Set of variables

Set of terminal symbols

Start variable

Set of Production rules

Page 17: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 17

Example

Grammar :

S

aSbSG

PSTVG ,,,

}{SV },{ baT

},{ SaSbSP

Page 18: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 18

More NotationSentential Form: A sentence that contains variables and terminals

Example:

aaabbbaaaSbbbaaSbbaSbS

Sentential Forms sentence

Page 19: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 19

We write:

Instead of:

aaabbbS*

aaabbbaaaSbbbaaSbbaSbS

Page 20: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 20

nww*

1

nwwww 321

In zero or more steps

In general we write:

If:

ww*Trivially:

Page 21: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 21

S

aSbS

aaabbbS

abS

S

*

*

*

Example Grammar Possible Derivations

baaaaaSbbbbaaSbb

aaSbbS

Page 22: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 22

Another Grammar ExampleGrammar :

A

aAbA

AbS

Derivations:

aabbbaaAbbbaAbbAbS

abbaAbbAbS

bAbS

⇒⇒⇒⇒

⇒⇒⇒

⇒⇒

G

Page 23: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 23

More Derivations

aaaabbbbbaaaaAbbbbb

aaaAbbbbaaAbbbaAbbAbS

bbaS

bbbaaaaaabbbbS

aaaabbbbbS

nn

A

aAbA

AbSGrammar

Page 24: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 24

Language of a Grammar

For a grammar with start variable :

GS

}:{)( wSwGL

String of terminals

Page 25: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 25

ExampleFor grammar :

A

aAbA

AbS

}0:{)( nbbaGL nn

Since: bbaS nn

G

Page 26: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 26

A Convenient Notation

A

aAbA|aAbA

thearticle

aarticle

theaarticle |

Page 27: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 27

Example

Context-free grammar : |aSbS

aabbaaSbbaSbS

G

Possible Derivations:

aaabbbaaaSbbbaaSbbaSbS

)(GL

(((( ))))

}0:{ nba nn

Describes parentheses:)b (, a

Page 28: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 28

||bsbaSaS

abbaabSbaaSaS

Context-free grammar :G

Derivations:

Example

abaabaabaSabaabSbaaSaS

)(GL }*},{:{ bawwwR

Palindromes of even length

Page 29: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 29

|| SSaSbS

ababSaSbSSSS

A context-free grammar :G

Derivations:

Example

abababaSbabSaSbSSSS

}prefixanyin

)()( and

),()(:{

v

vnvn

wnwnw

ba

ba

)(GL

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

Describes matched parentheses: )b (, a

Page 30: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 30

Definition: Context-Free Grammars

Grammar

Productions of the form:

xAString of variables and terminals

),,,( PSTVG

Variables Terminalsymbols

Startvariable

Variable

Page 31: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 31

*},:{)(*

TwwSwGL

),,,( PSTVG

The language of the grammar is:

Page 32: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 32

Definition: Context-Free Languages

A language is context-free

if and only if

there is a context-free grammar with

L

G)(GLL

Page 33: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 33

Derivation Orderand

Derivation Trees

Page 34: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 34

Derivation Order ABS .1

A

aaAA

.3

.2

B

BbB

.5

.4

aabaaBbaaBaaABABS54321

Leftmost derivation:

aabaaAbAbABbABS32541

Rightmost derivation:

Page 35: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 35

|AB

bBbA

aABS

Leftmost derivation:

abbbbabbbbB

abbBbbBabAbBabBbBaABS

Rightmost derivation:

abbbbabbBbb

abAbabBbaAaABS

Page 36: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 36

ABS

ABS |aaAA |BbB

S

BA

Derivation Trees

Page 37: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 37

ABS |aaAA |BbB

aaABABS

a a A

S

BA

Page 38: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 38

ABS |aaAA |BbB

aaABbaaABABS S

BA

a a A B b

Page 39: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 39

ABS |aaAA |BbB

aaBbaaABbaaABABS S

BA

a a A B b

Page 40: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 40

ABS |aaAA |BbB

aabaaBbaaABbaaABABS S

BA

a a A B b

Derivation Tree

Page 41: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 41

aabaaBbaaABbaaABABS

yield

aab

baa

S

BA

a a A B b

Derivation Tree

ABS |aaAA |BbB

Page 42: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 42

Partial Derivation Trees

ABS

S

BA

Partial derivation tree

ABS |aaAA |BbB

Page 43: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 43

aaABABS

S

BA

a a A

Partial derivation tree

Page 44: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 44

aaABABS

S

BA

a a A

Partial derivation tree

sententialform

yield

aaAB

Page 45: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 45

aabaaBbaaBaaABABS

aabaaAbAbABbABS S

BA

a a A B b

Same derivation tree

Sometimes, derivation order doesn’t matter

Leftmost:

Rightmost:

Page 46: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 46

Ambiguity

Page 47: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 47

aEEEEEE |)(|| aaa

E

EE

EE

a

a a

aaaEaa

EEaEaEEE

*

leftmost derivation

Page 48: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 48

aEEEEEE |)(|| aaa

E

EE

a a

EE a

aaaEaa

EEaEEEEEE

leftmost derivation

Page 49: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 49

aEEEEEE |)(|| aaa

E

EE

a a

EE a

E

EE

EE

a

a a

Two derivation trees

Page 50: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 50

The grammar aEEEEEE |)(|| is ambiguous:

E

EE

a a

EE a

E

EE

EE

a

a a

string aaa has two derivation trees

Page 51: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 51

string aaa has two leftmost derivations

aaaEaa

EEaEEEEEE

aaaEaa

EEaEaEEE

*

The grammar aEEEEEE |)(|| is ambiguous:

Page 52: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 52

Definition:

A context-free grammar is ambiguous

if some string has:

two different derivation trees OR two leftmost derivations

G

)(GLw

Page 53: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 53

Why do we care about ambiguity?

E

EE

a a

EE a

E

EE

EE

a

a a

aaa

take 2a

Page 54: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 54

E

EE

EE

E

EE

EE

222

2

2 2 2 2

2

Page 55: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 55

E

EE

EE

E

EE

EE

6222

2

2 2 2 2

2

8222

4

2 2

2

6

2 2

24

8

Good derivation Tree

Bad derivation Tree

Page 56: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 56

• We want to remove ambiguity

• Ambiguity is bad for programming languages

Page 57: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 57

We fix the ambiguous grammar:

aEEEEEE |)(||

New unambiguous grammar:

aEF

FFTT

TTEE

|)(

|

|

Page 58: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 58

aaaFaaFFa

FTaTaTFTTTEE

E

E T

T F

F

a

T

F

a

a

aaa

aEF

FFTT

TTEE

|)(

|

|

Unique derivation tree

Page 59: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 59

Another Ambiguous Grammar

IF_STMT if EXPR then STMT| if EXPR then STMT else STMT

Page 60: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 60

If expr1 then if expr2 then stmt1 else stmt2

IF_STMT

expr1 then

elseif expr2 then

STMT

stmt1

if

IF_STMT

expr1 then else

if expr2 then

STMT stmt2if

stmt1

stmt2

Page 61: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 61

Inherent Ambiguity

Some context free languageshave only ambiguous grammars

Example: }{}{ mmnmnn cbacbaL

||11

aAbA

AcSS

||22

bBcB

BaSS

21 | SSS

0, mn

Page 62: Fall 2005Costas Busch - RPI1 Context-Free Languages

Fall 2005 Costas Busch - RPI 62

The string nnn cbahas always two derivation trees(for any grammar)

S

1S

S

2S

1S c 2Sa

For example