0

只是为了好玩,我正在尝试创建一个可以简化、分解和扩展代数方程的应用程序。如果我可以将方程式转换成一个很好的可行格式,那么对规则进行编程似乎会很简单。解析方程被证明是一件麻烦事,目前正在使用 Python,但我并不反对必须学习新东西。

是否有任何库(适用于任何语言)可以使这个项目变得非常简单,或者这是一个白日梦?

[用 Haskell 标记这个,因为我觉得这就是“简单”的地方]

4

4 回答 4

6

是的,Haskell 有许多库可以使编写解析器相当容易。Parsec是一个好的开始,它甚至有其他语言的克隆,包括Python(该文章还链接到pyparsing,看起来它也可以工作)。

我的这个答案是一个例子(注意,它可能不是一流的 Parsec 或 Haskell):它表明了 Haskell 解析库的强大功能,恰好 4 行代码实现了整个解析器。

您还可以浏览旧问题和答案以了解各种库和技术,例如parsing+haskellparsing+python

为大型项目制定攻击路线的最佳方法是从小处着手,然后尝试一些东西,直到您对自己的工具感到满意:选择一个库并尝试实现一个相对简单的解析器,例如解析只有数字的表达式, +and *, 甚至只是解析数字和+括号......一些小东西(但不是太小;这两个例子都有重要意义,第一个具有运算符优先级,第二个具有递归嵌套)。如果您不太喜欢该库,请尝试使用其他库。

于 2012-05-05T11:04:45.183 回答
4

几乎所有语言都已完成。

Python 有一个可以解析代数方程和符号数学的库:

http://code.google.com/p/sympy/

我建议重用,除非您的目的是学习如何编写这样的东西。

于 2012-05-05T13:10:36.117 回答
0

Python 或 matlab 将是我的建议。您是否打算将整个方程式存储在一个字符串中,然后将其拆分,以进行分解和简化?

提供更多信息,这是一个很酷的项目。

于 2012-05-05T11:04:53.790 回答
0

这是一个老问题,但我想向您推荐 MathParseKit。

这是一个 C++ 库,它给定一个类似“2*3/4”的字符串,为您提供定义表达式的函数/变量/常量树。

您可以解决它,但您甚至可以更改它并以字符串格式重新放置它。

您可以在以下位置找到它:

https://github.com/B3rn475/MathParseKit

于 2014-05-10T13:28:51.893 回答