Example
Example
= {a,b}
productions:
1. S SS
2. S XS
3. S
4. S YSY
5. X aa
6. X bb
7. Y ab
8. Y ba
This grammar generates EVEN-EVEN language.
= {a,b}
Example
productions:
1. S aB
2. S bA
3. A a
4. A aS
5. A bAA
6. B b
7. B bS
8. B aBB
This grammar generates the language EQUAL(The language of
strings, with number of a’s equal to number of b’s).
Note
It is to be noted that if the same non-terminal have
more than one productions, it can be written in
single line e.g.
S aS, S bS, S can be written as
S aS|bS|
It may also be noted that the productions S SS|
always defines the language which is closed w.r.t.
concatenation i.e.the language expressed by RE of
type r*. It may also be noted that the production S
SS defines the language expressed by r +.
Example
Consider the following CFG = {a,b}
productions:
1. S YXY
2. Y aY|bY|
3. X bbb
It can be observed that, using prod.2, Y generates . Y
generates a. Y generates b. Y also generates all the
combinations of a and b. thus Y generates the strings
generated by (a+b)*. It may also be observed that the above
CFG generates the language expressed by (a+b)*bbb(a+b)*.
Following are four words generated by the given CFG
Example continued …
S YXY S YXY
aYbbb bYbbbaY
abYbbb bbbbabY
abbbb bbbbabbY
= abbbb bbbbabbaY
bbbbabba
S YXY
= bbbbabba
bbbaY
bbbabY S YXY
bbbabaY bYbbbaY
bbbaba bbbba
= bbbaba = bbbba
Example
Consider the following CFG
1. S SS|XaXaX|
2. X bX|
It can be observed that, using prod.2, X
generates . X generates any number of b’s.
Thus X generates the strings generated by b*.
It may also be observed that the above CFG
generates the language expressed by
(b*ab*ab*)*.
Example
Consider the following CFG
= {a,b}
productions:
S aSa|bSb|a|b|
The above CFG generates the language
PALINDROME. It may be noted that the
CFG
S aSa|bSb|a|b generates the language NON-
NULLPALINDROME.
Example
Consider the following CFG
= {a,b}
productions:
S aSb|ab|
It can be observed that the CFG generates the
language {anbn: n=0,1,2,3, …}. It may also be
noted that the language {anbn: n=1,2,3, …} can
be generated by the following CFG S aSb|ab
Task
Construct CFG that generates the language
L = {w {a,b}*: length(w) 2 and second
letter of w from right is a}
Example
Consider the following CFG
(1) S aXb|bXa (2) X aX|bX|
The above CFG generates the language of
strings, defined over ={a,b}, beginning and
ending in different letters.
Task
Construct the CFG for the language of strings,
defined over ={a,b}, beginning and ending in
same letters.
Trees
As in English language any sentence can be expressed
by parse tree, so any word generated by the given CFG
can also be expressed by the parse tree, e.g.
consider the following CFG
S AA
A AAA|bA|Ab|a
Obviously, baab can be generated by the above CFG. To
express the word baab as a parse tree, start with S.
Replace S by the string AA, of nonterminals, drawing
the downward lines from S to each character of this
string as follows
Trees continued …
S
A A
Now let the left A be replaced by bA and
the right one by Ab then the tree will be
S
A A
b AA b
Trees continued …
Replacing both A’s by a, the above tree will
be
S
A A
b AA b
a a
Trees continued …
Thus the word baab is generated. The above
tree to generate the word baab is called
Syntax tree or Generation tree or
Derivation tree as well.