这是我参与「第五届青训营 」笔记创作活动的第7天
一、本堂课重点内容:
今天主要讲了规则引擎设计与实现
规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。
学习分为以下几点
- 了解规则引擎的组成部分和应用场景。
- 学习并掌握规则引擎的设计与实现原理。
- 明确一个规则引擎的设计目标,并完成各部分的设计与实现步骤拆解。
- 动手实现规则引擎项目,完成预定目标。
- [课外扩展] 结合其他课程,完成一个在线 规则引擎 服务。
二、详细知识点介绍:
什么是词法分析?
把源代码字符串转换为词法单元(Token)的这个过程。
确定的有限自动机 DFA | Deterministic Finite Automaton
确定的有限自动机就是一个状态机,它的状态数量是有限的。该状态机在任何一个状态,基于输入的字符,都能做一个确定的状态转换。
什么是语法分析?
词法分析是识别一个个的单词,而语法分析就是在词法分析的基础上识别出程序的语法结构。这个结构是一个树状结构。这棵树叫做抽象语法树(Abstract Syntax Tree,AST)。树的每个节点(子树)是一个语法单元,这个单元的构成规则就叫“语法”。每个节点还可以有下级节点。
Token -> AST
上下文无关语法 Context-Free Grammar
语言句子无需考虑上下文,就可以判断正确性
...
a = 0;
...
这是一个赋值语句,无论此语句的前后是什么代码,此语句所代表的操作是确定的。即给变量a赋值等于0
复制代码
上下文无关语法G:终结符集合T + 非终结符集合N + 产生式集合P + 起始符号S
G由T、N、S和P组成,由语法G推导出来的所有句子的集合称为G语言!
终结符: 组成串的基本符号。可以理解为词法分析器产生的token集合。比如 + Id ( ) 等
非终结符: 表示token的的集合的语法变量。比如 stmt varDecl 等等
三、实践练习例子:
- 有什么实践举例帮助理解知识点?
- 嗯,还是比较好理解的
四、课后个人总结:
- 关于搜索引擎的核心理论容易混淆
- 因为明天白天有事,因此晚上就把明天的任务看完写完了。困呀!!!!!
五、引用参考:
- 我参考了哪些外部博客/笔记/文章?
- 文章中有什么地方是我参考引用了外部博客/笔记/文章的?
- 【后端专场 学习资料三】第五届字节跳动青训营 - 掘金 (juejin.cn)
- 笔记创作评判标准 & 模版 - 飞书云文档 (feishu.cn)