Go规则引擎的设计与实现 | 青训营笔记

165 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天。今天学习了如何通过Go对规则引擎进行设计与实现。

1.规则引擎

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

image.png

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

image.png

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

image.png

2.编译原理的基本概念

词法分析 词法分析就是把源代码字符串转换为词法单元(Token)这个过程。

image.png

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

image.png

3.设计规则引擎

预定义内容

定义词法格式(合法Token),数据类型,运算符,以及运算符的优先级等等。 image.png 词法分析

设计词法分析的状态机 image.png 语法分析

设计语法树结构 image.png 语法树执行和类型检查

预先定义好每种操作符的执行逻辑。

执行时进行类型检查 image.png