Ash
Ash

Reputation: 1

I want to convert EBNF to BNF

EBNF

<A> ::= <B><C> '('[<D>{,<D>}]')';

When I solve the problem, it comes out like this:

BNF

<A>::=<B><C>(); |<B><C> (<D>|<A><D>);

Is the answer correct?

Upvotes: 0

Views: 849

Answers (1)

Vijay Kumavat
Vijay Kumavat

Reputation: 741

It contains instructions for each production that needs to be converted:

From EBNF to BNF

For building parsers (especially bottom-up) a BNF grammar is often better, than EBNF. But it's easy to convert an EBNF Grammar to BNF:

  • Convert every repetition { E } to a fresh non-terminal X and add X =

    $\epsilon$ | X E. 
    
  • Convert every option [ E ] to a fresh non-terminal X and add

    X = $\epsilon$ | E. (We can convert X = A [ E ] B. to X = A
    E B | A B.) 
    
  • Convert every group ( E ) to a fresh non-terminal X and add X = E.

  • We can even do away with alternatives by having several productions with the same non-terminal.

    X = E | E'. becomes X = E. X
    = E'.
    

Refer this links:

Upvotes: 0

Related Questions