这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天。今天学习了如何通过Go对规则引擎进行设计与实现,课程同时涉及到了编译原理的相关知识。
1. 课程大纲 2. 规则引擎规则引擎的定义: 规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入、解释业务规则、并根据业务规则做出业务决策。
组成部分 规则引擎由数据输入、规则理解和规则执行三大部分组成
应用场景 规则引擎可用于风控对抗、活动策略运营、数据分析和清洗等业务场景中
3. 编译原理规则引擎和编译原理之间的关系
分析过程 编译原理的分析过程可分为:词法分析->语法分析->语法树生成->参数注入、类型检查->结果输出这五步。
词法分析
定义 通过有限自动机识别源代码中的字符串,将其转换成词法单元(token)。
语法分析
定义 在词法分析的基础上,识别表达式的语法结构的过程
抽象语法树
上下文无关文法与递归下降分析
类型检查
通过类型综合进行检查
编译时检查 & 运行时检查
4. 设计规则引擎预定义内容
词法分析内容
语法分析内容
表达式与语法树结构
语法树执行 通过后序遍历二叉树的方式执行代码,后序便利的顺序为左子树->右子树->根结点
类型检查 执行时检查,左右子节点运算完成后对左右子节点的值进行校验