Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
水滴come
qlexpress
提交
024bc97b
Q
qlexpress
项目概览
水滴come
/
qlexpress
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qlexpress
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
024bc97b
编写于
1月 06, 2022
作者:
Y
yumin.pym
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
format test code
上级
a69d104a
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
71 addition
and
59 deletion
+71
-59
src/main/java/com/ql/util/express/match/QLPattern.java
src/main/java/com/ql/util/express/match/QLPattern.java
+2
-2
src/main/java/com/ql/util/express/parse/KeyWordDefine4Java.java
...in/java/com/ql/util/express/parse/KeyWordDefine4Java.java
+2
-2
src/test/java/com/ql/util/express/example/WorkflowTest.java
src/test/java/com/ql/util/express/example/WorkflowTest.java
+39
-27
src/test/java/com/ql/util/express/test/ArrayTest.java
src/test/java/com/ql/util/express/test/ArrayTest.java
+1
-1
src/test/java/com/ql/util/express/test/ExpressTest.java
src/test/java/com/ql/util/express/test/ExpressTest.java
+7
-7
src/test/java/com/ql/util/express/test/IfTest.java
src/test/java/com/ql/util/express/test/IfTest.java
+14
-14
src/test/java/com/ql/util/express/test/NewExpressTest.java
src/test/java/com/ql/util/express/test/NewExpressTest.java
+6
-6
未找到文件。
src/main/java/com/ql/util/express/match/QLPattern.java
浏览文件 @
024bc97b
src/main/java/com/ql/util/express/parse/KeyWordDefine4Java.java
浏览文件 @
024bc97b
...
...
@@ -129,10 +129,10 @@ public class KeyWordDefine4Java {
"STAT_IFELSE:TYPE=STATEMENT,DEFINE=(if|when->if)^$EXPRESS$then$(STAT_BLOCK|STATEMENT|EXPRESS)$else$"
+
"(STAT_BLOCK|STATEMENT)"
,
"STAT_IF:TYPE=STATEMENT,
DEFINE=(if|when->if)^$EXPRESS$then$(STAT_BLOCK|STATEMENT)"
,
"STAT_IF:TYPE=STATEMENT,DEFINE=(if|when->if)^$EXPRESS$then$(STAT_BLOCK|STATEMENT)"
,
"STAT_IFELSE_JAVA:TYPE=STATEMENT,DEFINE=(if|when->if)^$CHILD_EXPRESS$(STAT_BLOCK|STATEMENT|EXPRESS)$else$"
+
"(STAT_BLOCK|STATEMENT)"
,
"STAT_IF_JAVA:TYPE=STATEMENT,
DEFINE=(if|when->if)^$CHILD_EXPRESS$(STAT_BLOCK|STATEMENT)"
,
"STAT_IF_JAVA:TYPE=STATEMENT,DEFINE=(if|when->if)^$CHILD_EXPRESS$(STAT_BLOCK|STATEMENT)"
,
"PARAMETER_DEFINE:TYPE=STATEMENT,DEFINE=LEFT_BRACKET->CHILD_EXPRESS^$(RIGHT_BRACKET~|(VAR_DEFINE$(,"
+
"~$VAR_DEFINE)*$RIGHT_BRACKET~))"
,
...
...
src/test/java/com/ql/util/express/example/WorkflowTest.java
浏览文件 @
024bc97b
...
...
@@ -26,39 +26,44 @@ public class WorkflowTest {
*/
@Test
public
void
testApprove1
()
throws
Exception
{
//定义表达式
String
exp
=
"如果 (审批通过(经理,金额)){"
+
" 如果 (金额 大于 5000){ "
+
" 如果 (审批通过(总监,金额)){"
+
" 如果 (审批通过(财务,金额)){"
+
" 报销入账(金额)"
+
" }否则 {"
+
" 打回修改(申请人)"
+
" }"
+
" }否则 {"
+
" 打回修改(申请人)"
+
" }"
+
" }否则 {"
+
" 如果 (审批通过(财务,金额)){"
+
" 报销入账(金额)"
+
" }否则 {"
+
" 打回修改(申请人)"
+
" }"
+
" }"
+
"}否则 {"
+
" 打回修改(申请人)"
+
"}"
+
"打印(\"完成\")"
;
// 此脚本内容与example/approve.ql及example/approve1.ql中的一段脚本内容完全相同
String
express
=
""
+
"如果 (审批通过(经理, 金额)) {\n"
+
" 如果 (金额 大于 5000) {\n"
+
" 如果 (审批通过(总监, 金额)) {\n"
+
" 如果 (审批通过(财务, 金额)) {\n"
+
" 报销入账(金额)\n"
+
" } 否则 {\n"
+
" 打回修改(申请人)\n"
+
" }\n"
+
" } 否则 {\n"
+
" 打回修改(申请人)\n"
+
" }\n"
+
" } 否则 {\n"
+
" 如果 (审批通过(财务, 金额)) {\n"
+
" 报销入账(金额)\n"
+
" } 否则 {\n"
+
" 打回修改(申请人)\n"
+
" }\n"
+
" }\n"
+
"} 否则 {\n"
+
" 打回修改(申请人)\n"
+
"}\n"
+
"打印(\"完成\")\n"
;
System
.
out
.
println
(
"express = "
+
express
);
ExpressRunner
runner
=
new
ExpressRunner
();
//定义操作符别名
runner
.
addOperatorWithAlias
(
"如果"
,
"if"
,
null
);
runner
.
addOperatorWithAlias
(
"否则"
,
"else"
,
null
);
runner
.
addOperatorWithAlias
(
"大于"
,
">"
,
null
);
runner
.
addFunctionOfServiceMethod
(
"打印"
,
new
WorkflowTest
(),
"println"
,
new
String
[]
{
"String"
},
null
);
//定义方法
runner
.
addFunction
(
"审批通过"
,
new
ApproveOperator
(
1
));
runner
.
addFunction
(
"报销入账"
,
new
ApproveOperator
(
2
));
runner
.
addFunction
(
"打回修改"
,
new
ApproveOperator
(
3
));
//设置上下文变量
IExpressContext
<
String
,
Object
>
expressContext
=
new
DefaultContext
<>();
expressContext
.
put
(
"经理"
,
"王经理"
);
...
...
@@ -66,8 +71,8 @@ public class WorkflowTest {
expressContext
.
put
(
"财务"
,
"张财务"
);
expressContext
.
put
(
"申请人"
,
"小强"
);
expressContext
.
put
(
"金额"
,
4000
);
//执行表达式
runner
.
execute
(
exp
,
expressContext
,
null
,
false
,
false
);
runner
.
execute
(
exp
ress
,
expressContext
,
null
,
false
,
false
);
}
/**
...
...
@@ -78,18 +83,20 @@ public class WorkflowTest {
@Test
public
void
testApprove2
()
throws
Exception
{
ExpressRunner
runner
=
new
ExpressRunner
();
//定义操作符别名
runner
.
addOperatorWithAlias
(
"如果"
,
"if"
,
null
);
runner
.
addOperatorWithAlias
(
"否则"
,
"else"
,
null
);
runner
.
addOperatorWithAlias
(
"大于"
,
">"
,
null
);
runner
.
addFunctionOfServiceMethod
(
"打印"
,
new
WorkflowTest
(),
"println"
,
new
String
[]
{
"String"
},
null
);
//定义方法
runner
.
addFunction
(
"审批通过"
,
new
ApproveOperator
(
1
));
runner
.
addFunction
(
"报销入账"
,
new
ApproveOperator
(
2
));
runner
.
addFunction
(
"打回修改"
,
new
ApproveOperator
(
3
));
//加载文件
//加载文件,从指定文件中获取表示式构造指令集
runner
.
loadExpress
(
"example/approve1"
);
//从指定文件中获取表示式构造指令集
//设置上下文变量
IExpressContext
<
String
,
Object
>
expressContext
=
new
DefaultContext
<>();
...
...
@@ -110,13 +117,16 @@ public class WorkflowTest {
@Test
public
void
testApprove3
()
throws
Exception
{
ExpressRunner
runner
=
new
ExpressRunner
();
//定义操作符别名
runner
.
addOperatorWithAlias
(
"如果"
,
"if"
,
null
);
runner
.
addOperatorWithAlias
(
"否则"
,
"else"
,
null
);
runner
.
addOperatorWithAlias
(
"大于"
,
">"
,
null
);
runner
.
addFunctionOfServiceMethod
(
"打印"
,
new
WorkflowTest
(),
"println"
,
new
String
[]
{
"String"
},
null
);
//加载文件
runner
.
loadExpress
(
"example/approve"
);
//设置上下文变量
IExpressContext
<
String
,
Object
>
expressContext
=
new
DefaultContext
<>();
expressContext
.
put
(
"经理"
,
"王经理"
);
...
...
@@ -136,6 +146,7 @@ public class WorkflowTest {
@Test
public
void
testApprove4
()
throws
Exception
{
ExpressRunner
runner
=
new
ExpressRunner
();
//定义操作符别名
runner
.
addOperatorWithAlias
(
"如果"
,
"if"
,
null
);
runner
.
addOperatorWithAlias
(
"否则"
,
"else"
,
null
);
...
...
@@ -145,6 +156,7 @@ public class WorkflowTest {
//加载文件
runner
.
loadExpress
(
"example/approve1"
);
runner
.
loadExpress
(
"example/approve2"
);
//设置上下文变量
IExpressContext
<
String
,
Object
>
expressContext
=
new
DefaultContext
<>();
expressContext
.
put
(
"经理"
,
"王经理"
);
...
...
src/test/java/com/ql/util/express/test/ArrayTest.java
浏览文件 @
024bc97b
src/test/java/com/ql/util/express/test/ExpressTest.java
浏览文件 @
024bc97b
...
...
@@ -50,12 +50,12 @@ public class ExpressTest {
null
);
String
[][]
expressTest
=
new
String
[][]
{
{
"isVIP(\"qh\") ; isVIP(\"xuannan\"); return isVIP(\"qh\") ;"
,
"false"
},
{
"如果
三星卖家 则 'a' love 'b' 否则 'b' love 'd'
"
,
"b{a}b"
},
{
"when
三星卖家 then 'a' love 'b' 否则 'b' love 'd'
"
,
"b{a}b"
},
{
"如果
三星卖家 则 'a' love 'b' 否则 'b' love 'd'
"
,
"b{a}b"
},
{
"when
三星卖家 then 'a' love 'b' 否则 'b' love 'd'
"
,
"b{a}b"
},
{
"int defVar = 100; defVar = defVar + 100;"
,
"200"
},
{
"int a
=0; if false then a = 5 else a=10+1 ; return a
"
,
"11"
},
{
"
3+ (1==2?4:3) +8"
,
"14"
},
{
"
如果 (true) 则 {2+2;} 否则 {20 + 20;}
"
,
"4"
},
{
"int a
= 0; if false then a = 5; else a = 10 + 1; return a;
"
,
"11"
},
{
"3+ (1==2?4:3) +8"
,
"14"
},
{
"
如果 (true) 则 {2 + 2;} 否则 {20 + 20;}
"
,
"4"
},
{
"'AAAAAAA' +'-' + \"\" +'' + \"B\""
,
"AAAAAAA-B"
},
{
"System.out.println(\"ss\")"
,
"null"
},
{
"unionName = new com.ql.util.express.test.BeanExample(\"张三\").unionName(\"李四\")"
,
...
...
@@ -72,7 +72,7 @@ public class ExpressTest {
{
"new String(\"12345\").length()"
,
"5"
},
{
"'a' love 'b' love 'c' love 'd'"
,
"d{c{b{a}b}c}d"
},
{
"10 * (10 + 1) + 2 * (3 + 5) * 2"
,
"142"
},
{
"(
2 属于 (4,3,5)) or isVIP(\"qhlhl2010@gmail.com\") or
isVIP(\"qhlhl2010@gmail.com\")"
,
"false"
},
{
"(
2 属于 (4,3,5)) or isVIP(\"qhlhl2010@gmail.com\") or
isVIP(\"qhlhl2010@gmail.com\")"
,
"false"
},
{
" 1!=1 and isVIP(\"qhlhl2010@gmail.com\")"
,
"false"
},
{
" 1==1 or isVIP(\"qhlhl2010@gmail.com\") "
,
"true"
},
{
"abc == 1"
,
"true"
},
...
...
src/test/java/com/ql/util/express/test/IfTest.java
浏览文件 @
024bc97b
...
...
@@ -10,21 +10,21 @@ public class IfTest {
@Test
public
void
testIf
()
throws
Exception
{
String
[][]
expresses
=
new
String
[][]
{
{
"if 1==1 then return 100 else return 10;"
,
"100"
},
{
"if 1==2 then return 100 else return 10;"
,
"10"
},
{
"if 1==1 then return 100; else return 10;"
,
"100"
},
{
"if 1==2 then return 100; else return 10;"
,
"10"
},
{
"if 1==1 then {return 100} else {return 10;}"
,
"100"
},
{
"if 1==2 then {return 100} else {return 10;}"
,
"10"
},
{
"if 1==1 then return 100 ; return 10000;"
,
"100"
},
{
"if 1==1 then return 100; else return 10;"
,
"100"
},
{
"if 1==2 then return 100; else return 10;"
,
"10"
},
{
"if 1==1 then {return 100;} else {return 10;}"
,
"100"
},
{
"if 1==2 then {return 100;} else {return 10;}"
,
"10"
},
{
"if 1==1 then return 100;; return 10000;"
,
"100"
},
{
"if 1==2 then return 100; return 10000;"
,
"10000"
},
{
"if (1==1) return 100 else return 10;"
,
"100"
},
{
"if (1==2) return 100 else return 10;"
,
"10"
},
{
"if (1==1) return 100; else return 10;"
,
"100"
},
{
"if (1==2) return 100; else return 10;"
,
"10"
},
{
"if (1==1) {return 100} else {return 10;}"
,
"100"
},
{
"if (1==2) {return 100} else {return 10;}"
,
"10"
},
{
"if (1==1) return 100 ; return 10000;"
,
"100"
},
{
"if (1==1) return 100; else return 10;"
,
"100"
},
{
"if (1==2) return 100; else return 10;"
,
"10"
},
{
"if (1==1) {return 100;} else {return 10;}"
,
"100"
},
{
"if (1==2) {return 100;} else {return 10;}"
,
"10"
},
{
"if (1==1) return 100; return 10000;"
,
"100"
},
{
"if (1==2) return 100; return 10000;"
,
"10000"
},
};
for
(
int
i
=
0
;
i
<
expresses
.
length
;
i
++)
{
...
...
src/test/java/com/ql/util/express/test/NewExpressTest.java
浏览文件 @
024bc97b
...
...
@@ -40,19 +40,19 @@ public class NewExpressTest {
{
"if(1==2) { return 100;}"
,
"null"
},
{
"int i = 2"
,
"2"
},
{
"i=2;i<10;"
,
"true"
},
{
"a
=0 ; for(int i=0;i<10;i=i+1)
{a = a + 1;} return a;"
,
"10"
},
{
"a
=0; for(int i = 0; i < 10; i = i + 1)
{a = a + 1;} return a;"
,
"10"
},
{
"new String(\"ss\")"
,
"ss"
},
{
"(new String[1][1])[0][0]"
,
"null"
},
{
"a = new String[1][9];
a[0][1+1] = \"qianghui\"; b = a[0][2];
"
,
"qianghui"
},
{
"a = new String[1][9];
a[0][1+1] = \"qianghui\"; b = a[0][2];
"
,
"qianghui"
},
{
"(new String[3][5])[1].length"
,
"5"
},
{
"\"abc\".length()"
,
"3"
},
{
"\"abc\".substring(1,3).substring(1,2)"
,
"c"
},
{
"Integer.SIZE"
,
"32"
},
{
"new com.ql.util.express.test.BeanExample(\"qianghui\").name"
,
"qianghui"
},
{
"System.out.println(1)"
,
"null"
},
{
"int a = 0;for(int i
= 0;i<10;i++){ System.out.println(i); a= a+ i
} return a;"
,
"45"
},
{
"int a = 0;for(int i
= 0;i<10;i++){ if(i > 5) then{break;} a= a
+ i;} return a;"
,
"15"
},
{
"int a = 0;for(int i
= 0;i<10;i++){ if(i <=5) then{continue;} a= a
+ i;} return a;"
,
"30"
},
{
"int a = 0;for(int i
= 0; i < 10; i++){System.out.println(i); a = a + i;
} return a;"
,
"45"
},
{
"int a = 0;for(int i
= 0; i < 10; i++){if(i > 5) then{break;} a = a
+ i;} return a;"
,
"15"
},
{
"int a = 0;for(int i
= 0; i < 10; i++){if(i <= 5) then{continue;} a = a
+ i;} return a;"
,
"30"
},
{
"int a =0; alias pa a; pa++ ;return a"
,
"1"
},
{
"int[][] a = new int[10][10]; alias pa a[0]; pa[0] =100 ;return a[0][0]"
,
"100"
},
{
"int[][] a = new int[10][10]; {exportAlias pa a[0]; pa[0] =100} ;pa[1] =200; return a[0][0] + a[0][1];"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录