Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx
Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx
C:\0workspace\AtiPlatf_cms\src\com\attilax\fsm\JavaExpFsm.java
String code = "new(com.attilax.util.connReduceDync).set_resfile(uc_js.txt).joinNout() "
.trim();
Ver2 新特性
字符串单引号括起来的支持
字符串可以不要双引号括起来..方便的使用path等..
$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://blog.cnb.net/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;
}
}
Atiend
Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx的更多相关文章
- Atitit.java expression fsm 表达式分词fsm引擎
Atitit.java expression fsm 表达式分词fsm引擎 C:\0workspace\AtiPlatf_cms\src\com\attilax\fsm\JavaExpFsm.java ...
- Atitit s2018.5 s5 doc list on com pc.docx v2
Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc Acc 112237553.docx Acc baidu ne ...
- 2019t1_sumdoc_list.txt aa.docx acc baidu v2 sbb.docx Acc jindon v2 sbb.docx assetsList.html Atiitt 日本刑法典读后笔记.docx Atiti 遇到说花心的时候赞美应对.docx Atitit lesson.docx Atitit malye主义、mzd思想和dsp理论的区别和联系.docx Ati
2019t1_sumdoc_list.txtaa.docxacc baidu v2 sbb.docxAcc jindon v2 sbb.docxassetsList.htmlAtiitt 日本刑法典读 ...
- Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api
Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx Aitit algo fi ...
- Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 18821766710 attilax main num.docx Atiitt put post 工具 开发工具dev tool test.docx Atiitt 腾讯图像分类相册管家.docx
Atitit s2018.5 s5 doc list on com pc.docx Acc 112237553.docx Acc baidu netdisk.docx Acc csdn 1882 ...
- Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat
Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 ...
- Atitit.java相比c#.net的优点 优缺点 v2 q330
Atitit.java相比c#.net的优点 优缺点 v2 q330 1. 跨平台可在LINUX上,mac跑以外.主要如下: 1 2. IDE ECLIPSE(500m)是绿色的,换机器不用安装,C ...
- Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27
Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...
- atitit.java解析sql语言解析器解释器的实现
atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...
随机推荐
- PHP对图片按照一定比例缩放并生成图片文件
list($width, $height)=getimagesize($filename);//缩放比例$per=round(400/$width,3); $n_w=$width*$per;$n_h= ...
- lua 自己编译源文件
,下载源代码 http://www.lua.org/download.html 直接下载source ,vs2010新建win32项目 应用程序设置中设成静态库 ,将.c(除去lua.c)和.h文件加 ...
- javaWeb开发小工具--MyCommonUtils
MyCommonUtils 参考一些资料,写了这个工具类.在这个工具类中,主要实现了2个方法: 1.生成随机的序列号 uuid(): 2.将Map中的数据封装到javaBean对象中toBean(Ma ...
- 今天我们要说的画一个三角形,恩,画一个三角形,第一种呢是利用我们的html标签结合css来实现;而第二种方法就就是我们的html5新增的一个标签canves,这个canves就是网页画幕,那么顾名思义就是在网页里建造一个画板,用来画画,好,那接下来就和我一起去看看吧!
第一种方法:利用我们的html标签结合css来实现 span{ width:0px; height:0px; border-width:7px; border-style:solid; border- ...
- 关于display: box 和 box-flex
这两天做手机项目,使用到这个css3新属性.现在还不为所有浏览器支持,所以使用的时候要加上前缀.使用方法见下面: html代码: <div class="s-indLine" ...
- Merge在Sqlserver使用例子说明
---文章 MatchInt的方式 Create table SourceTable([ID] int,[Desc] varchar(50)); Create table TargetTable([I ...
- 黑马程序员_Java基础:JDK1.5后的新特性:自动拆装箱,以及注意事项
------- android培训.java培训.期待与您交流! ---------- 首先来看一段代码: Integer x = new Integer(4); Integer y = 4; 在JD ...
- JAVA单例的三种实现方式
1. public class MySingleton { private MySingleton() {} private MySingleton instance = new MySingleto ...
- 每天记一些php函数,jQuery函数和linux命令(三)
简介:学习完了php和jQuery之后,对函数的记忆不到位,导致很多函数没记住,所以为了促进自己的记忆,每天花一点时间来写这个博客. 时间:2016-12-21 地点:太原 天气:雨夹雪 一 ...
- 读书笔记之深入理解Nginx:模块开发与结构解析
前言 我现在看书一般都是看自己能看懂的地方,看不懂就先略过,回头再看,下面就写自己看得懂的地方吧,并且把自己的理解也放到里面. 第一部分 Nginx能帮我们做什么 编译安装各个命令解释 configu ...