Atitti.java exp ast java表达式语法ast构造器

Atitti.java exp ast java表达式语法ast构造器

 

/atiplat_cms/src/com/attilax/lang/AstParser.java

 

原理

分割tokens_slice_li

分析splitor,, 主要是dot end

 

 

 

 

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

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

 

package com.attilax.lang;

 

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

 

import com.attilax.fsm.JavaExpFsm;

import com.attilax.json.AtiJson;

import com.attilax.net.UrlEncode_del;

import com.google.common.collect.Lists;

 

public class AstParser {

public Object obj;

public Object rzt;

 

public static void main(String[] args) throws UnsupportedEncodingException {

 

System.out

.println(URLEncoder

.encode("new(com.attilax.util.connReduceDync).set_resfile(userPhone4jobusImp/uc_js.txt).joinNoutV2()",

"utf8"));

String s="new(com.attilax.orm.AtiOrmV2).queryAsRzt(\"select sum(rmb) sumx from recharge where accountId in (  select id as uid from account where promoter=888 ) \")";

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

s="new(com.attilax.user.AgentService).login(admin,admin)";

System.out.println( new AstParser().getExprsLiAst(s));

//"select sum(rmb) sumx from recharge where accountId in (  select id as uid from account where promoter=888 )"

System.out.println("..");

// System.setProperty("prj","jobus");

// String

// code="new(com.attilax.util.connReduceDync).set_resfile(userPhone4jobusImp/uc_js.txt).joinNoutV2() ".trim();

// Ast astParser = new Ast();

// List ast=astParser.getExprsLiAst(code);

// System.out.println(AtiJson.toJson( astParser.parse(ast)));

//s="login(admin,admin)";

 

}

 

// public Object parse;

public Object parse(List ast) {

for (Object object : ast) {

// String exp=(String) object;

parseSingle(object);

}

return this.rzt;

}

 

private void parseSingle(Object exp) {

Exprs e = (Exprs) (exp);

e.obj = this.obj;

 

this.rzt = e.calc();

this.obj = e.obj;

 

}

 

@SuppressWarnings("all")

public List getExprsLiAst(String code) {

 

List li = new ArrayList();

 

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

System.out.println(AtiJson.toJson(tokens));

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

for (int i = 0; i < tokens.size(); i++) {

// last

// dot is expres splitor..if cur pos of tokens  is dot

if (tokens.get(i).toString().trim().equals(".")

) {

Exprs e = getExprsFrmTokenslice(tokens_slice_li);

li.add(e);

tokens_slice_li = Lists.newLinkedList();

continue;

}

if( i == tokens.size()-1)

{

tokens_slice_li.add((String) tokens.get(i));

Exprs e = getExprsFrmTokenslice(tokens_slice_li);

li.add(e);

break;

}

tokens_slice_li.add((String) tokens.get(i));

 

}

 

// Collections.addAll(li, a);

return li;

}

 

private Exprs getExprsFrmTokenslice(List<String> tokens_slice_li) {

Exprs e = new Exprs();

//if (tokens_slice_li.size() == 5) {

//

//}

//if (tokens_slice_li.size() == 4) {

//e.method = (String) tokens_slice_li.get(0);

//String params = tokens_slice_li.get(2);

////e.params = params;  //e.parseParams(params.toString());

//e.params = Lists.newLinkedList();

//e.params.add(params);

////q716 must as a params..

////'new(com.attilax.agent.AgentRechargeService).getSubMemTotalsRecycleByAgentId("promoter:$pid$,fld2:v2")';

//

//}

// last    log() mode ,empty param mode

if (tokens_slice_li.size() == 3) {

e.method = (String) tokens_slice_li.get(0);

e.params = Lists.newLinkedList();

}else

{

e.method = (String) tokens_slice_li.get(0); 

e.params = parseParams(tokens_slice_li);

}

 

return e;

}

 

@Deprecated

public List parseParams(String pa_str) {

String[] a=pa_str.split(",");

List    li=new ArrayList();

Collections.addAll(li, a);

return li;

}

/**

attilax    201692日  下午12:12:01

 * @param tokens_slice_li

 * @return

 */

public List parseParams(List<String> tokens_slice_li) {

List    li=new ArrayList();

for(int i=2;i<tokens_slice_li.size()-1;i++)

{

li.add(tokens_slice_li.get(i));

}

return li;

}

 

}

 

转载于:https://www.cnblogs.com/attilax/p/5836587.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机内图标wps云盘怎么去掉,Win10资源管理器WPS云文档图标如何清除

如果用户在Windows10系统中安装了WPS办公软件的话&#xff0c;那么资源管理器中就会自动生成WPS云文档图标。一些用户觉得这样很占用空间&#xff0c;就希望该将其彻底删除。该如何操作呢&#xff1f;接下来&#xff0c;就随小编一起看看具体步骤吧&#xff01;具体如下&#x…

englishpod主持人对话文本_Englishpod 23 | 主持人文本讲解

本期主持人对话中的主要语言知识点如下&#xff1a;泛听&#xff1a;建议请先听了录音&#xff0c;没听清的&#xff0c;再对照看文本本期知识点&#xff1a;1&#xff0c;Vocabulary preview(词汇预览)&#xff1a;(1) financial adviser 2&#xff0c;Language takeaway(语言…

计算机桌面上的声音图标没了怎么办,Win7电脑右下角声音图标不见了怎么办?...

最近有Win7用户反映&#xff0c;电脑右下角的声音图标总是莫名其妙的不见了&#xff0c;导致用户要调整音量的时候不知道从哪调整&#xff0c;这让用户非常烦恼。那么&#xff0c;Win7电脑右下角声音图标不见了怎么办呢&#xff1f;下面&#xff0c;我们就一起往下看看Win7电脑…

LeetCode 171 Excel Sheet Column Number

Given a column title as appear in an Excel sheet, return its corresponding column number. For example: A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 思路&#xff1a; 相当于26进制转10进制&#xff0c;要注意A从1开始而不是从0开始的边界条件。 …

计算机学院足球队 英语怎么说,计算机学院举办2018届毕业生足球赛

计算机学院举办2018届毕业生足球赛当下又到了毕业季&#xff0c;2018届的本科同学们即将离开校园&#xff0c;开启人生新的阶段&#xff0c;在此背景下由共青团西北工业大学计算机学院委员会主办&#xff0c;10011508团支部、计算机学院体工部承办这一次毕业生足球赛。本次比赛…

XDOJ-1002-小W的塔防(dp)

转载于:https://www.cnblogs.com/GrowingJlx/p/6642771.html

道指mt4代码_道恩转债上市首日遭大股东清仓式减持!

今天市场震荡上行&#xff0c;通过时间的磨合和空间的震荡来判断多空力量&#xff0c;消耗短期多空力量&#xff0c;聚合中长期多空能量并逐渐选择方向。今天上证指数领涨&#xff0c;涨幅为3.11%&#xff0c;创业板指表现稍弱&#xff0c;涨幅1.31%。转债指数表现也不错&#…

PHP5.3--PHP7 新特性总结

PHP5.3 ①Added "?:" operator ( 添加了&#xff1f;&#xff1a;操作符) 指的是三元运算符可以简写&#xff1a; $x true;$rs $x?:false;//$x?$x:false; ②Added lambda functions and closures (增加了匿名函数和闭包) ③Added support for namespaces (增加了…

计算机上网络接口层,2016计算机专业知识:TCP/IP 各层功能

【导读】为了帮助广大考生更好的备考&#xff0c;中公事业单位考试网提供2016年计算机专业知识学习&#xff0c;为考生定制计算机基础知识复习计划。1.网络接口层&#xff1a;这是TCP/IP模型的最低层&#xff0c;包括能使用TCP/IP与物理网络进行通信的协议&#xff0c;且对应着…

comsol临时文件夹中有不支持的字符_错误:发生错误。请查看日志文件 C:\Users......

解决方法以下几种情况下会发生此问题&#xff1a;A&#xff1a;主目录或临时目录的写问题如果您的主目录磁盘空间有限&#xff0c;或者您没有写权限&#xff0c;导致 COMSOL 在求解期间无法写入&#xff0c;则可能会显示此消息。日志文件通常包含如下所示的错误消息&#xff1a…

(一)选择排序之一:堆排序

选择排序学过的有三种&#xff1a;简单选择排序、树形选择排序、堆排序 今天先来简单的了解一下堆排序&#xff1a; 完全二叉树&#xff0c;即从头到尾&#xff0c;从左到右依次排序&#xff0c;符合大堆&#xff08;小堆&#xff09;都行&#xff0c;即ki>k2i && k…

html百分比代码怎么写,参考Bootstrap写的一个带百分比的进度条(附源码)

最近需要写一个进度条的效果&#xff0c;网上找了一些&#xff0c;但都不能完美的实现需求。于是就自己改造了一个&#xff0c;效果如下图&#xff1a;因为动态图太大&#xff0c;我上传到 GitHub 了&#xff0c;就不在博客上再上传了。百分比跟随进度条移动&#xff0c;百分比…

mesh和wifi中继的区别_深度解读Mesh路由和无线中继的差异,谁才是性价比之选?...

对于居住大户型或者跃层户型的用户来说&#xff0c;由于房屋结构复杂&#xff0c;还有各种转角墙体的阻隔&#xff0c;一台路由器已经无法满足WiFi覆盖需求&#xff0c;单路由家庭的WiFi覆盖总是有死角。为了解决WiFi信号差的问题&#xff0c;很多人直觉反应就是简单粗暴的多加…

sessionStorage localStorage cookie

sessionStorage & localStorage & cookie 概念 html5中的Web Storage包括了两种存储方式&#xff1a;sessionStorage和localStorage。sessionStorage用于本地存储一个会话&#xff08;session&#xff09;中的数据&#xff0c;这些数据只有在同一个会话中的页面才能访问…

应山有学计算机编程吗,周应山-武汉纺织大学材料科学与工程学院

周应山&#xff0c;博士&#xff0c;材料科学与工程学院教授&#xff0c;硕士生导师。2008年毕业于武汉大学化学与分子科学学院高分子化学与物理专业。主要从事天然纤维材料、光聚合生物医用材料、3D打印生物医用材料的应用基础研究&#xff0c;目前主持国家自然科学基金、湖北…

fast group合计 report_FastReport报表设计.doc

FastReport报表设计FastReport报表设计目录5.1 前言5.2 基本概念及操作5.3 报表设计与范例5.4 常用功能及函数5.5 报表设计常用技巧5.1 前言汽车业务管理系统(VBMS)使用FastReport3.0报表系统设计报表。本文主要描述使用FastReport设计报表的基本概念、使用方法、设计技巧和范例…

$(this).attr(checked, true); 设置不了

<script src"../js/jquery-1.7.2.min.js" type"text/javascript"></script> 用 $(this).attr("checked", true); <script src"/js/jquery.js" type"text/javascript"></script> 用 $(this).p…

计算机英语四六级对调剂有影响吗,你知道四六级对于考研的影响程度吗?

原标题&#xff1a;你知道四六级对于考研的影响程度吗&#xff1f;►报考方面无影响根据全国硕士研究生招生简章规定&#xff0c;考研需大学本科或同等学力即可&#xff0c;对四六级成绩没有硬性规定。即是考研本身对四六级成绩是没有直接要求的!要求的是考研英语过线。但是&am…

pve 加大local容量_proxmox ve (PVE) 增加 local 目录的大小即扩容

最近又到了一台gen8又开始了瞎几把折腾的道路 TF卡32g proxmox 安装完后默认分配给了 local 目录7G,local-lvm 是20G 由于虚拟机备份文件VZDump默认是存储到local目录的,再加上上传的IOS镜像,100G很经常不够用,那怎么扩容增加空间呢? 首先 fdisk -l 命令,查看/dev/mapper…

认识css

css css样式:css是英文Cascading Style Sheets的缩写,称为层叠样式表&#xff0c;用于对页面进行美化&#xff0c;CSS的可以使页面更加的美观。基本上所有的html页面都或多或少的使用css。存在方式有三种&#xff1a;元素内联、页面嵌入和外部引入 语法&#xff1a;style key1…