Ah, thanks. The next step would then be to replace empty strings with Nothing, and the others with Just Value I forgot to mention that the values are Double. I tried the following: numberP :: Parser Double -- From RWH numberP = do s <- getInput case readSigned readFloat s of [(n, s')] -> n <$ setInput s' _ -> empty <?> "number" valueP :: Parser [Double] valueP = do (many numberP) `sepBy` (char '\t') <?> "value list" It type checks, but raises an exception: Main> parseTest valueP "1\t\t3.3" *** Exception: Text.ParserCombinators.Parsec.Prim.many: combinator 'many' is applied to a parser that accepts an empty string. Is there another way to parse Double values? Thanks a lot so far. -----Original Message----- From: toad3k@gmail.com [mailto:toad3k@gmail.com] On Behalf Of David McBride Sent: Monday, August 08, 2011 3:53 PM To: Lukasser Stefan (IFAT IMM PSD D TEC / EE) Cc: aslatter@gmail.com; beginners@haskell.org Subject: Re: [Haskell-beginners] Parse string with optional entries [Parsec] Read up on the sepBy combinator. parse (sepBy (many digit) (char ',')) "" "123,321,,2321" Right ["123","321","","2321"] On Mon, Aug 8, 2011 at 7:53 AM, <Stefan.Lukasser-EE@infineon.com> wrote:
Hi,
I have something similar to the CSV-Parser in RWH, chapter 16. The problem are the possible empty cells, i.e. consecutive '\t'-Characters.
-----Original Message----- From: Antoine Latter [mailto:aslatter@gmail.com] Sent: Monday, August 08, 2011 1:44 PM To: Lukasser Stefan (IFAT IMM PSD D TEC / EE) Cc: beginners@haskell.org Subject: Re: [Haskell-beginners] Parse string with optional entries [Parsec]
On Mon, Aug 8, 2011 at 6:39 AM, <Stefan.Lukasser-EE@infineon.com> wrote:
Hi all,
I'm trying to parse a string in one of the following forms using Parsec:
"1\t1\t123\t456" -> desired output: [Just 1, Just 1, Just 123, Just 456]
or
"1\t\1\t\t456" -> desired output: [Just 1, Just 1, Nothing, Just 456]
i.e., the input is a list of numbers, separated by '\t' characters, with the possibility of missing entries. I'm having troubles with the backtracking in case of missing numbers. Can anybody give me a hint?
What do you have so far?
Thanks in advance, Stefan
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners