<div>Hi,</div>
<div>   Could some one point out what I&#39;m doing wrong below. This is a parser which takes an arithmetic expression built up from single digits. Turns 3*4+2 into (3*4)+2 etc.It giving me the last expression in a do statement or parse error on -&gt; </div>

<div> </div>
<div>(+++) :: Parser a -&gt; Parser a -&gt; Parser a</div>
<div>expr :: term( &#39;+&#39; expr |&quot;&quot;)</div>
<div>term -&gt; factor(&#39;*&#39; term |&quot;&quot;)</div>
<div><br>expr :: Parser Int<br>expr  = do t &lt;- term<br>   do char &#39;+&#39;<br>      e &lt;- expr<br>      return (t + e)<br>    +++ return t<br>    <br>term :: Parser Int<br>term = do f &lt;- factor<br>      do char &#39;*&#39;<br>
         t &lt;- term<br>      return (f * t)<br>   +++ return f<br>   <br>factor :: Parser Int<br>factor = do d &lt;- digit<br>             return (digitToInt d)<br>  +++ do char &#39;(&#39;<br>         e &lt;- expr<br>      char &#39;)&#39;<br>
      return e<br>      <br>eval :: String -&gt; Int<br>eval xs = fst(head(parse expr xs))</div>
<div> </div>
<div> </div>
<div>John</div>