
Hi - After a bit of monkeying around, it seems the following parser works to detect both integers and floats, both positive and negative. I'm sure you wizards have many better ways of doing this. Anyway here it is for your amusement: import Parsec import qualified ParsecToken as P import ParsecLanguage (emptyDef) lexer = P.makeTokenParser emptyDef integer = P.integer lexer float = P.float lexer genericgrab :: Parser (Either Integer Double) genericgrab = try ( do { n <- char '-' ; f <- float ; return (Right (-f)) } ) <|> try ( do { f <- float ; return (Right f) } ) <|> try ( do { f <- integer ; return (Left f) } ) -andrew
-----Original Message----- From: Harris, Andrew [mailto:Andrew.Harris@jhuapl.edu] Sent: Thursday, August 15, 2002 6:55 PM To: 'haskell-cafe@haskell.org' Subject: question about parsing integers and floats with Parsec
Hi -
This isn't a pure "Haskell" question, but I'm trying to use the Parsec library to parse out space separated numbers, which could be integers or floats and either positive or negative. I was using the "naturalOrFloat" lexeme parser from the ParsecToken module, until I realized that it doesn't seem to handle negative integers. I've been poking with trying to pair the integer and float lexeme parsers with try() blocks, but I ain't no parsing expert and am not making good progress.
Any help/hints would be appreciated!
thanks, -andrew
--- Andrew Harris andrew.harris@jhuapl.edu _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe