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

前端之家收集整理的这篇文章主要介绍了需要一种方法来解析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&C++相关文章