表达式解析引擎

xinhui-Calculator

介绍:

等式表达式解析,不等式表达式解析,与或非逻辑运算表达式解析;支持带参数的表达式解析; 支持带函数的表达式解析

  1. 支持 +、-、*、/、%、&&、||、!、>、<、>=、<=、==、!=、^(幂)、(、) 运算符
  2. 支持有参数的代数等式不等式计算,参数以$+变量名 方式
  3. 支持三目运算 例如:a>b?a:b
  4. 支持sin(), cos(), log(), max(), min(), datetime(), date(), time() 函数
  5. 可自行扩展其他支持

函数说明:

  1. sin() 三角函数
  2. cos() 三角函数
  3. log() 自然数底数的对数值
  4. max() 返回多个参数中最大值的一个值
  5. min() 返回多个参数中最小的一个值
  6. datetime() 返回当前时间戳的秒数
  7. date() 返回当前日期的天数
  8. time() 返回当前时间的秒数
  9. 可自行灵活扩展函数的各种形式支持

设计说明:

        采用ASCII字符串方式进行表达式的解析,栈方式处理,遵循常规的运算优先级,实现了争对字符串的加减乘除等运算规则。运算错误或者不合理,错误的无法运算的表达式统一返回结果NaN。提供静态调用方法conversion()。

使用说明示例:

        //java版本调用方式
        String result = Calculator.conversion("1+2*3");
        System.out.println("表达式:1+2*3 = " + result);

        //C语言版本调用方式
        char expression[128], result[56] = {'\0'};
        strcpy(expression, "1+2*3");
        conversion(expression, result);
        printf(" 表达式:1+2*3 = %s \n", result);

测试用例运行打印结果:

        等式表达式:
	(0*1--3)-18/-18-(3*(-3.1)) = 13.3
	320/(10^2) = 3.2
	
	不等式表达式:
	1+8<=7 ==> false
	true&&false ==> false
	!false==false ==> false
	!(!false) ==> false
	!(1+9<=8) ==> true
	1+9<=8&&2>0 ==> false
	1+9<=8||2>0 ==> true
	
	带参数的代数表达式和不等式:
	$P1+100+$P2/2 = 1650.0
	($Ib-$Ia)/$Ia>=0.1||$Ia-$Ib>=1||$Ia-$Ic>=1 ==> true
	
	三元运算表达式:
	1<2?1:(1+2) ==> 1
	$Ib>$Ia?$Ib:$Ia ==> 5
	
	支持函数的表达式:
	$max($Ib,$Ia,$Ic)-$min($Ib,$Ia,$Ic) = 3.0
	$time() ==> 1649927681925
	$log(2)==0.6931471805599453 ==> true
	$log($Ic)==0.6931471805599453 ==> true

实现了java和C语言的两个不同版本,他们的实现逻辑原理用法完全一致,完整代码转到以下地址

java版跳转

表达式解析引擎(支持等式表达式,不等式表达式,与或非逻辑运算表达式,支持带参数和带函数的表达式解析)_java逻辑表达式解析-Java文档类资源-CSDN文库

C语言版本跳转

表达式解析引擎(支持等式表达式,不等式表达式,与或非逻辑运算表达式,支持带参数和带函数的表达式解析),可以在电脑,单片及上运行_表达式解析引擎,逻辑表达式引擎-单片机文档类资源-CSDN文库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芯晖闲云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值