
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,
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,
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