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

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

概述我需要为我正在研究的应用程序解析代数表达式,并且希望在对它进行破解之前装饰一些集体智慧,并且可能会走错路. 我需要做的是非常直接:给定一个文本代数表达式(3 * x – 4(y – sin(pi)))创建一个方程的对象表示.自定义对象已经存在,所以我需要一个解析器来创建一个我可以走的树来实例化我需要的对象. 基本要求是: >能够将代数表达为语法,因此我可以控制并可以根据需要自定义/扩展它. >初始 我需要为我正在研究的应用程序解析代数表达式,并且希望在对它进行破解之前装饰一些集体智慧,并且可能会走错路.

我需要做的是非常直接:给定一个文本代数表达式(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中的代数表达式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1241432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存