Present syntax rules in a more succinct way I am resuming syntax rules for a small language:

\begin{eqnarray*}
e_C &amp;::=&amp; \epsilon \mid constant \\
\textit{prefix-op} &amp;::=&amp; - \\
\textit{infix-op} &amp;::=&amp; + \mid - \mid * \\
e_E &amp;::=&amp; e_C \mid \textit{prefix-op} \; e_E \mid e_E \; \textit{infix-op} \; e_E \mid \textit{function}_E (e_{E,0}, e_{E,1},\ldots) \mid \textit{specialE} \\
e_V &amp;::=&amp; e_C \mid \textit{prefix-op} \; e_V \mid e_V \; \textit{infix-op} \; e_V \mid \textit{function}_V (e_{V,0}, e_{V,1}, \ldots) \mid \textit{specialV}
\end{eqnarray*}

The expressions $e_E$ and $e_V$ have something common: $e_C$. Some of their operators look same: $\textit{prefix-op}$ and  $\textit{infix-op}$. Their functions $\textit{function}_E$ and $\textit{function}_V$ are 2 different sets, and $\textit{specialE}$ and $\textit{specialV}$ are totally different.

I am wondering if it is still possible to present this syntax more succinct, more compact in a conventional way... Could anyone help?
One direct way of solving this problem is to make the syntax rules parameterised, as follows:

\begin{eqnarray*}
e_{X,Y} &amp;::=&amp; e_C \mid \textit{prefix-op} \; e_{X,Y} \mid e_{X,Y} \; \textit{infix-op} \; e_{X,Y} \mid Y (e_{X,Y}, e_{X,Y},\ldots) \mid X \\
\end{eqnarray*}

And then to set
\begin{eqnarray*}
e_E &amp;::=&amp; E_{\mathit{specialE},~\mathit{function}_E} \\
e_V &amp;::=&amp; E_{\mathit{specialV},~\mathit{function}_V} \\
\end{eqnarray*}

This is using notation I just invented, and it could probably be reworked, but you get the idea, I hope.