栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

表达式解析引擎

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

表达式解析引擎

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] = {''};
        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文库

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号