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

94 阅读2分钟

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

一、课程内容

  • 规则引擎概念
  • 编译原理概念

二、详细知识点

1、规则引擎定义

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

2、编译原理

1. 理解

词法分析:把源代码字符串转换为词法单元(Token)的过程

Q:如何识别Token?

A:有限自动机。它的状态数量是有限的,在任何一个状态,基于输入的字符,都能进行一个确定的状态转换。

语法分析:在词法分析的基础上识别出表达式的语法结构。

2. 执行

抽象语法树:表达式抽象语法结构的树状标识,对于一个表达式,抽象语法树一定是唯一的。

语法树结构:

(1) 一元运算符:左子树为空,右子树为右操作数。

(2) 二元运算符:左子树为左操作数,右子树为右操作数

(3) 括号:左子树为空,右子树为内部表达式的AST

巴科斯范式:一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。

3. 输入输出

类型检查(编译时检查&运行时检查):验证执行的结果是否为合适的数据类型。在抽象语法树中,通常会验证某件点的子节点的数据类型是否合法。

类型综合:根据字表达式的类型构造出父表达式的类型。

参数注入:在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程。

三、课程总结

之前没有学习过编译原理相关知识,这次课程的知识点对我来说还是比较新,后续有时间的话完成一个简单的规则引擎。