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

111 阅读3分钟

这是我参与【第五届青训营】伴学笔记活动的第六天

什么是规则引擎

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

before

规则一改变,代码就得不断重建

image.png

after 建立规则引擎后,输入规则,自动生成代码实现业务逻辑

image.png

简单来讲,是一个自动机,由三部分组成

  • 数据输入
  • 规则理解
  • 规则执行

编译原理

image.png 参考一篇通俗易懂的文章:

编译原理 - 知乎 (zhihu.com)

前端编译器的几个部分:

  • 词法分析 正则文法:形式文法的一种

形式语言理论中,文法(为了避免歧义,常称作“形式文法”)是形式语言字符串的一套产生式规则。这些规则描述了如何用语言的字母表生成符合语法的有效的字符串。文法不描述字符串的含义,也不描述在任何上下文中可以用它们做什么——只描述它们的形式。

image.png

计算机科学中,正则文法是产生式规则取下述形式的一种形式文法N, Σ, PS):

  1. A -> a ,此处的AN中的非终结符号a是Σ中的终结符号
  2. A -> aB,此处的ABN中的非终结符号,a是Σ中的终结符号;
  3. C -> ε,此处的CN中的非终结符号。

下面给出一个正则文法的例子: 文法G = (N, Σ, PS),其中N = {S, A},Σ = {a, b, c},S是起始符号,P包含下述规则:

    • S -> aS
    • S -> bA
    • A -> ε
    • A -> cA

这个文法描述的语言也可以用正则表达式a*bc* 来表达。

正则文法描述的语言构成了正则语言类,正则语言类中的语言也可以由有限状态自动机正则表达式来表达。

  • 语法分析

词法分析是识别一个个的单词,而语法分析就是在词法分析的基础上识别出程序的语法结构。这个结构是一个树状结构。这棵树叫做抽象语法树(Abstract Syntax Tree,AST)。树的每个节点(子树)是一个语法单元,这个单元的构成规则就叫“语法”。每个节点还可以有下级节点。

  • 抽象语法树

递归下降算法 Recursive Descent Parsing

基本思路就是按照语法规则去匹配 Token 串。

  • 类型检查

根据子表达式的类型构造出父表达式的类型

引用:

【后端专场 学习资料三】第五届字节跳动青训营 - 掘金 (juejin.cn)

end