
Bartosz Wójcik wrote:
Hi Everybody (especially Parsec Creator),
is there any reason why float parses only positive numbers?
I find following defition:
float = lexeme floating > "float"
floating = do{ n <- decimal ; fractExponent n }
If floating was defined like
floating = do{ n <- integer ...
or
floating = do{ n <- int ...
instead then it would parse negative ones as well.
Hi Bartek, I had the same problem. Daan Leijen gave me a similar answer than Malcom Wallace just gave you: "Usually the minus sign is treated as an operator in the language and treated as a separate token" He also gave me a workaround which finally resulted in this: myfloat = try (do{ symbol "-"; n <- float; return (negate n) }) <|> try float <|> do { i<-integer; return(fromIntegral i) } -- 0 is not recognized as a float, so recognize it as an integer and then convert it to float