Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结

1. 状态机 理论参考1

2. 词法分析理论1

3. 词法分析实例2

4. ---code fsm 状态机通用实现2

4.1. Context2

4.2. public abstract  class State {3

4.3. public class Token {4

4.4. public class FinishState extends State {4

5. 扫描器5

5.1. public class Scanner  {5

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://www.cnblogs.com/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;

}

Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结的更多相关文章

  1. Atitit. camel分词器 分词引擎 camel拆分 的实现设计

    Atitit. camel分词器 分词引擎 camel拆分 的实现设计 1. camel分词器1 1.1. 实现的界定符号大写字母小写字母数字1 1.2. 特殊处理 对于JSONObject 多个大写 ...

  2. IKanalyzer分词器分词并且统计词频

    <dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artif ...

  3. ElasticSearch最全分词器比较及使用方法

    介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch 是用 Java 开 ...

  4. Apache Lucene(全文检索引擎)—分词器

    目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...

  5. 2.IKAnalyzer 中文分词器配置和使用

    一.配置 IKAnalyzer 中文分词器配置,简单,超简单. IKAnalyzer 中文分词器下载,注意版本问题,貌似出现向下不兼容的问题,solr的客户端界面Logging会提示错误. 给出我配置 ...

  6. Lucene第二篇【抽取工具类、索引库优化、分词器、高亮、摘要、排序、多条件搜索】

    对Lucene代码优化 我们再次看回我们上一篇快速入门写过的代码,我来截取一些有代表性的: 以下代码在把数据填充到索引库,和从索引库查询数据的时候,都出现了.是重复代码! Directory dire ...

  7. Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  8. Elasticsearch之分词器的作用

    前提 什么是倒排索引? Analyzer(分词器)的作用是把一段文本中的词按一定规则进行切分.对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言,要用不同的 ...

  9. Elastic Search中normalization和分词器

    为key_words提供更加完整的倒排索引. 如:时态转化(like | liked),单复数转化(man | men),全写简写(china | cn),同义词(small | little)等. ...

随机推荐

  1. [BZOJ 1912] patrol 巡逻

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1912 Algorithm: K=0:res=(n-1)*2   每条边恰好走2遍 K=1 ...

  2. 【2-SAT】URAL - 2089 - Experienced coach

    题意:给出n对点a,b  要求从没对点中选出一个,且最终选出的点n个数不能存在相同的.输入数据满足每种数最多出现3次,最少出现1次 思路:第i对点的编号2*i, 2*i+1,   因为每个数最多出现3 ...

  3. 【二分答案】【分块答案】【字符串哈希】【set】bzoj2946 [Poi2000]公共串

    我们二分/分块枚举答案x,暴力把除了最短的字符串以外的其他字符串的x长度子串哈希搞出来,分别扔到set里. 然后暴力枚举最短的字符串的x长度字串,查看是否在全部的set里出现过. #include&l ...

  4. NOIP模拟赛[补档]

    图论: 差分约束, 2 SAT 数据结构 字符串 数学: FFT / NTT / 线代 DP 计算几何 暴力 线性基 CF 724G 计划: D1 T1: 斜率优化DP D1 T2: 差分约束 D1 ...

  5. Android App升级Intent

    点击“更新检查”,自动下载最新版本安装包,然后开始安装,进入安装界面后很快闪退. 在这两天的适配中,发现这样一个问题,即:在升级覆盖安装软件时,程序能进入安装的界面,但会很快闪退.经过多次尝试,终于找 ...

  6. sql-server-linux 官网

    https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-overview

  7. NEXUS7 学习

    一.编译环境搭建 (更细节的环境搭建请参考:How to Build CyanogenMod for Nexus 7 (Wi-Fi, 2012 version) (codename: grouper) ...

  8. JS组件系列——自己封装一个上传文件组件

    页面调用: $('#fileUpload').cemsUpload({ errorEmpty:'<s:text name="cupgrade.view.tip.upload.file. ...

  9. [Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据

    一.介绍 本例子用Selenium +phantomjs爬取界面(https://a.jiemian.com/index.php?m=search&a=index&type=news& ...

  10. Java笔记9:Spring简单Demo

      1 下载spring-framework-3.0.5.RELEASE-with-docs.zip和spring-framework-3.0.5.RELEASE-dependencies.zip,放 ...