这是我参与「第五届青训营」伴学笔记活动的第五天
规则引擎:嵌入在应用程序中的组件,实现了业务决策从应用程序代码中分离出来,并使用预定义的语义进行实现。
组成部分:
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 字节码只是一种可选的透明优化