C#用逆波兰算法实现脚本的解析和计算,支持外部变量,已经商用

逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。(摘自维基)

关于“逆波兰式算法”的具体内容,请看这里 http://baike.baidu.com/view/2582.html ,里面解释得很好。对于脚本来说,一旦转成后缀表达式,运算效率非常高,因此,在大系统、大数据量运算时,可能是一个很好的选择。

本人在https://blog.csdn.net/AK520123456/article/details/47682127/的基础上进行了算法完善和功能扩充,主要特点:

  1. 运算符和优先级与c语言一致;
  2. 支持逻辑和数值混合运算,互转规则:数值的0<->布尔的false;非0数值->布尔的true;布尔的true->数值1
  3. 数值运算会转换成双精度后再进行计算,注意精度损失的情况。
  4. 支持外部变量引用,可以与具体的业务进行关联。变量引用格式:[name],“[ ]”内不允许再有“[ ]”。
  5. 名称、函数不区分大小写。
  6. 支持19种常用函数,满足工业数据处理的需要。

算法demo的界面如下:

该算法已经在上海隐图智能科技的PLC-Recorder录波系统的离线分析软件Ana上进行了应用,用于构建和计算虚拟变量,软件相关界面如下:

DEMO的源代码和文档下载链接


2020年8月3日

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值