de>definition ::= name &lt;- value optional_semicolon

name ::= char*     | &#39;&#39;&#39; char* &#39;&#39;&#39;     | &#39;&quot;&#39; char* &#39;&quot;&#39;

value ::= value&lt;int&gt; | value&lt;double&gt;

value&lt;T&gt; ::= T       | seq&lt;T&gt;       | zero_array&lt;T&gt;       |
&#39;structure&#39; &#39;(&#39; seq&lt;T&gt; &#39;,&#39; &quot;.Dim&quot; &#39;=&#39; seq&lt;int&gt; &#39;)&#39;       | &#39;structure&#39;
&#39;(&#39; zero_array&lt;T&gt; &#39;,&#39; &quot;.Dim&quot; &#39;=&#39; seq&lt;in