
Maybe this is something you do not even want to use a parser combinator library for. The package
http://hackage.haskell.org/packages/archive/list-grouping/0.1.1/doc/html/Dat...
contains a function breakBefore, so you can write
main = do inp <- readFile ...
let result = map mkSection . breakBefore ((= ':').last)). lines $ inp
mkSection (l:ll) = Section (Top l) (Contents ll)
Doaitse
On Mar 3, 2013, at 16:44 , Immanuel Normann
Hi,
I am trying to parse a semi structured text with parsec that basically should identify sections. Each section starts with a headline and has an unstructured content - that's all. For instance, consider the following example text (inside the dashed lines):
---------------------------
top 1:
some text ... bla
top 2:
more text ... bla bla
---------------------------
This should be parsed into a structure like this:
[Section (Top 1) (Content "some text ... bla"), Section (Top 1) (Content "more text ... bla")]
Say, I have a parser "headline", but the content after a headline could be anything that is different from what "headline" parses. How could the "section" parser making use of "headline" look like? My idea would be to use the "manyTill" combinator, but I don"t find an easy solution.
Many thanks for any hint
Immanuel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe