需要一种方法来解析C中的代数表达式

我需要为我正在研究的应用程序解析代数表达式,并且希望在对它进行破解之前装饰一些集体智慧,并且可能会走错路.

我需要做的是非常直接:给定一个文本代数表达式(3 * x – 4(y – sin(pi)))创建一个方程的对象表示.自定义对象已经存在,所以我需要一个解析器来创建一个我可以走的树来实例化我需要的对象.

基本要求是:

>能够将代数表达为语法,因此我可以控制并可以根据需要自定义/扩展它.
>初始语法将包括整数,实数,常数,变量,算术运算符(,–,*,/),幂(^),方程(=),括号,优先级和简单函数(sin(pi)).我希望能够相当快地扩展我的应用程序以支持正常的功能(f(x)= 3x 2).
>必须在C中编译,因为它需要集成到我的代码中.

我不需要以数学方式评估表达式,因此解决变量或执行算术的软件是噪声.

我已经完成了我的Google作业,看起来最好的方法是使用BNF语法和软件在C中生成编译器.所以我的问题:

>对于代数表达式(或者更好的是,LaTex),是否已经存在具有相应解析器生成器的BNF语法?有人必须已经这样做了.我真的想避免自己滚动,主要是因为我不想测试它.我愿意为图书馆支付合理的金额(50美元以下)
>如果没有,你认为C的哪个解析器生成器最容易学习/使用?莱克斯? YACC? Flex,Bison,Python / SymPy,其他?我对这些都不熟悉.

解决方法

我有很好的运行 ANTLR.它有许多不同语言的运行时,包括C,并且有一个非常好的语法来指定语法和构建树.我最近在131行写了一个类似的语法(代数表达式),这绝对是可以管理的.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...