这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
课程主要学习了规则引擎以及相关编译原理:
1. 规则引擎
2. 编译原理
3. 规则引擎设计
注:笔记图片来自课程截图,如有侵权,请联系删除
1.规则引擎
规则引擎是嵌入在应用程序的组件,使用预定义语义模板编写业务决策。应用场景,风控对抗、活动策略运营、数据分析和清洗。组成部分包括数据输入、规则理解(能够按照预先定义的词法、语法、优先级、运算符等正确理解业务规则所表达的语义)、规则执行(根据规则对输入的参数进行解释和执行,并进行类型检查)。
解决开发人员重复编码的问题,业务决策与服务本身解耦,提高服务的可维护性缩短开发路径,提高效率。
2.编译原理
词法分析
源代码字符串转换为词法单元(Token)的过程。有限自动机是一个状态机,状态数量有限,状态机在任何一个状态,基于输入字符,都能做一个确定的额状态转换。可以通过有限自动机识别Token。
语法分析
语法分析就是在词法分析的基础上,识别表达式的语法结构的过程。 抽象语法树,表达式的语法结构可以用树来表达,其节点是一个语法单元,单元构成规则叫语法。
3.规则引擎设计
设计一个规则引擎,支持特定词法、运算符、数据类型和优先级,并且支持基于以上预定义语法的规则表达式的编译和执行。
词法分析包括参数,布尔值,字符串,十进制int,十进制float,一元运算符,二元运算符,逻辑操作符,括号。状态机如下:
语法分析需要利用语法树预定义操作符的执行逻辑。对抽象语法树进行后续遍历执行(先执行左子树,得到左节点的值;在执行右子树,得到有节点的值;最后根据节点的操作符执行得到根节点的值)。
类型检查需要在执行时检查,在一个节点的左右子节点执行完成后,分别校验左右子节点的类型是否符合对应操作符类型检查预设规则。
总结
主要学习了编译原理的理论知识,明白了词法分析和语法分析等能够用在什么应用场景。