GATE CSE
First time here? Checkout the FAQ!
x
0 votes
74 views
An unambiguous grammar has same leftmost and rightmost derivation

Please provide an example to show this.
asked in Compiler Design by (439 points)   | 74 views

1 Answer

0 votes

From Wikipedia:

An ambiguous grammar is a context-free grammar for which there exists a string that can have more than one leftmost derivation, while an unambiguous grammar is a context-free grammar for which every valid string has a unique leftmost derivation.

For a grammar to be unambiguous, they should generate same parse trees, which is only possible if there is unique LMD (and unique RMD) but it's not necessary for LMD and RMD to be same.

So your conclusion that LMD and RMD have to be same for a grammar to be unambiguous, is incorrect.

Consider the grammar:

S→AS|a

A→a

Now string "aa" can have different LMD and RMD:

RMD: S→AS→Aa→aa

LMD: S→AS→aS→aa

But they generate the same parse tree (because the generation of any string has a unique LMD and a unique RMD). So the language is unambiguous.

 

Now consider the following grammar:

S→SS|a

Now string "aaa" has two LMD derivations:

LMD1: S -> SS -> SSS -> aSS -> aaS -> aaa

LMD2: S -> SS -> aS -> aSS -> aaS -> aaa

So there will be two different parse trees, which you can confirm by drawing and hence the compiler will get confused which parse tree to follow in order to generate the string. So this grammar is ambiguous.

Notice that both grammars generate the same language.

answered by Loyal (3k points)  
Top Users Jan 2017
  1. Debashish Deka

    7906 Points

  2. Habibkhan

    4736 Points

  3. Vijay Thakur

    4474 Points

  4. sudsho

    4318 Points

  5. saurabh rai

    4200 Points

  6. Arjun

    3638 Points

  7. Bikram

    3496 Points

  8. santhoshdevulapally

    3470 Points

  9. GateSet

    3228 Points

  10. Sushant Gokhale

    3116 Points

Monthly Topper: Rs. 500 gift card

18,944 questions
23,897 answers
52,114 comments
20,213 users