这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、目录
本节课主要分为四个部分:
1.认识规则引擎
2.编译原理基本概念
3.设计一个规则引擎
4.规则引擎的实现
二、认识规则引擎
规则引擎是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。
解决了开发人员重复编码的问题。
业务决策与服务本身解耦,提高服务的可维护性,缩短开发路径,提高效率。
由数据输入、规则理解、规则执行组成。
可以应用于风控对抗、活动策略运营、数据分析和清洗等方面。
三、编译原理基本概念
编译(compilation , compile)
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
词法分析
把源代码字符串转换为词法单元(Token)的过程。
语法分析
在词法分析的基础上,识别表达式的语法结构。
巴科斯范式
一种上下文无关文法,使用一系列符号和表达式来创建字符串生成规则。
类型检查
对子表达式的类型进行检查,包括编译时检查和运行时检查。
四、设计一个规则引擎
设计目标:支持特定的词法、运算符、数据类型、优先级,且支持基于以上预定义语法的规则表达式的编译和运行。
五、规则引擎的实现
见代码即可。