<div>Hi,</div>
<div> Could some one point out what I'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 -> </div>
<div> </div>
<div>(+++) :: Parser a -> Parser a -> Parser a</div>
<div>expr :: term( '+' expr |"")</div>
<div>term -> factor('*' term |"")</div>
<div><br>expr :: Parser Int<br>expr = do t <- term<br> do char '+'<br> e <- expr<br> return (t + e)<br> +++ return t<br> <br>term :: Parser Int<br>term = do f <- factor<br> do char '*'<br>
t <- term<br> return (f * t)<br> +++ return f<br> <br>factor :: Parser Int<br>factor = do d <- digit<br> return (digitToInt d)<br> +++ do char '('<br> e <- expr<br> char ')'<br>
return e<br> <br>eval :: String -> Int<br>eval xs = fst(head(parse expr xs))</div>
<div> </div>
<div> </div>
<div>John</div>