0% found this document useful (0 votes)
111 views18 pages

Context-Free Grammars: A Grammar Is A Set of Rules For Putting Strings Together and So Corresponds To A Language

A context-free grammar consists of variables, terminals, a start variable, and productions. Productions allow variables to be replaced by strings of variables and terminals. A grammar generates a language by applying productions to derive strings starting from the start variable. A language is context-free if it can be generated by a context-free grammar.

Uploaded by

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

Context-Free Grammars: A Grammar Is A Set of Rules For Putting Strings Together and So Corresponds To A Language

A context-free grammar consists of variables, terminals, a start variable, and productions. Productions allow variables to be replaced by strings of variables and terminals. A grammar generates a language by applying productions to derive strings starting from the start variable. A language is context-free if it can be generated by a context-free grammar.

Uploaded by

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

Context-Free Grammars

A grammar is a set of rules for putting strings


together and so corresponds to a language.
Grammars

A grammar consists of:

• a set of variables (also called nonterminals),


one of which is designated the start variable;
It is customary to use upper-case letters for
variables;
• a set of terminals (from the alphabet); and
• a list of productions (also called rules).

Goddard 6a: 2
Example: 0n1n

Here is a grammar:

S → 0S1
S→ε

S is the only variable. The terminals are 0 and 1.


There are two productions.

Goddard 6a: 3
Using a Grammar

A production allows one to take a string con-


taining a variable and replace the variable by
the RHS of the production.

String w of terminals is generated by the gram-


mar if, starting with the start variable, one can
apply productions and end up with w. The se-
quence of strings so obtained is a derivation
of w.

We focus on a special version of grammars called


a context-free grammar (CFG). A language is
context-free if it is generated by a CFG.
Goddard 6a: 4
Example Continued

S → 0S1
S→ε

The string 0011 is in the language generated.


The derivation is:
S =⇒ 0S1 =⇒ 00S11 =⇒ 0011

For compactness, we write

S → 0S1 | ε

where the vertical bar means or.

Goddard 6a: 5
Example: Palindromes

Let P be language of palindromes with alpha-


bet {a, b}. One can determine a CFG for P by
finding a recursive decomposition.
If we peel first and last symbols from a palin-
drome, what remains is a palindrome; and if we
wrap a palindrome with the same symbol front
and back, then it is still a palindrome.
CFG is

P → aP a | bP b | ε

Actually, this generates only those of even length. . .


Goddard 6a: 6
Formal Definition

One can provide a formal definition of a context-


free grammar. It is a 4-tuple (V, Σ, S, P ) where:

• V is a finite set of variables;


• Σ is a finite alphabet of terminals;
• S is the start variable; and
• P is the finite set of productions. Each
production has the form V → (V ∪ Σ) ∗.

Goddard 6a: 7
Further Examples: Even 0’s

A CFG for all binary strings with an even num-


ber of 0’s.

Find the decomposition. If first symbol is 1,


then even number of 0’s remain. If first sym-
bol is 0, then go to next 0; after that again an
even number of 0’s remain. This yields:

S → 1S | 0A0S | ε
A → 1A | ε

Goddard 6a: 8
Alternate CFG for Even 0’s

Here is another CFG for the same language.

Note that when first symbol is 0, what remains


has odd number of 0’s.

S → 1S | 0T | ε
T → 1T | 0S

Goddard 6a: 9
Example

A CFG for the regular language corresponding


to the RE 00 ∗11 ∗.

The language is the concatenation of two lan-


guages: all strings of zeroes with all strings of
ones.

S → CD
C → 0C | 0
D → 1D | 1

Goddard 6a: 10
Example Complement

A CFG for the complement of RE 00 ∗11 ∗.

CFGs don’t do “and”s, but they do do “or’s” A


string is not of the form 0i1j where i, j > 0 is one
of the following: contains 10; is only zeroes; or
is only ones. This yields CFG:

S→A|B|C
A → D10D
D → 0D | 1D | ε
B → 0B | 0
C → 1C | 1

Goddard 6a: 11
Consistency and Completeness

Note that to check a grammar and description


match, one must check two things: that every-
thing the grammar generates fits the description
(consistency), and everything in the description
is generated by the grammar (completeness).

Goddard 6a: 12
Example

Consider the CFG

S → 0S1S | 1S0S | ε

The string 011100 is generated:


S =⇒ 0S1S =⇒ 01S =⇒ 011S0S =⇒ 0111S0S0S
=⇒ 01110S0S =⇒ 011100S =⇒ 011100

What does this language contain? Certainly ev-


ery string generated has equal 0’s and 1’s. . .

But can any string with equal 0’s and 1’s be


generated?
Goddard 6a: 13
Example Argument for Completeness

Yes. All strings with equal 0’s & 1’s are gener-
ated:

Well, at some point, equality between 0’s and


1’s is reached. The key is that if string starts
with 0, then equality is first reached at a 1. So
the portion between first 0 and this 1 is itself
an example of equality, as is the portion after
this 1. That is, one can break up string as 0w1x
with both w and x in the language.

The break-up of 00101101: 0 0 1 0 1 1 0 1


w x
Goddard 6a: 14
A Silly Language CFG

This CFG generates sentences as composed of


noun- and verb-phrases:

S → NP VP
NP → the N
VP → V NP
V → sings | eats
N → cat | song | canary

This generates “the canary sings the song”, but


also “the song eats the cat”.
This CFG generates all “legal” sentences, not
just meaningful ones.
Goddard 6a: 15
Practice

Give grammars for the following two languages:

1. All binary strings with both an even number


of zeroes and an even number of ones.
2. All strings of the form 0a1b0c such that a + c =
b. (Hint: it’s the concatenation of two simpler
languages.)

Goddard 6a: 16
Practice Solutions

1)
S → 0X | 1Y | ε
X → 0S | 1Z (odd zeroes, even ones)
Y → 1S | 0Z (odd ones, even zeroes)
Z → 0Y | 1X (odd ones, odd zeroes)

2)
S → TU
T → 0T 1 | ε
U → 1U 0 | ε

Goddard 6a: 17
Summary

A context-free grammar (CFG) consists of a set


of productions that you use to replace a vari-
able by a string of variables and terminals. The
language of a grammar is the set of strings it
generates. A language is context-free if there is
a CFG for it.

Goddard 6a: 18

You might also like