[Haskell-cafe] Re: Parsec question (new user): unexpected end of
input
Christian Maeder
Christian.Maeder at dfki.de
Wed Sep 29 05:55:18 EDT 2010
Am 29.09.2010 09:54, schrieb Christian Maeder:
> Am 29.09.2010 05:35, schrieb Peter Schmitz:
> [...]
>> Error parsing file: "...\sampleTaggedContent.txt" (line 4, column 1):
>> unexpected end of input
>> expecting "<"
>>
>> The input was:
> [...]
>>
>>> -- Parsers:
>>> taggedContent = do
>>> optionalWhiteSpace
>>> aTag
>>> many tagOrContent
>>> aTag
>
> "many tagOrContent" will consume all tags, so that no tag for the
> following "aTag" will be left.
if you want to match a final tag, you could try:
manyTill tagOrContent (try (aTag >> eof))
>
> Cheers Christian
>
>>> eof
>>> return "Parse complete."
>>>
>>> tagOrContent = aTag <|> someContent <?> "tagOrContent"
>>>
>>> aTag = do
>>> tagBegin
>>> xs <- many (noneOf [tagEndChar])
this also looks like "manyTill anyChar tagEnd"
C.
>>> tagEnd
>>> optionalWhiteSpace
>>> return ()
>>>
>>> someContent = do
>>> manyTill anyChar tagBegin
>>> return ()
>>>
>>> optionalWhiteSpace = spaces -- i.e., any of " \v\f\t\r\n"
>>> tagBegin = char tagBeginChar
>>> tagEnd = char tagEndChar
>>>
>>> -- Etc:
>>> tagBeginChar = '<'
>>> tagEndChar = '>'
>>
>> --------
More information about the Haskell-Cafe
mailing list