规则引擎|青训营笔记

47 阅读2分钟

这是我参与「第五届青训营」伴学笔记活动的第五天

规则引擎:嵌入在应用程序中的组件,实现了业务决策从应用程序代码中分离出来,并使用预定义的语义进行实现。

组成部分:
1.数据输入
2.规则理解
3.规则执行

应用场景:
1.风控对抗
2.活动策略运营
3.数据分析和清洗

词法分析:把源代码字符串转换为词法单元(Token)的过程;
有限自动机:一个状态机,状态数量有限,该状态在任何一个状态,基于输入的字符,都能做一个确定的状态转换。
词法分析:在词法分析的基础上,识别表达式的语法结构的过程。
抽象语法树:表达式的语法结构可以用树来表示,其每个节点是一个语法单元,这个单元的构成规则叫“语法”。每个节点还可以有下级节点。

类型检查:
1.类型综合
2.编译时检查&运行时检查\

巴斯科范式: BNF是描述上下文无关理论的一种具体方法,通过BNF可以实现上下文无关文法的具体化、公式化、科学化,是实现代码解析的必要条件
递归下降算法: varDecl : types Id varInitializer? ';' ; //变量声明
varInitializer : '=' exp ; //变量初始化
exp : add ; //表达式\
add : add '+' mul | mul; //加法表达式
mul : mul '*' pri | pri; //乘法表达式
pri : IntLiteral | Id | '(' exp ')' ; //基础表达式\

虚拟机和表达式:\

  • “虚拟机”对二进制字节码进行解释,而“解释器”是对程序文本进行解释。

  • 从历史上看,Java 是为解释二进制字节码而设计和实现的,而 Python 最初是为解释程序文本而设计和实现的。因此,“Java 虚拟机”这个术语在 Java 社区中具有历史意义并且非常成熟,“Python 解释器”这个术语在 Python 社区中具有历史意义并且非常成熟。人们倾向于延长传统并使用很久以前使用的相同术语。

  • 对于 Java,二进制字节码解释是程序执行的主要方式,而 JIT 编译只是一种可选的和透明的优化。而对于 Python,目前,程序文本解释是 Python 程序执行的主要方式,而编译成 Python VM 字节码只是一种可选的透明优化