规则引擎|青训营笔记

57 阅读2分钟

这是我参加「第五届青训营」笔记创作活动的第四天

一、所谓规则引擎

规则引擎:一种嵌入到应用程序的组件,能够根据数据输入,解析业务规则,并通过业务规则做出业务决策

规则引擎将业务决策抽离出来,不仅解决了开发人员重复编码的问题,而且提高了服务的可维护性

规则引擎由三部分组成:

1、数据输入 --词法分析、语法分析
2、规则理解 --转化为抽象语法树
3、规则执行 --参数注入、类型检查

可见,规则引擎设计中有类似于编译原理的部分

规则引擎的应用场景:

1、风险对抗
2、活动策略经营
3、数据分析和清洗

二、编译原理基本概念

1、词法分析

词法分析实际上是将源代码字符串转化为词法单元(token)的过程

而为了识别token,我们需要设计出对应的有限自动机

有限自动机是一个状态机,它在任何一个状态,基于输入的字符,都能转换到一个确定的状态

image.png

2、语法分析

在词法分析的基础上,语法分析需要识别出语法的结构并构建抽象语法树

抽象语法树:表达式的语法结构用树结构来表示,树的每一个节点都是一个语法单元

上下文无关语法:语句无需考虑上下文,就可以判断正确性

递归下降算法:自顶向下,不断对token进行语法展开,构建语法树

3、类型检查

类型综合:根据子表达式的类型构造父表达式的类型

编译时检查:发生在表达式编译阶段的检查,需要提前声明参数的类型,在构建语法树的过程中进行检查

运行时检查:程序执行时进行发生的检查,根据执行时参数输入值的类型在执行过程中检查