[Haskell-beginners] parsec problem

Tobias tobnels at freenet.de
Sat Oct 13 00:38:12 CEST 2012


Ok, I managed it by using a modified sepBy / sepBy1:
/" ... x//s////<-////many////(//sep////>>////p//) ... "/ changed to /" 
... x//s////<-////many////(//try (sep////>>////p//)) ..."/

Regards,
Tobias/

/On 10/12/2012 07:20 PM, Tobias wrote:
> Hello,
>
> I would like to parse the input "word1 word2 word3 ." into 
> ["word1","word2","word3"] using Parsec.
>
> My code below fails with:
> /> unexpected "."//
> //> expecting letter or digit
>
> /I guess the problem is that the blank before the dot is considered as 
> belonging to the "sepBy word blank" parsing and therefore a next word 
> is expected, and it is missing.
> I would like the "sepBy word blank" parsing to stop after "word3".
> How can I do this?
> /
> //sentence :: Parser [String]//
> //sentence =  do words <- word `sepBy` blank//
> //                         blank//
> //                         oneOf ".?!"//
> //                         return words//
> //
> //word :: Parser String//
> //word = many1 (letter <|> digit) //
> //
> //blank :: Parser String//
> //blank = string " "
>
> /Regards,
> Tobias
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20121013/c0f54c90/attachment.htm>


More information about the Beginners mailing list