这是我参与「第五届青训营 」伴学笔记创作活动的第8天
一、课程内容
- 规则引擎概念
- 编译原理概念
二、详细知识点
1、规则引擎定义
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。
2、编译原理
1. 理解
词法分析:把源代码字符串转换为词法单元(Token)的过程
Q:如何识别Token?
A:有限自动机。它的状态数量是有限的,在任何一个状态,基于输入的字符,都能进行一个确定的状态转换。
语法分析:在词法分析的基础上识别出表达式的语法结构。
2. 执行
抽象语法树:表达式抽象语法结构的树状标识,对于一个表达式,抽象语法树一定是唯一的。
语法树结构:
(1) 一元运算符:左子树为空,右子树为右操作数。
(2) 二元运算符:左子树为左操作数,右子树为右操作数
(3) 括号:左子树为空,右子树为内部表达式的AST
巴科斯范式:一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。
3. 输入输出
类型检查(编译时检查&运行时检查):验证执行的结果是否为合适的数据类型。在抽象语法树中,通常会验证某件点的子节点的数据类型是否合法。
类型综合:根据字表达式的类型构造出父表达式的类型。
参数注入:在规则执行过程中,使用输入的参数值来计算语法树中的标识符节点值的过程。
三、课程总结
之前没有学习过编译原理相关知识,这次课程的知识点对我来说还是比较新,后续有时间的话完成一个简单的规则引擎。