只是为了好玩,我正在尝试创建一个可以简化、分解和扩展代数方程的应用程序。如果我可以将方程式转换成一个很好的可行格式,那么对规则进行编程似乎会很简单。解析方程被证明是一件麻烦事,目前正在使用 Python,但我并不反对必须学习新东西。
是否有任何库(适用于任何语言)可以使这个项目变得非常简单,或者这是一个白日梦?
[用 Haskell 标记这个,因为我觉得这就是“简单”的地方]
是的,Haskell 有许多库可以使编写解析器相当容易。Parsec是一个好的开始,它甚至有其他语言的克隆,包括Python(该文章还链接到pyparsing,看起来它也可以工作)。
我的这个答案是一个例子(注意,它可能不是一流的 Parsec 或 Haskell):它表明了 Haskell 解析库的强大功能,恰好 4 行代码实现了整个解析器。
您还可以浏览旧问题和答案以了解各种库和技术,例如parsec、parsing+haskell和parsing+python。
为大型项目制定攻击路线的最佳方法是从小处着手,然后尝试一些东西,直到您对自己的工具感到满意:选择一个库并尝试实现一个相对简单的解析器,例如解析只有数字的表达式, +
and *
, 甚至只是解析数字和+
括号......一些小东西(但不是太小;这两个例子都有重要意义,第一个具有运算符优先级,第二个具有递归嵌套)。如果您不太喜欢该库,请尝试使用其他库。
Python 或 matlab 将是我的建议。您是否打算将整个方程式存储在一个字符串中,然后将其拆分,以进行分解和简化?
提供更多信息,这是一个很酷的项目。
这是一个老问题,但我想向您推荐 MathParseKit。
这是一个 C++ 库,它给定一个类似“2*3/4”的字符串,为您提供定义表达式的函数/变量/常量树。
您可以解决它,但您甚至可以更改它并以字符串格式重新放置它。
您可以在以下位置找到它: