Ed Howland<p>With <a href="https://fosstodon.org/tags/EBNF" class="mention hashtag" rel="tag">#<span>EBNF</span></a> , we have no need of Epsilon here. The <a href="https://fosstodon.org/tags/nonterminal" class="mention hashtag" rel="tag">#<span>nonterminal</span></a> followed by the <br />'*' operator simply means 0 or more of the preceding thing, here: The ElIfClause.<br />And for completeness: (else Statements)? means 0 or 1 of the preceding group making them optional.<br />Many times when trying to model your language syntax in <a href="https://fosstodon.org/tags/BNF" class="mention hashtag" rel="tag">#<span>BNF</span></a>, you are forced<br />to break out a new NonTerminal, and to supply a alternate Epsilon.<br />Often, you can avoid this with grouping and '*', '+' or '?'.<br />Where is E used in <a href="https://fosstodon.org/tags/EBNF" class="mention hashtag" rel="tag">#<span>EBNF</span></a></p>