Reputation: 1
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
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