[Haskell-cafe] Overlaping Parsec rules
Christian Maeder
Christian.Maeder at dfki.de
Wed Mar 9 15:03:45 CET 2011
Am 09.03.2011 14:44, schrieb Christian Maeder:
> Am 08.03.2011 13:50, schrieb Christian Maeder:
>> Am 08.03.2011 13:35, schrieb Hauschild, Klaus (EXT):
>>> Hi Christian,
>>>
>>> Thank you for your help. Now the current version of Parse.hs (http://code.google.com/p/hgmltracer/source/browse/trunk/hGmlTracer/src/Gml/Parse.hs) works well for the test file fact.gml.
>>
>> spaces
>> char end
>>
>> The idea is to call spaces _after_ every token.
>
> In other words "spaces" before "char end" is not needed.
But in your top-level parser you may want to skip leading spaces and
check for a final "eof" to ensure that everything was consumed.
spaces >> liftM2 const parseList eof
(Instead of "liftM2 const" the symbol "<*" from "Control.Applicative"
may be used: spaces *> parseList <* eof)
I defined:
infixl 1 <<
(<<) :: Monad m => m a -> m b -> m a
(<<) = liftM2 const
and would use:
spaces >> parseList << eof
C.
More information about the Haskell-Cafe
mailing list