这是我参与【第五届青训营】伴学笔记活动的第六天
什么是规则引擎
规则引擎是一种嵌入在应用服务中的组件,可以将灵活多变的业务决策从服务代码中分离出来。通过使用预定义的语义模块来编写业务逻辑规则。在执行时接受数据输入、解释业务规则,并做出决策。规则引擎能大大提高系统的灵活性和扩展性。
before
规则一改变,代码就得不断重建
after 建立规则引擎后,输入规则,自动生成代码实现业务逻辑
简单来讲,是一个自动机,由三部分组成
- 数据输入
- 规则理解
- 规则执行
编译原理
参考一篇通俗易懂的文章:
前端编译器的几个部分:
- 词法分析 正则文法:形式文法的一种
在形式语言理论中,文法(为了避免歧义,常称作“形式文法”)是形式语言中字符串的一套产生式规则。这些规则描述了如何用语言的字母表生成符合语法的有效的字符串。文法不描述字符串的含义,也不描述在任何上下文中可以用它们做什么——只描述它们的形式。
在计算机科学中,正则文法是产生式规则取下述形式的一种形式文法(N, Σ, P, S):
下面给出一个正则文法的例子: 文法G = (N, Σ, P, S),其中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 串。
- 类型检查
根据子表达式的类型构造出父表达式的类型
引用:
end