规则引擎 | 青训营笔记

65 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

什么是规则引擎

规则引擎是嵌入在应用程序的组件, 将业务决策从代码中分离,使用预定义的语义编写业务决策,接受数据输入,解释业务规则

可以减少开发人员重复编码的问题,业务决策和程序解耦

规则引擎由数据输入,规则理解,规则执行三个部分组成.

数据输入,比如 price>500, 规则理解 就是优先级,运算符, 规则执行,就是确保执行结果正确.

我的世界中MyPet插件就内置一款js的规则引擎

常见的应用常见有 风控对抗,活动策划运营,数据分析和清洗

编译原理基本概念

编译原理有三种, 理解,把字符串转化为单元(Token), 执行, 对抽象表达的语法树进行执行, 输入输出,验证执行的数据类型.

那么怎么识别token呢? 采用的是有限状态机,有限状态机是有限个的状态机,基于输入的字符,进行一个确定的状态转换

表达式的语法结构可以用树来表示,每个节点都可以有下级节点
上下文无关语法,即句子无需考虑上下文,就可以判断正确性,可以使用BNF来表达

类型检查,根据子表达式构造推出父表达式的类型

语法树的执行, 预先定义好每种操作符的执行逻辑, 对抽象语法树进行后续遍历, 即先执行左子树,再执行右子树,根据根节点操作得到所有节点的值

类型检查,是在执行时检查,每一个节点的左右节点执行完成后,校对组偶有节点的类型是否符合操作类型检查的预设规则.

  • 要求两边的值都是int或者float

  • !要求左边是空,右边是bool