prof. busch - lsu1 context-free languages. prof. busch - lsu2 regular languages context-free...

59
Prof. Busch - LSU 1 Context-Free Languages

Upload: reginald-simpson

Post on 22-Dec-2015

232 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 1

Context-Free Languages

Page 2: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 2

Regular Languages

}0:{ nba nn }{ Rww

**ba *)( ba

Context-Free Languages

Page 3: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 3

Context-Free Languages

PushdownAutomata

Context-FreeGrammars

stack

automaton

Page 4: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 4

Context-Free Grammars

Page 5: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 5

GrammarsGrammars express languages

Example: the English language grammar

verbpredicate

nounarticlephrasenoun

predicatephrasenounsentence

_

_

Page 6: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 6

sleepsverb

runsverb

dognoun

catnoun

thearticle

aarticle

Page 7: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 7

Derivation of string “the dog sleeps”:

sleepsdogthe

verbdogthe

verbnounthe

verbnounarticle

verbphrasenoun

predicatephrasenounsentence

_

_

Page 8: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 8

Derivation of string “a cat runs”:

runscata

verbcata

verbnouna

verbnounarticle

verbphrasenoun

predicatephrasenounsentence

_

_

Page 9: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 9

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 10: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 10

catnoun

Variables

Sequence of Terminals (symbols)

Productions

predicatephrasenounsentence _

Sequence of Variables

Page 11: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 11

Another Example

S

aSbSGrammar:

Variable

Sequence of terminals and variables

The right side may be

Page 12: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 12

Grammar:

Derivation of string :

S

aSbS

abaSbS

ab

aSbS S

Page 13: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 13

Grammar:

Derivation of string :

aabbaaSbbaSbS

aSbS S

aabb

S

aSbS

Page 14: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 14

aaabbbaaaSbbbaaSbbaSbS

aaaabbbbaaaaSbbbb

aaaSbbbaaSbbaSbS

Other derivations:

S

aSbSGrammar:

Page 15: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 15

S

aSbS

}0:{ nbaL nn

Grammar:

Language of the grammar:

Page 16: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 16

We write:

Instead of:

aaabbbS*

aaabbbaaaSbbbaaSbbaSbS

for zero or more derivation steps

A Convenient Notation

Page 17: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 17

nww*

1

nwwww 321

in zero or more derivation steps

In general we write:

If:

ww*Trivially:

Page 18: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 18

S

aSbS

aaabbbS

abS

S

*

*

*

Example Grammar Possible Derivations

baaaaaSbbbbaaSbbS

Page 19: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 19

S

aSbS|aSbS

thearticle

aarticle

theaarticle |

Another convenient notation:

Page 20: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 20

Formal Definitions

PSTVG ,,,

Set of variables

Set of terminal symbols

Start variable

Set of productions

Grammar:

Page 21: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 21

Context-Free Grammar:

All productions in are of the form

sA

String of variables and terminals

),,,( PSTVG

P

Variable

Page 22: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 22

|aSbS

PSTVG ,,,

}{SV },{ baT

},{ SaSbSP

variablesterminals

productions

start variable

Example of Context-Free Grammar

Page 23: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 23

For a grammar with start variable G S

String of terminals or

*},:{)(*

TwwSwGL

Language of a Grammar:

Page 24: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 24

context-free grammar :

}0:{)( nbaGL nn

nnbaS

G

Example:

Since, there is derivation

for any 0n

|aSbS

Page 25: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 25

A language is context-freeif there is a context-free grammar

with

LG

)(GLL

Context-Free Language definition:

Page 26: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 26

since context-free grammar :

}0:{ nbaL nn

G

Example:

is a context-free language

generates LGL )(

|aSbS

Page 27: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 27

|| bSbaSaS

abbaabSbaaSaS

Context-free grammar :G

Example derivations:

abaabaabaSabaabSbaaSaS

)(GL }*},{:{ bawwwR

Palindromes of even length

Another Example

Page 28: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 28

|| SSaSbS

ababSaSbSSSS

Context-free grammar :G

Example derivations:

abababaSbabSaSbSSSS

}prefixanyin

)()( and

),()(:{

v

vnvn

wnwnw

ba

ba

)(GL

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

Describes matched parentheses: )b (, a

Another Example

Page 29: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 29

Derivation Orderand

Derivation Trees

Page 30: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 30

Derivation Order

Consider the following example grammar with 5 productions:

ABS .1

A

aaAA

.3

.2

B

BbB

.5

.4

Page 31: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 31

aabaaBbaaBaaABABS54321

Leftmost derivation order of string :aab

At each step, we substitute the leftmost variable

ABS .1

A

aaAA

.3

.2

B

BbB

.5

.4

Page 32: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 32

aabaaAbAbABbABS32541

Rightmost derivation order of string :aab

At each step, we substitute the rightmost variable

ABS .1

A

aaAA

.3

.2

B

BbB

.5

.4

Page 33: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 33

aabaaAbAbABbABS32541

Rightmost derivation of :aab

aabaaBbaaBaaABABS54321

Leftmost derivation of :aab

ABS .1

A

aaAA

.3

.2

B

BbB

.5

.4

Page 34: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 34

Derivation Trees

Consider the same example grammar:

aabaaBbaaABbaaABABS

And a derivation of :aab

ABS |aaAA |BbB

Page 35: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 35

ABS S

BA

ABS |aaAA |BbB

yield AB

Page 36: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 36

aaABABS

a a A

S

BA

ABS |aaAA |BbB

yield aaAB

Page 37: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 37

aaABbaaABABS S

BA

a a A B b

ABS |aaAA |BbB

yield aaABb

Page 38: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 38

aaBbaaABbaaABABS S

BA

a a A B b

ABS |aaAA |BbB

yieldaaBbBbaa

Page 39: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 39

aabaaBbaaABbaaABABS

yieldaabbaa

S

BA

a a A B b

Derivation Tree

ABS |aaAA |BbB

(parse tree)

Page 40: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 40

aabaaBbaaBaaABABS

aabaaAbAbABbABS S

BA

a a A B b

Give same derivation tree

Sometimes, derivation order doesn’t matter

Leftmost derivation:

Rightmost derivation:

Page 41: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 41

Ambiguity

Page 42: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 42

Grammar for mathematical expressions

))(()( aaaaaaa

Example strings:

Denotes any number

aEEEEEE |)(||

Page 43: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 43

A leftmost derivationfor aaa

E

EE

EE

a

a a

aaaEaa

EEaEaEEE

*

aEEEEEE |)(||

Page 44: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 44

E

EE

a a

EE a

aaaEaa

EEaEEEEEE

Another leftmost derivationfor

aEEEEEE |)(||

aaa

Page 45: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 45

aaa E

EE

a a

EE a

E

EE

EE

a

a a

Two derivation treesfor

aEEEEEE |)(||

Page 46: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 46

E

EE

EE

E

EE

EE

2

2 2 2 2

2

222 aaa

take 2a

Page 47: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 47

E

EE

EE

E

EE

EE

6222

2

2 2 2 2

2

8222

4

2 2

2

6

2 2

24

8

Good Tree Bad Tree

Compute expression result using the tree

Page 48: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 48

Two different derivation treesmay cause problems in applications whichuse the derivation trees:

• Evaluating expressions

• In general, in compilers for programming languages

Page 49: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 49

Ambiguous Grammar:

A context-free grammar is ambiguousif there is a string which has:

two different derivation trees or two leftmost derivations

G)(GLw

(Two different derivation trees give two different leftmost derivations and vice-versa)

Page 50: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 50

E

EE

a a

EE a

E

EE

EE

a

a a

string aaa has two derivation trees

aEEEEEE |)(||

this grammar is ambiguous since

Example:

Page 51: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 51

string aaa has two leftmost derivations

aaaEaa

EEaEEEEEE

aaaEaa

EEaEaEEE

*

aEEEEEE |)(||

this grammar is ambiguous also because

Page 52: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 52

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

Another ambiguous grammar:

Variables Terminals

Very common piece of grammar in programming languages

Page 53: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 53

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

Two derivation trees

Page 54: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 54

In general, ambiguity is bad and we want to remove it

Sometimes it is possible to find a non-ambiguous grammar for a language

But, in general ιt is difficult to achieve this

Page 55: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 55

aE

EE

EEE

EEE

)(aEF

FFTT

TTEE

|)(

|

|

Ambiguous Grammar

Non-AmbiguousGrammar

Equivalent

generates the same language

A successful example:

Page 56: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 56

aaaFaaFFa

FTaTaTFTTTEE

E

E T

T F

F

a

T

F

a

a

aEF

FFTT

TTEE

|)(

|

|

Unique derivation treefor aaa

Page 57: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 57

}{}{ mmnmnn cbacbaL

0, mn

An un-successful example:

every grammar that generates this language is ambiguous

L is inherently ambiguous:

Page 58: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 58

}{}{ mmnmnn cbacbaL

||11

aAbA

AcSS

||22

bBcB

BaSS

21 | SSS

Example (ambiguous) grammar for :L

Page 59: Prof. Busch - LSU1 Context-Free Languages. Prof. Busch - LSU2 Regular Languages Context-Free Languages

Prof. Busch - LSU 59

The string Lcba nnn has always two different derivation trees(for any grammar)

S

1S

S

2S

1S c 2Sa

For example