Atitit..状态机与词法分析 通用分词器 分词引擎的设计与实现 attilax总结
Atitit..状态机与词法分析 通用分词器 分词引擎的设计与实现 attilax总结
4.2. public abstract class State {3
4.4. public class FinishState extends State {4
1. 状态机 理论参考
Atitit. 有限状态机 fsm 状态模式 - attilax的专栏 - 博客频道 - CSDN.NET.htm
Atitit. 有限状态机 fsm 状态模式 - attilax的专栏 - 博客频道 - CSDN.NET.htm
2. 词法分析理论
atitit.词法分析的实现token attilax总结 - attilax的专栏 - 博客频道 - CSDN.NET.htm
atitit.自己动手开发编译器and解释器(1) ------词法分析--attilax总结 - attilax的专栏 - 博客频道 - CSDN.NET.htm
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
3. 词法分析实例
atitit..sql update语法的词法分析,与语法ast构建 - attilax的专栏 - 博客频道 - CSDN.NET.htm
atitit.java解析sql语言解析器解释器的实现 - 其他综合 - 红黑联盟.htm
4. ---code fsm 状态机通用实现
package com.attilax.fsm;
import java.util.ArrayList;
import java.util.List;
import com.attilax.lang.text.strUtil;
4.1. Context
public class Context {
public State state;
public List<Token> tokenList=new ArrayList <Token>();
public Token curToken=new Token();
public int curcharIndex;
public char[] sa;
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public void request(String s) {
if(sa==null)
sa=s.toCharArray();
state.handle(s, this);
}
}
package com.attilax.fsm;
import java.util.List;
import com.attilax.fsm.camelScanner.iniState;
package com.attilax.fsm;
4.2. public abstract class State {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public boolean MoveNextisEnd(Context context) {
context.curcharIndex++;
if(context.curcharIndex>=context.sa.length)
{
addCurToken(context );
context.state=new FinishState();
return true;
}
return false;
}
public void addCurToken(Context context) {
context.tokenList.add(context.curToken);
}
public void newToken(Context context , char curChar) {
Token token = new Token();
token.value= token.value+String.valueOf(curChar);
context.curToken=token;
}
public void addCurTokenNnewToken(Context context, char curChar) {
addCurToken(context);
newToken(context,curChar);
}
public abstract void handle(String sampleParameter, Context context) ;
}
package com.attilax.fsm;
4.3. public class Token {
public String value="";
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
package com.attilax.fsm;
4.4. public class FinishState extends State {
@Override
public void handle(String sampleParameter, Context context) {
// TODO Auto-generated method stub
}
}
5. 扫描器
5.1. public class Scanner {
public static void main(String[] args) {
// TODO Auto-generated method stub
Strings = "fld1=1,fld2='at''t,lax',fld3='val3'";
s="aaaaCamelJSONObject123forMac";
}
public List getTokenList(String s) {
// DslPaserContext context = new DslPaserContext();
Context context = new Context ();
context.setState(new iniState());
int n = 0;
while (!(context.state instanceof FinishState)) {
// System.out.println(n);
// ����
context.request(s);
n++;
if (n > 200)
break;
}
for (Token tk : context.tokenList) {
// if(tk.value.trim().length()>0)
System.out.println(tk.value + "===");
}
return (List) context.tokenList;
}
}
public List<String> getTokenList_retStr(String s)
{
if(s.length()==0)
return new ArrayList<String>();
List<String> li_r=new ArrayList<String>();
List<Token> li=getTokenList(s);
for (Token token : li) {
li_r.add(token.value);
}
return li_r;
}
相关文章
- 数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
- MySQL常用存储引擎之MyISAM
- 大数据ClickHouse(十):MergeTree系列表引擎之SummingMergeTree
- 使用Merge存储引擎实现MySQL分表
- AWS工程师辞职创建Tensor Search引擎,即插即用HuggingFace版CLIP模型
- 面试系列-数据引擎实现的数据结构
- Fel实现自定义计算引擎,平均计算速度每秒10w
- 架构设计---智能引擎到物联网详解
- MySQL 存储引擎 - InnoDB 实现原理介绍
- 最高加速9倍!字节跳动开源8比特混合精度Transformer引擎
- 【虚幻引擎】实现惊险闪避触发时停效果
- ThinkTemplate 模板引擎
- Vue源码之mustache模板引擎(二)手写实现mustache
- 【Rust日报】2022-12-27 Rust 中的 K/V 存储引擎
- java实现简单的字符串解析匹配运算规则引擎
- 云上OLAP引擎查询性能评估框架:设计与实现
- 【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )
- 《Drools7.0.0.Final规则引擎教程》RHS语法详解编程语言
- 【Oracle规则引擎:实现业务流程自动化】(oracle规则引擎)
- 引擎使用PostgreSQL实现规则引擎功能(postgresql规则)
- MySQL NDB引擎:实现高可用和卓越性能(mysqlndb引擎)
- 国产Linux软件:实现自主可控新引擎(国产linux软件)
- 极速撮合:Redis实现交易效率(撮合引擎redis)
- Oracle KVM:实现虚拟化的强大引擎(oraclekvm)
- MySQL的4大存储引擎之旅(4 mysql的存储引擎)
- MySQL 2440推动企业信息数据利用的强劲引擎(2440 mysql)
- Redis火力全开实现高效检索(redis 检索引擎)
- 腾讯发布Q3财报,金融业务会成为下一个增长引擎吗?
- 使用php重新实现PHP脚本引擎内置函数
- ASP高级模板引擎实现类