求 表达式计算 的C/C++开源免费库,由字符串计算表达式值

MulinB 2007-08-13 05:39:16
目前需要做布尔表达式解析,有没有开源免费的库,可以由字符串计算出表达式的值,推荐一个~~谢!

最好支持以下特性:
1.布尔表达式计算.
2.最好支持简单的运算符优先级.
3.为方便扩展使用,最好支持简单的算术表达式运算.


PS:自己写了一个简单的布尔表达式解析器,唉。。。老板说扩展性不好。。。,2天白干了。。。
...全文
1242 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
freex64 2008-05-13
  • 打赏
  • 举报
回复
hl编程接口:
----------------------------------------------------------------------

文件“HLEngine.dll”是hl编程接口,使用它很容易实现一个你自己的“表达式计算器”或“HL脚本解释器”。并且这个编程序接口泛支持x86处理上的win95/98/nt4/xp等操作系统。如有其它特殊需求可与作者邮件联系。
  具体使用请参考sample目录下的示范代码(vc6下编译通过)




hcalc计算器 V2.4.2
(hcalc64.exe是X64版本,hcalc.com是DOS版本)
--------------------------------------------------------------------------------

完美的中、英文表达式计算器。绿色软件解压即可使用无需安装!可执行文件大小仅有几十KB.
回车它将把最后一行做为输入的表达式进行计算并把结果在下一行输出!
例如:
输入“3.14”它输出“3.14”
输入“y=sin(3.1415926)”它输出“0” 并且以后可以直接使用“y”
输入“"when "+ "i" + "was " +10 +"."”它输出“when i was 10.”
输入字符'汉';它输出 0xbaba,恰是“汉”字的机器内码!

变化无穷,还支持十六进制 (0xFE)

增强中文支持,可以用记事本在SCRIPT.HL中增加这样的函数:

int average(int a, int b)

if(a<0) a = - a ;
if(b<0) b = 0 - b ;
return(a+b)÷2;

支持中文变量名,支持自己编写函数,用法与内部函数一样!

现有内部函数:
double sin (double x);
double cos (double x);
double cosh (double x);
double exp (double x);
double log (double x);
double log10 (double x);
double sinh (double x);
double sqrt (double x);
double acos (double x);
double asin (double x);
double atan (double x);
double tan (double x);
double tanh (double x);
double pow (double x, double y);
double atan2 (double x, double y);
double fmod (double x, double y);
expter 2007-08-27
  • 打赏
  • 举报
回复
C++ eval

--
flex+bison 没用过
fjpqzm 2007-08-27
  • 打赏
  • 举报
回复
自己用lex词法分析器生成工具和yacc语法分析器生成工具,如果你会用这两个工具应该是很快就可以搞定的,小弟最近正在看这方面的知识,有点感触!
MulinB 2007-08-14
  • 打赏
  • 举报
回复
嗯,谢楼上的...

google: C++ expression eval

找到不少类似的工程,codeproject 和 sourceforge 真是好东西……

不过不知道哪个好用。。。

iambic 2007-08-14
  • 打赏
  • 举报
回复
很多东西都是可移植的。
MulinB 2007-08-14
  • 打赏
  • 举报
回复
没有人有这方面经验吗?
MulinB 2007-08-14
  • 打赏
  • 举报
回复
bc不是linux下的计算器吗?

正在codeguru找...
iambic 2007-08-14
  • 打赏
  • 举报
回复
google: C++ eval

得到一个网页,你可以参考下:
CppEval - 一个 C++ 的表达式分析库
http://www.cpper.com/site/comments/cppeval_expression_parse_library/
iambic 2007-08-14
  • 打赏
  • 举报
回复
bc环境怎么就不能用bc,我就经常用。
MulinB 2007-08-14
  • 打赏
  • 举报
回复
调用bc是不可能了。。。windows环境。。。
嵌入脚本语言?如何做?
不过还是觉得用C/C++比较好。。。应该有类似的库吧。。。
iambic 2007-08-14
  • 打赏
  • 举报
回复
直接调用bc算了。或者嵌一个脚本语言。boost.spirit我也只用来写过计算器……
MulinB 2007-08-14
  • 打赏
  • 举报
回复
up...
waiting for another answer...
mLee79 2007-08-14
  • 打赏
  • 举报
回复
flex+bison 吧, 用不了半天 ...
gfxiang 2007-08-14
  • 打赏
  • 举报
回复
曾经用boost::spirit写过VRML解释程序,不过感觉还是不如lex+yacc好
iu_81 2007-08-13
  • 打赏
  • 举报
回复
应该是没有
自己写一个
MulinB 2007-08-13
  • 打赏
  • 举报
回复
顺便提一句:有用过boost/spirit库的吗?介绍一下经验。

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧