0% found this document useful (0 votes)
19 views61 pages

Formal Languages & Finite Theory of Automata: BS Course

The document discusses context-free languages and grammars. It contains the following key points in 3 sentences: Context-free grammars are used to define context-free languages and consist of variables, terminals, productions, and a start variable. Derivations of strings from the start variable using the productions generate the language of the grammar. Derivation trees can represent the step-by-step substitutions in a derivation in a tree structure showing the parse of a string according to the grammar.

Uploaded by

Asim Raza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views61 pages

Formal Languages & Finite Theory of Automata: BS Course

The document discusses context-free languages and grammars. It contains the following key points in 3 sentences: Context-free grammars are used to define context-free languages and consist of variables, terminals, productions, and a start variable. Derivations of strings from the start variable using the productions generate the language of the grammar. Derivation trees can represent the step-by-step substitutions in a derivation in a tree structure showing the parse of a string according to the grammar.

Uploaded by

Asim Raza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 61

Formal Languages & Finite

Theory of Automata
BS Course

Slide # : 05
Muhammad Faizan Tahir
Context-Free Languages

2
Context-Free Languages

n n R
{a b : n  0} {ww }

Regular Languages
a *b * ( a  b) *

3
Context-Free Languages

Context-Free Pushdown
Grammars Automata

stack

automaton

4
Context-Free Grammars

5
Grammars
Grammars express languages

Example: the English language grammar

sentence  noun _ phrase predicate

noun _ phrase  article noun

predicate  verb
6
article  a
article  the

noun  cat
noun  dog

verb  runs
verb  sleeps
7
Derivation of string “the dog walks”:

sentence  noun _ phrase predicate


 noun _ phrase verb
 article noun verb
 the noun verb
 the dog verb
 the dog sleeps

8
Derivation of string “a cat runs”:

sentence  noun _ phrase predicate


 noun _ phrase verb
 article noun verb
 a noun verb
 a cat verb
 a cat runs

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” }
10
Productions Sequence of
Terminals (symbols)

noun  cat

sentence  noun _ phrase predicate

Variables Sequence of Variables

11
Backus Naur Form

{A string consist of at least one non-


terminal}  {A string of terminals / non-
terminals / terminals & non-terminals}

E.g.
<number> = <digit> | <number> <digit>
<digit> = 0, 1, 2, …, 9

12
Another Example

Sequence of
terminals and variables

Grammar: S  aSb
S 

Variable The right side


may be 

13
Grammar: S  aSb
S 

Derivation of string ab :
S  aSb  ab

S  aSb S 
14
Grammar: S  aSb
S 

Derivation of string aabb :


S  aSb  aaSbb  aabb

S  aSb S 
15
Grammar: S  aSb
S 

Other derivations:

S  aSb  aaSbb  aaaSbbb  aaabbb

S  aSb  aaSbb  aaaSbbb


 aaaaSbbbb  aaaabbbb
16
Grammar: S  aSb
S 

Language of the grammar:

n n
L  {a b : n  0}

17
A Convenient Notation
*
We write: S  aaabbb
for zero or more derivation steps

Instead of:

S  aSb  aaSbb  aaaSbbb  aaabbb

18
*
In general we write: w1  wn

If: w1  w2  w3    wn

in zero or more derivation steps

*
Trivially: w  w
19
Example Grammar Possible Derivations
S  aSb *
S 
S  *
S  ab
*
S  aaabbb

 
S  aaSbb  aaaaaSbbbbb

20
Another convenient notation:

S  aSb
S  aSb | 
S 

article  a
article  a | the
article  the
21
Formal Definitions

Grammar: G   V , T , S , P 

Set of
variables
Set of Start Set of
terminal variable productions
symbols

22
Context-Free Grammar: G  (V , T , S , P )

All productions in P are of the form

A s
Variable String of
variables and
terminals

23
Example of Context-Free Grammar
S  aSb | 
productions
P  {S  aSb, S  }

G   N ,T , S, P

N  {S} S

Non-Terminals T  {a, b} start variable


Terminals

24
Language of a Grammar:

For a grammar G with start variable S


*
L(G )  {w : S  w, w  T *}

String of terminals or 

25
Example:

context-free grammar G : S  aSb | 

L(G )  {a b : n  0}
n n

Since, there is derivation



S a b n n
for any n 0
26
Context-Free Language:
A language L is context-free
if there is a context-free grammar G
with L  L(G )

27
Example:

L  {a b : n  0 }
n n

is a context-free language
since context-free grammar G :
S  aSb | 

generates L(G )  L

28
Another Example

Context-free grammar G :
S  aSa | bSb | 
Example derivations:
S  aSa  abSba  abba
S  aSa  abSba  abaSaba  abaaba

R
L(G )  {ww : w  {a, b}*}
Palindromes of even length
29
Another Example
Context-free grammar G:
S  aSb | SS | 
Example derivations:
S  SS  aSbS  abS  ab
S  SS  aSbS  abS  abaSb  abab

L(G )  {w : na ( w)  nb ( w),
and na (v)  nb (v)
Describes
in any prefix v}
matched
parentheses: () ((( ))) (( )) a  (, b )
30
Derivation Order
and
Derivation Trees

31
Derivation Order

Consider the following example grammar


with 5 productions:

1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

32
1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

Leftmost derivation order of string aab :

1 2 3 4 5
S  AB  aaAB  aaB  aaBb  aab

At each step, we substitute the


leftmost variable
33
1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

Rightmost derivation order of string aab :

1 4 5 2 3
S  AB  ABb  Ab  aaAb  aab
At each step, we substitute the
rightmost variable
34
1. S  AB 2. A  aaA 4. B  Bb
3. A   5. B  

Leftmost derivation of aab :


1 2 3 4 5
S  AB  aaAB  aaB  aaBb  aab

Rightmost derivation of aab :


1 4 5 2 3
S  AB  ABb  Ab  aaAb  aab
35
Derivation Trees
Consider the same example grammar:

S  AB A  aaA |  B  Bb | 

And a derivation of aab :

S  AB  aaAB  aaABb  aaBb  aab

36
S  AB A  aaA |  B  Bb | 

S  AB
S

A B

yield AB

37
S  AB A  aaA |  B  Bb | 

S  AB  aaAB
S

A B

yield aaAB
a a A

38
S  AB A  aaA |  B  Bb | 

S  AB  aaAB  aaABb
S

A B

a a A B b

yield aaABb
39
S  AB A  aaA |  B  Bb | 
S  AB  aaAB  aaABb  aaBb
S

A B

a a A B b

yield
 aaBb  aaBb
40
S  AB A  aaA |  B  Bb | 
S  AB  aaAB  aaABb  aaBb  aab
Derivation Tree S
(parse tree)
A B

a a A B b
yield
  aab  aab
41
Sometimes, derivation order doesn’t matter
Leftmost derivation:
S  AB  aaAB  aaB  aaBb  aab
Rightmost derivation:
S  AB  ABb  Ab  aaAb  aab
S

Give same A B
derivation tree
a a A B b

  42
Ambiguity

43
Grammar for mathematical expressions

E  E  E | E  E | (E) | a

Example strings:
(a  a )  a  (a  a  (a  a ))

Denotes any number

44
E  E  E | E  E | (E) | a

E  E  E  a E  a EE
E
 a  a E  a  a*a
E  E
A leftmost derivation
for a  a  a
a E  E

a a
45
E  E  E | E  E | (E) | a

E  EE  E  EE  a EE


E
 a  aE  a  aa
E  E
Another
leftmost derivation
for a  a  a E  E a

a a
46
E  E  E | E  E | (E) | a

Two derivation trees


for a  a  a
E E

E  E E  E

a E  E E  E a

a a a a
47
take a2

a  a a  2  22
E E

E  E E  E

2 E  E E  E 2

2 2 2 2
48
Good Tree Bad Tree
2  22  6 2  22  8
6 Compute expression result 8
E using the tree E
2 4 4 2
E  E E  E
2 2 2 2
2 E  E E  E 2

2 2 2 2
49
Two different derivation trees
may cause problems in applications which
use the derivation trees:

• Evaluating expressions

• In general, in compilers
for programming languages

50
Ambiguous Grammar:
A context-free grammar G is ambiguous
if there is a string w L(G ) which has:

two different derivation trees


or
two leftmost derivations

(Two different derivation trees give two


different leftmost derivations and vice-versa)
51
Example: E  E  E | E  E | (E) | a

this grammar is ambiguous since


string a  a  a has two derivation trees
E E

E  E E  E

a E  E E  E a

a a a a
52
E  E  E | E  E | (E) | a
this grammar is ambiguous also because
string a  a  a has two leftmost derivations
E  E  E  a E  a EE
 a  a E  a  a*a

E  EE  E  EE  a EE


 a  aE  a  aa
53
Another ambiguous grammar:

IF_STMT  if EXPR then STMT


| if EXPR then STMT else STMT

Variables Terminals

Very common piece of grammar


in programming languages
54
If expr1 then if expr2 then stmt1 else stmt2
IF_STMT

if expr1 then STMT

if expr2 then stmt1 else stmt2

Two derivation trees


IF_STMT

if expr1 then STMT else stmt2

if expr2 then stmt1


55
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 we cannot do so

56
A successful example:
Equivalent
Ambiguous
Non-Ambiguous
Grammar
Grammar
E E E
E  E T |T
E  E E
T T  F | F
E  (E )
E a F  (E ) | a
generates the same
language
57
E  E T T T  F T  a T  a T F
 a  F F  a  aF  a  aa
E
E  E T |T
E  T
T T F | F
F  (E) | a T T  F

F F a
Unique
derivation tree
for a  a  a a a
58
An un-successful example:

n n m n m m
L  {a b c }  {a b c }
n, m  0

L is inherently ambiguous:

every grammar that generates this


language is ambiguous

59
Example (ambiguous) grammar for L:

n n m n m m
L  {a b c }  {a b c }

S  S1 | S 2 S1  S1c | A S 2  aS2 | B
A  aAb |  B  bBc | 

60
The string a n b n c n  L
has always two different derivation trees
(for any grammar)

For example
S S

S1 S2

S1 c a S2

61

You might also like