后端小白学习笔记(六):规则引擎设计与实现 | 青训营笔记

343 阅读2分钟

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

一、认识规则引擎

规则引擎的定义

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

组成部分

  1. 数据输入
  2. 规则理解
  3. 规则执行

应用场景

  1. 风控对抗
  2. 活动策略运营
  3. 数据分析与清理

二、编译原理基本概念

词法分析

将源代码转化为词法单元(token)的过程。 使用有限状态机来实现

语法分析

在词法分析的基础上识别出表达式的语法结构 表达式的语法结构可以使用树来表示,每个节点(子树)是一个语法单元,这个单元的构成规则叫做“语法”。每个节点还可以有下级节点。

抽象语法树

表达式抽象语法结构的树状表示,其中每个节点(子树)是一个语法单元,这个单元的构成规则就叫“语法”。每个节点还可以有下级节点。 对于一个表达式,抽象语法树唯一确定。

  1. 与上下文无关的语法 使用巴克斯范式(BNF)来判断句子的正确性。
  2. 递归下降算法 递归下降算法就是自顶向下构造语法树,不断对Token进行语法展开(下降),展开过程可能会遇到递归的情况

类型检查

验证执行的结果是否为合适的数据类型。通常会验证某节点的子节点数据类型是否合法

  1. 类型综合 根据子表达式的类型构造出父表达式的类型。例如,表达式A+B的类型是根据A和B的类型定义的。
  2. 编译时检查 & 运行时检查 类型检查可以发生在编一阶段,即构造语法树的阶段;也可以发生在执行阶段
  • 编译时:需要提前声明参数的类型,在构建语法树的过程中进行类型检查
  • 执行时:可以根据执行时的参数输入的值类型,在执行过程中进行类型检查

PS

本文主要作用是作为上课笔记,如有错误,欢迎大家评论指正,我会及时改正