You are on page 1of 9

# Theory of Computation (With Automata Theory)

AMBIGUITY
Ambiguity in Context-Free Grammars

Introduction

Consider
the
following
grammar G = (V, , R, S)
where
V = {<expr>}

= {+, , a, b, c, (, )}
S = {<expr>}
and the set of rules R is
1. <expr><expr>+<expr>
<expr><expr>
(<expr>)abc
Ambiguity

* Property of STI
Page 1 of 9

## The leftmost derivation for the

string a+b+c is as follows:
<expr> <expr> + <expr>
a + <expr>
a + <expr> + <expr>
a + b + <expr>
a+b+c
The parse
derivation is

tree

for

the

<expr>

<expr>

<expr>

<expr>

Ambiguity

<expr>

* Property of STI
Page 2 of 9

## However, there is another

leftmost derivation for the
string a + b + c which is as
follows:
<expr> <expr> + <expr>
<expr> + <expr> +
<expr>
a + <expr> + <expr>
a + b + <expr>
a+b+c
The parse
derivation is

tree

for

the

<expr>

<expr>

<expr>

a
Ambiguity

<expr>

<expr>

b
* Property of STI
Page 3 of 9

Ambiguity

## The first derivation actually

added b + c first. And then it

## The second derivation actually

added a + b first. And then it

## If a string can be derived from

a grammar in more than one
way, then the grammar is said
to be ambiguous and the
string is derived ambiguously.

## Another way of stating this is

when a string has two or more
different leftmost derivations
(or rightmost derivations) or
two or more parse trees, then
the grammar is ambiguous.

* Property of STI
Page 4 of 9

## As another example, the

leftmost derivation for the
string a + b c is as follows:
<expr> <expr> + <expr>
a + <expr>
a + <expr> <expr>
a + b <expr>
a+bc
The parse
derivation is

tree

for

the

<expr>

<expr>

<expr>

<expr>

Ambiguity

<expr>

* Property of STI
Page 5 of 9

## However, there is another

leftmost derivation for the
string a+bc which is as
follows:
<expr> <expr> <expr>
<expr> + <expr>
<expr>
a + <expr> <expr>
a + b <expr>
a+bc
The parse
derivation is

tree

for

the

<expr>

<expr>

<expr>

Ambiguity

<expr>

<expr>

* Property of STI
Page 6 of 9

Ambiguity

## The first derivation actually

multiplied b c first. And then
it added a to the product.

## The second derivation actually

added a + b first. And then it
multiplied the sum to c.

## Because the multiplication

operation
has
a
higher
operation, the first derivation
will produce the correct result.

## If ambiguity in a CFG will

produce erroneous results, the
grammar must be rewritten to
remove any ambiguities.
* Property of STI
Page 7 of 9

## Theory of Computation (With Automata Theory)

Rewriting grammar G to
remove ambiguity results in
1. <expr> <term>
<expr>+<term>
2. <term> <factor>
<term><factor>
3. <factor> (<expr>)abc
The parse tree for a + b c is
<expr>

<expr>

Ambiguity

<term>

<term>

<term>

<factor>

<factor>

<factor>

* Property of STI
Page 8 of 9

## Formal Definition of Ambiguity

A string w is derived
ambiguously in context-free
grammar G if it has two or
more
distinct
leftmost
derivations, two or more
distinct rightmost derivations,
or two or more distinct parse
trees.

Grammar G is ambiguous if it
generates
some
string
ambiguously.

Ambiguity

* Property of STI
Page 9 of 9