规则引擎设计与实现 | 青训营笔记.md

91 阅读2分钟

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

课堂笔记

一、本堂课重点内容:

  • 认识规则引擎
  • 编译原理基本概念
  • 设计一个规则引擎
  • 规则引擎的实现

二、具体案例:

1. 认识规则引擎

  • 规则引擎的定义

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

image.png

  • 组成部分

image.png

  • 应用场景

image.png

2. 编译原理基本概念

  • 词法分析

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

    image.png

    image.png

  • 语法分析

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

    image.png

  • 抽象语法树

    表达式的语法结构可以用树来表示,其每个节点(子树)是一个语法单元,这个单元的构成规则就叫“语法”。每个节点还可以有下级节点。

    image.png

    image.png

  • 类型检查

    • 类型综合

    image.png

    • 编译时检查&运行时检查

    image.png

3.设计一个规则引擎

  • 设计目标

设计一个规则引擎,支持特定的词法、运算符、数据类型和优先级。并且支持基于以上预定义语法的规则表达式的编译和执行。

image.png

  • 词法分析

image.png

  • 语法分析

image.png

  • 语法树执行与类型检查

image.png

4.规则引擎的实现

image.png

三、课后个人总结

编译原理的重要性,基本知识属于编译原理,这里项目的实现是用go语言实现了编译原理的里面编译系统,不过这种自定义的规则应用于实际应用中,可以为开发提供更多便利。