规则引擎 | 青训营笔记

74 阅读2分钟

规则引擎 | 青训营笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天,主要记录相关的知识点。

本堂课重点内容

  • 规则引擎基本介绍
  • 规则引擎核心原理(编译原理基本概念复习)

规则引擎

Defination

规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。

说白了,规则引擎就是一个组件,这个组件可以解耦业务代码与服务代码。

规则引擎主要由三个部分组成:

  • 数据输入:能够接受基本数据,规则
  • 规则理解:能够理解业务规则的语义
  • 规则执行:能够正确按照理解的规则执行,对执行过程中的类型检查

编译原理

编译原理本质上是解释一门语言的科学。从这个角度来看,编译的过程与设计规则引擎的过程十分相似。

设计一个规则引擎,与编译原理中的 词法分析、语法分析等 概念关系密切。

鉴于大部分概念已经都所了解,这里仅记录一些基础概念。

词法分析

把源代码字符串转换为词法单元过程。

一个合法的 token 是一个 Dfa

语法分析

词法分析主要是在识别一个个token序列,而语法分析就是在词法分析的基础上识别出程序的语法结构。这个结构是一个树的形状,称为抽象语法树(Abstract Syntax Tree,AST)。每个子树都是一个语法单元,这个单元的构成规则就叫语法。

目前,大部分语法都属于 上下文无关文法 ,即该句子不需要依赖于上下文就可以直接被识别正确性,一种描述上下文无关文法的方式是 BNF

递归下降分析 是根据语法规则去匹配token的过程。

类型检查

常使用的方法包括:类型综合(通过子表达式推导出父表达式)

通常有两种时间会发生类型检查:编译时检查和运行时检查。

个人总结

本次课程主要学习了:

  • 规则引擎的概念,组成
  • 编译原理基础知识