Atitit.java expression fsm 表达式分词fsm引擎

Posted attilaxAti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atitit.java expression fsm 表达式分词fsm引擎相关的知识,希望对你有一定的参考价值。

 

 

Atitit.java expression fsm 表达式分词fsm引擎

 

C:\\0workspace\\AtiPlatf_cms\\src\\com\\attilax\\fsm\\JavaExpFsm.java

 

 

String code = "new(com.attilax.util.connReduceDync).set_resfile(uc_js.txt).joinNout() "

.trim();

 

 

$code=new(com.attilax.user.AgentService).login(admin,admin)

 

[

"new",

"(",

"com.attilax.user.AgentService",

")",

".",

"login",

"(",

"admin",

"admin",

")"

]

 

 

作者::  ★(attilax)>>>   绰号:老哇的爪子  全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊  汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

 

 

package com.attilax.fsm;

 

import java.util.List;

 

import com.google.common.collect.Lists;

 

public class JavaExpFsm {

List<String> tokens = Lists.newLinkedList();

String curToken = "";

//String splitors = "(),\\"";

String curStat = "ini";

private String code;

public char[] code_char_arr;

 

public JavaExpFsm(String code) {

this.code = code;

}

 

/**

 * http://localhost/new(com.attilax.util.connReduceDync).set_resfile(uc_js.txt).joinNout()

 * http://localhost/wrmiServlet?code=new(com.attilax.util.connReduceDync).set_resfile(uc_js.txt).joinNout()

 * @param args

 */

public static void main(String[] args) {

String code = "new(com.attilax.util.connReduceDync).set_resfile(uc_js.txt).joinNout() "

.trim();

code= " new(com.attilax.agent.AgentRechargeService).getSubMemTotalsRecycleByAgentId(\\"promoter:$pid$,fld2:v2\\")";

List li = new JavaExpFsm(code).getTokens();

for (Object object : li) {

System.out.println(object);

}

System.out.println(li);

 

}

 

public List getTokens() {

code_char_arr = code.toCharArray();

for (char c : code_char_arr) {

// get next char,,then change stat

// jude cur char and cur stat...then if or not chage stat

if (c == \'(\' && !this.curStat.equals("strStart")) {    //&&  cur stta=ini

this.curStat = "brkStart";

tokens.add(this.curToken);

tokens.add("(");

this.curToken = "";

continue;

}

 

//if (c == \'.\' && this.curStat.equals("brkStart")) {

//

//curToken = curToken + String.valueOf(c);

//continue;

//

//// this.curStat.equals("brkEnd"))

//

//}

//

if (c == \')\'  && !this.curStat.equals("strStart") ) {    //&& cur stat =brk start

this.curStat = "brkEnd";

if(this.curToken.length()>0)

tokens.add(this.curToken);

tokens.add(")");

this.curToken = "";

continue;

}

if (c == \'.\' && this.curStat.equals("brkEnd")) {

tokens.add(".");

curToken = "";

continue;

}

if(c==\'\\"\' && this.curStat.equals("brkStart"))

{

this.curStat = "strStart";

//tokens.add(c);

this.curToken = "";

continue;

}

if(c==\'\\"\' && this.curStat.equals("strStart"))

{

this.curStat = "strEnd";

tokens.add(this.curToken);

this.curToken = "";

continue;

}

if(c==\',\' && this.curStat.equals("brkStart"))

{

//this.curStat = "strEnd";

tokens.add(this.curToken);

this.curToken = "";

continue;

}

//if (this.curStat.equals("ini"))

curToken = curToken + String.valueOf(c);

}

return tokens;

}

 

}

 

 

以上是关于Atitit.java expression fsm 表达式分词fsm引擎的主要内容,如果未能解决你的问题,请参考以下文章

Express 仅加载主页

文件的写入-对Excel文件数据操作-express生成器——

Atitit.java eval功能的实现  Compiler API

为 Express 开发模板引擎

Atitit.Java exe bat  作为windows系统服务程序运行

Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi..