[Haskell-beginners] Simple parser question
Martin.Drautzburg at web.de
Thu Feb 14 13:59:58 CET 2013
I just hit a sticking point when trying to parse something like
data Exp = Lit Int -- literal integer
| Plus Exp Exp
where something like "1+2" should be parsed to "Plus (Lit 1) (Lit 2)".
When I try to parse "1+2" my parser enters an infinite loop. I can understand
why: it thinks
"hmm, this expression could be a plus, but then it must start with an
expression, lets check".
and it tries to parse expression again and again considers Plus.
When I change the rules, so it first checks for "Lit", it does parse the "1"
just fine, but then gives up, because the remainder is not an expression
anymore, but just a "+2".
My parser is written in the style shown in Graham Hutton's book:
Parser a :: String -> (a, String).
I believe I am missing something obvious, but I can't see it.
More information about the Beginners