这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
什么是规则引擎
规则引擎是嵌入在应用程序的组件, 将业务决策从代码中分离,使用预定义的语义编写业务决策,接受数据输入,解释业务规则
可以减少开发人员重复编码的问题,业务决策和程序解耦
规则引擎由数据输入,规则理解,规则执行三个部分组成.
数据输入,比如 price>500, 规则理解 就是优先级,运算符, 规则执行,就是确保执行结果正确.
我的世界中MyPet插件就内置一款js的规则引擎
常见的应用常见有 风控对抗,活动策划运营,数据分析和清洗
编译原理基本概念
编译原理有三种, 理解,把字符串转化为单元(Token), 执行, 对抽象表达的语法树进行执行, 输入输出,验证执行的数据类型.
那么怎么识别token呢? 采用的是有限状态机,有限状态机是有限个的状态机,基于输入的字符,进行一个确定的状态转换
表达式的语法结构可以用树来表示,每个节点都可以有下级节点
上下文无关语法,即句子无需考虑上下文,就可以判断正确性,可以使用BNF来表达
类型检查,根据子表达式构造推出父表达式的类型
语法树的执行, 预先定义好每种操作符的执行逻辑, 对抽象语法树进行后续遍历, 即先执行左子树,再执行右子树,根据根节点操作得到所有节点的值
类型检查,是在执行时检查,每一个节点的左右节点执行完成后,校对组偶有节点的类型是否符合操作类型检查的预设规则.
-
要求两边的值都是int或者float
- !要求左边是空,右边是bool