规则引擎
认识规则引擎
抖音商场搞活动
v1:购买产品得积分,可以用积分换商品
直接使用if-else
v2:100-200返还20,200-500返还90、、、
使用一个数组
v3:根据用户标签判断,老顾客积分有加成,新用户可以拉人。
越来越复杂了,还是单独搞一个库吧

规则引擎定义
规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来(解耦合),并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

由业务人员提交给开发人员,开发人员测试后上线,这样开发人员就不需要敲代码了,只需要维护规则引擎就行。

组成部分

- 数据输入
- 规则理解
- 规则执行
应用场景
- 风控对抗
- 分辨黑灰产(黄牛等),实时调节规则
- 活动策略运营
- 根据规则引擎及时对用户反馈做出反应
- 数据清洗与数据分析
- 自定义数据处理规则
编译原理基本概念

词法分析(Lexical Analysis)
词法分析就是将源代码字符串转换为出发单元(Token)的过程
使用类似主谓宾结构将句子分析:

切分依据:运算符
如何识别Token:有限自动机(状态有限的状态机) 有限自动机在任何状态,基于输入的字符,都能做出确定的转换

语法分析
语法分析就是在词法分析的基础上,识别表达式的语法结构的过程

抽象语法树
表达式的语法结构可以用树的形式表达,每个节点是一个语法单元,单元的 构成规则就叫语法。

上下文无关语法(Context-Free Grammar)
语言的句子无需要考虑上下文,就可以判断准确性。比如赋值语法。可以使用巴克斯范斯(BNF)表达。
类型检查
设计规则引擎
目标:设计一个规则引擎,支持特定的词法、运算符、数据类型和优先级。并且支持基于以上预定义语法的规则表达式的编译和执行。
词法:
- 参数
- 布尔值
- 字符串
- int,float常量
- 预定义运算符:+-*/
运算符
- 一元运算符
- 二元运算符
- 逻辑操作符
- 括号
优先级:

词法分析状态机:
