首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在uu-parsinglib Haskell解析器组合器中维护状态

如何在uu-parsinglib Haskell解析器组合器中维护状态
EN

Stack Overflow用户
提问于 2013-08-13 20:48:27
回答 1查看 185关注 0票数 1

我希望能够在编写get解析器组合器时使用State Monad中的State Monadput函数。

这是如何做到的呢?我可以使用这个库来创建状态解析器吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-13 23:23:48

Sjoerd的注释是正确的;uu中的基本解析描述符类型是P st a,st是维护输入/解析状态的类型,a是输出类型。这是在Text.ParserCombinators.UU.Core中定义的。

UU.Core中的一些基本组合器对st可以是什么设置了一些约束,即它必须具有EofStoresErrorsHasPosition类的实例,这些类也是在UU.Core中定义的。其他实例可能是完整功能所必需的。

Text.ParserCombinators.UU.BasicInstances包为所有这些提供了适当的实例,这些实例允许在包含Char并提供错误和位置状态的ListLike类流上创建解析器。

如果您想要在Char的ListLike容器上使用位置和错误状态进行解析,例如,基于某种令牌类型进行解析,或者存储任意用户提供的状态,则必须创建一个类似于Text.ParserCombinators.UU.BasicInstances的模块,在该模块中提供符合您的需要的实例以及解析库的需要。

对于您的请求,我认为您需要用实现Str a s loc接口所需的字段来扩展st数据类型(用于P st a中的st类型),然后为MonadState (P <your new type> a)提供一个使用增强的Str类型提供getset的实例(除了已经在UU.BasicInstances中的实例)。UU.Core已经为P st a提供了Monad实例,所以如果将MonadState实例约束为特定的状态类型,那么这应该不会太困难。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18218948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档