我需要为我正在开发的应用程序解析代数表达式,并希望在尝试破解它之前能够积累一些集体智慧,并且可能会走错路。
我需要做的很简单:给定文本代数表达式 (3*x - 4(y - sin(pi))) 创建方程的对象表示。自定义对象已经存在,所以我需要一个解析器来创建一棵树,我可以通过它来实例化我需要的对象。
基本要求是:
能够将代数表达为语法,因此我可以控制并根据需要对其进行自定义/扩展。
初始语法将包括整数、实数、常量、变量、算术运算符(+、-、*、/)、幂(^)、方程(=)、括号、优先级和简单函数(sin(pi))。我希望相当快地扩展我的应用程序以支持正确的功能(f(x)= 3x +2)。
必须在 C 中编译,因为它需要集成到我的代码中。
我不需要以数学方式评估表达式,因此求解变量或执行算术的软件是噪声。
我已经完成了我的谷歌作业,看起来最好的方法是使用 BNF 语法和软件在 C 中生成编译器。所以我的问题是:
是否已经存在具有用于代数表达式(或者更好的是 LaTex)的相应解析器生成器的 BNF 语法?必须有人已经这样做了。我真的很想避免自己动手,主要是因为我不想测试它。我愿意为图书馆支付合理的费用(低于 50 美元)
如果不是,您认为哪个 C 解析器生成器在这里最容易学习/使用?莱克斯?雅克?Flex、Bison、Python/SymPy、其他?我对这些都不熟悉。