[Haskell-cafe] Re: uu-parsinglib pKeyword
Ozgur Akgun
ozgurakgun at gmail.com
Wed Oct 28 13:53:22 EDT 2009
And of course thanks for all the other replies and versions.
This mailing list is *really* active!
2009/10/28 Ozgur Akgun <ozgurakgun at gmail.com>
> Even though it was nice to see how it can be implemented, I'll be using the
> "PS" version :)
> I was really close in implementing it myself.
>
> Anyway thanks for the quick reply.
>
> 2009/10/28 S. Doaitse Swierstra <doaitse at cs.uu.nl>
>
> pToken [] = pSucceed []
>> pToken (x:xs) = (:) <$> pSym x <*> pToken xs
>>
>> pKeyword_Float = pToken "Float"
>> etc
>>
>> Doaitse
>>
>> PS: this function has been defined in the module
>> Text.ParserCombinators.UU.Derived
>>
>>
>>
>>
>> On 28 okt 2009, at 17:39, Ozgur wrote:
>>
>> Hi everybody,
>>>
>>> I am using the uu-parsinglib to parse a structured language and map
>>> the results to some proper data structures. Thanks to Prof Doaitse
>>> Swierstra (and other authors if any), it is fun to write a parser
>>> using this library.
>>>
>>> I've been sending private mails to Doaitse about my questions, who
>>> kindly gives nice replies everytime. But this time I thought I can ask
>>> my question to the community, and give everyone the chance to benefit
>>> from the answers.
>>>
>>> [After the intro, here comes my real question]
>>>
>>> I am trying to capture the following pattern.
>>>
>>> pKeyword_Int = ( \ _ _ _ -> "int" ) <$> pSym 'i' <*> pSym 'n' <*> pSym
>>> 't'
>>> pKeyword_Float = ( \ _ _ _ _ _ -> "float" ) <$> pSym 'f' <*> pSym 'l'
>>> <*> pSym 'o' <*> pSym 'a' <*> pSym 't'
>>>
>>> As you can see there is an obvious pattern if you try to capture a
>>> "keyword". If there were a function called pKeyword taking a string as
>>> an argument and producing the necessary parser, things would be
>>> easier.
>>>
>>> What I mean is,
>>>
>>> pKeyword_Int = pKeyword "int"
>>> pKeyword_Float = pKeyword "float"
>>>
>>> I tried to create this pKeyword function myself but I couldn't manage
>>> to do it.
>>>
>>> I can feel that, one can simply add a "<* pReturn []" to the ends of
>>> every parser and write a recursion with this base condition.
>>>
>>> Any suggestions?
>>>
>>> PS: Actually I'm a little bit uncomfortable since there may be such a
>>> function in the library already :)
>>>
>>
>>
>
>
> --
> Ozgur Akgun
>
--
Ozgur Akgun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091028/711166ea/attachment.html
More information about the Haskell-Cafe
mailing list