gpt4 book ai didi

regex - 在 Haskell 中将字符串解析为另一种数据类型

转载 作者:行者123 更新时间:2023-12-02 13:16:30 24 4
gpt4 key购买 nike

最近我一直在尝试在 Haskell 中创建一个正则表达式解释器。我所做的是使用所有可能的构造函数(用于序列、*^、间隔等)创建一个新的数据类型,然后定义一个匹配器函数。它很神奇,但我的问题是我必须将输入(字符串,例如 "a(b*)(c|d)ef")转换为我的数据类型 ("Seq (Sym a) (Seq (Rep Sym b) (Seq (Or Sym c Sym d) Sym ef))")。我在解决这部分问题时遇到了麻烦(我尝试创建一个新的数据类型,一个解析树,但我完全失败了)。关于如何解决这个问题有什么想法吗?

最佳答案

规范的方法是使用解析器组合器库,例如 Parsec 。解析器组合器库(如解析器生成器)允许您编写语法描述,生成从字符串到该语言的标记的解析器。

您只需将语法编码为 Parsec 函数即可。

作为示例,请参阅之前的 SO 问题:Using Parsec to parse regular expressions

关于regex - 在 Haskell 中将字符串解析为另一种数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com