这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天。今天学习了如何通过Go对规则引擎进行设计与实现,课程同时涉及到了编译原理的相关知识。

1. 课程大纲

2. 规则引擎

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

组成部分 规则引擎由数据输入、规则理解和规则执行三大部分组成

应用场景 规则引擎可用于风控对抗、活动策略运营、数据分析和清洗等业务场景中

3. 编译原理

规则引擎和编译原理之间的关系

分析过程 编译原理的分析过程可分为:词法分析->语法分析->语法树生成->参数注入、类型检查->结果输出这五步。

词法分析

定义 通过有限自动机识别源代码中的字符串,将其转换成词法单元(token)。

语法分析

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

抽象语法树

上下文无关文法与递归下降分析

类型检查

通过类型综合进行检查

编译时检查 & 运行时检查

4. 设计规则引擎

预定义内容

词法分析内容

语法分析内容

表达式与语法树结构

语法树执行 通过后序遍历二叉树的方式执行代码,后序便利的顺序为左子树->右子树->根结点

类型检查 执行时检查,左右子节点运算完成后对左右子节点的值进行校验