Have you been stuck, trying to make an expression parser but you just *can’t*? Well just put this in your parser gen, and you’ll be good to go!

$$\begin{array}{rl}

E \rightarrow& E_\alpha;E_\beta \

E_\alpha \rightarrow& (;E;) \

& \gamma \

& \sigma_{pre};E \

E_\beta \rightarrow&\sigma_{in};E\

& \sigma_{post};\

& \epsilon

\end{array}

$$

And to wrap it all up:

$$

\begin{aligned}

N &\in \lbrace{E\rbrace} \

\Sigma &\in \gamma \cup \sigma \

S &\in \sigma

\end{aligned}

$$

and:

$$

\left\langle N,\Sigma, R, S \right\rangle

$$

Where:

$$\begin{array}{rl}

\gamma &= \text{Terminal literals} \\

\sigma &= \begin{cases}

\begin{array}{ll}

a_{pre} &= \text{Prefix operators} \\

a_{in} &= \text{Infix operators} \\

a_{post} &= \text{Postfix operators}

\end{array}

\end{cases} \\

\end{array}$$

_{TIL greek letters make you look smart.}