[Haskell-cafe] Re: Parsec Question

Christian Maeder maeder at tzi.de
Mon Jan 9 10:36:03 EST 2006


Hi Gerd,

despite SourcePos being abstract, it can be fully manipulated using newPos.

import Text.ParserCombinators.Parsec.Pos

If you can compute the positions from your Tok-stream then you may 
consider using "tokenPrim" and work with "GenParser Tok () a"

HTH Christian

Gerd M wrote:
> I'm trying to use parsec for parsing a custom input stream. As far as I 
> understood the manual correctly I need to define the primitive parser:
> 
> type MyParser a   = GenParser (SourcePos,Tok) () a
> mytoken :: (Tok -> Maybe a) -> MyParser a
> mytoken test
>  = token showToken posToken testToken
>  where
>    showToken (pos,tok)   = show tok
>    posToken  (pos,tok)   = pos
>    testToken (pos,tok)   = test tok
> 
> The problem is, since SourcePos is an abstract datatype, how can I 
> actually run this parser without explicitly using values of type 
> SourcePos in the input stream?


More information about the Haskell-Cafe mailing list