# L8 by honeytech

VIEWS: 62 PAGES: 16

• pg 1
```									Examples of CFG
Example 1
How to generate aabb?
S  aSb  aabb (use Rule 1) (use Rule 2)
S  aSb S  ab

How to generate aaabbb?
S  aSb  aaSbb  aaabbb (use Rule 1) (use Rule 1) (use Rule 2)

CFG
Notice that:
– We must start with the start symbol – We can use any production any number of times. – The final string can only contain terminals.

Examples of CFG
Example 2
How to represent the language of balanced parentheses, i.e., {, (), (()), ()(), (()()), …..}? Consider the following CFG G2: S  SS S  (S) S In this example, variables are {S}, terminals are {(, )}, start symbol is S and productions are the above three rules.

Examples of CFG
Example 2
How to generate ()? S  (S) (use Rule 2)
 () S  (S)  (SS)  ((S)S)  ((S)(S))  (()(S))  (()()) (use Rule 3) (use Rule 2) (use Rule 1) (use Rule 2) (use Rule 2) (use Rule 3) (use Rule 3) S  SS S  (S) S

How to generate (()())?

Examples of CFG
Example 3
How can we represent all the arithmetic expressions with “plus”, “minus”, “parentheses” and variables x, y and z, i.e., {x, y, z, x+y, x-y, y+x, x+(y-z), ….. }? Consider the following CFG G3:
EE+E EE-E E  (E) EV Vx Vy Vz

In this example, variables are {E, V}, terminals are {+, -, (, ), x, y, z}, start symbol is S and productions are the above seven rules.

CFG
Example 3
How to generate x+(y-z)? EE+E (use Rule 1)
V+E x+E  x + (E)  x + (E - E)  x + (V - E)  x + (y - E)  x + (y - V)  x + (y - z) (use Rule 4) (use Rule 5) (use Rule 3) (use Rule 2) (use Rule 4) (use Rule 6) (use Rule 4) (use Rule 7)

E  E + E | E - E | (E) | V
Vx|y|z * Note that we can write the productions in this way.

Class Discussion
1. Generate the following string in L(G). a). Tim ate Cheese. b). Big jim ate green cheese. c). Big cheese ate jim. 2. Write CFG for the a). „if „ loop in “C” Language. b). For the string which do not contain three consecutive „b‟s.

Derivation
Consider the context free grammar G3: EE+E EE-E E  (E) EV Vx Vz Vy How to derive the string x+(y-z)?

Parse Tree (Derivation Tree)
We can represent the derivation with a tree:
E
Grammar: E  E + E | E - E | (E) | V Vx|y|z

E + E V ( E )
x E - E

We can get x+(y-z) by reading the leaves from left to right. This is called the yield of the tree.

V y

V z

Derivation: EE+E V+E x+E  x + (E)  x + (E - E)  x + (V - E)  x + (y - E)  x + (y - V)  x + (y - z)

Parse Tree
Formally, let G = (V, T, P, S) be a CFG, a parse tree for G must be such that: • Every vertex has a label from VT {}. • The root is labeled S. • The label of any internal vertex is in V. • If a vertex is labeled , it must be a leaf and has no sibling. • If a vertex is labeled A and its children are labeled X1, X2, ..., Xk from left to right, then A  X1 X2 … X3 is a production in P.

Left Derivation
Always derive the leftmost variable first:
E

E + E V ( E )
x E - E

V y

V z

EE+E V+E x+E  x + (E)  x + (E - E)  x + (V - E)  x + (y - E)  x + (y - V)  x + (y - z)

Right Derivation
Always derive the rightmost variable first:
E

E + E V ( E )
x E - E

V y

V z

EE+E  E + (E)  E + (E - E)  E + (E - V)  E + (E - z)  E + (V - z)  E + (y - z)  V + (y - z)  x + (y - z)

Ambiguity
• Each parse tree has one unique leftmost derivation and one unique rightmost derivation.
• A grammar is ambiguous if some strings in it have more than one parse trees, i.e., it has more than one leftmost derivations (or more than one rightmost derivations).

Ambiguity
Consider the following grammar G: S  AS | a | b A  SS | ab A string generated by this grammar can have more than one parse trees. Consider the string abb:
S

S S
A b S

A S a S

a

b

b

b

Ambiguity
As another example, consider the following grammar: E  E + E | E * E | (E) | x | y | z There are 2 leftmost derivations for x + y + z:
E

E

+ E

x y + z

EE+E x+E x+E+E x+y+E x+y+z

EE+E E+E+E E + E x+E+E x+y+E z x + y x+y+z
E

Class Discussion
Consider the grammar of an if-statement:
<if-stat> <if-stat> <cond> <stat>     if <cond> then <stat> if <cond> then <stat> else <stat> P|Q <if-stat> | R | S

Consider the following if-statement: if P then if Q then R else S This grammar is ambiguous since the above statement can have two parse trees. What are they?

```
To top