- Use square brackets [] for optional parts.
BNF:
<ret-stmnt> -> return <int-exprn> ;
| return ;
EBNF:
<ret-stmnt> -> return [ <int-exprn> ] ;
- Use braces {} to repeat indefinitely:
BNF:
<declist> -> <declaration> , <declist>
| <declaration>
EBNF:
<declist> -> <declaration> {, <declaration> }
or alternatively, use ellipsis:
<declist> -> <declaration> [, <declaration> ] ...
- Use braces {}+ to repeat at least once:
BNF:
<block> -> begin <stmnt-list> end
<stmnt-list> -> <stmnt> <stmnt-list>
| <stmnt>
EBNF:
<block> -> begin { <stmnt> }+ end
- Use | inside a rule for alternatives:
BNF:
<expr> -> <term> * <expr>
| <term> / <expr>
EBNF:
<expr> -> <term> (* | /) <expr>