java版自动机Squirrel源码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feivirus/article/details/85370385

第一节 参考
https://github.com/hekailiang/squirrel
https://segmentfault.com/a/1190000009906469

第二节 状态机理论
一.应用范围

订单状态/合同规则状态切换,词法分析器,审批工作流,SQl语言解析,信息检索,爬虫
二.开源项目

jflex,smc,spring statemachine,jfsm,stateless4j,squirrel-foundation
三. 基本概念
字符:一个个字母或者非字母的字符
串/句子/字:字符的一个序列
语言:串的集合
字母表:符号的有穷非空集合
符号表:为每个标识符保存一个记录的数据结构,记录标识符/token的属性
单词/符号/标识符:形成记号的字符序列,可以是一个关键字,算符,字符串,标点符号等。支持连接,和,闭包,幂操作
模式:描述特定记号的单词集合的规则
token/记号:对单词进行模式匹配,返回的标记,一般通过一个id号表示,有记号具体值得属性。
正规式:通过正则表达式,表示模式匹配的一种方式,比如a|b*[cd]
正规定义:通过->推导定义的语言
转换图:通过圆圈(状态),带箭头的边(输入字符)表示自动机,边上可以有动作(触发状态切换事件时,做的操作)。
转换表:转换图用表格表示
有限自动机FA:通过状态集合,输入符号的集合,转换函数,唯一的开始状态,终止状态集合表示。
不确定的有限自动机NFA:当输入某个符号时,存在不止一种转换状态。可以通过子集构造法,把NFA转成DFA
确定的有限自动机DFA:当输入某个符号时,只有一种转换状态。
正则表达式:描述有穷自动机的相同模式的记号

第三节 Squirrel类结构图

第四节 源码流程

如上图

猜你喜欢

转载自blog.csdn.net/feivirus/article/details/85370385