go语言后端7 | 青训营笔记

63 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第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 等等

三、实践练习例子:

  • 有什么实践举例帮助理解知识点?
  • 嗯,还是比较好理解的

四、课后个人总结:

  • 关于搜索引擎的核心理论容易混淆
  • 因为明天白天有事,因此晚上就把明天的任务看完写完了。困呀!!!!!

五、引用参考: