是的,Haskell有许多库使编写解析器变得相当容易.Parsec是一个很好的开始,甚至还有其他语言的克隆,包括Python(该文章也链接到pyparsing,看起来它也可能有效).
我的答案就是一个例子(注意,它可能不是顶级的Parsec或Haskell):它表明了Haskell解析库的强大功能,恰好4行代码实现了整个解析器.
您还可以浏览旧的问题和答案,以了解各种库和技术,例如parsec,解析+ haskell和解析+ python.
为更大的项目设计攻击线的最好方法是从小开始尝试,直到你对你的工具感到满意为止:选择一个库并尝试实现一个相对简单的解析器,比如只用数字解析表达式,+
和*
,甚至只是解析号码,+
与包围...小东西(但也不能太小;每个这两个例子都非小事,第一个具有运算符优先级,第二个递归嵌套).如果您不喜欢图书馆,请尝试使用其他图书馆.