CBScript 自定义脚本语言
Posted 足球中国
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CBScript 自定义脚本语言相关的知识,希望对你有一定的参考价值。
1、变量定义 以Var 开头
//定义变量I,附值为数值,数值都是decimal类型
Var i=0
//定义变量,附值为字符串
var a=""
//定义变量list 附值为 ListNew() 通过listnew函数返回一个集合
Var list=ListNew()
//定义变量hash 附值为HashtableNew(),通过HashtableNew创建新的hash表
2、注释
注释以单独行 "//"开始
3、支持的语句
仅支持赋值语句,WHILE语句,FOREACH语句,IF语句。
每行为一条语句
3.1 赋值语句
var a=100
a=200
3.2 WHILE循环语句
var i=1
while i<100
i=i+1
endwhile
3.3 FOREACH语句
var list=listnew(1,2,3,4)
var count=0
foreach item in list
count=count+item
endforeach
3.4 IF语句
var a=100
var has=false
if a>100
a=true
else a>50
a=true
else a>30
a=true
else
a=false
endif
4、支持的API 函数
ConvertFunctionContainer.ConvertFunctionContainer(Feng.Script.CBEexpress.IMethodCollection) ConvertFunctionContainer.ConvertToBoolean(object[]) ConvertFunctionContainer.ConvertToDateTime(object[]) ConvertFunctionContainer.ConvertToDecimal(object[]) ConvertFunctionContainer.ConvertToDouble(object[]) ConvertFunctionContainer.ConvertToInt(object[]) ConvertFunctionContainer.ConvertToInt64(object[]) ConvertFunctionContainer.ConvertToSingle(object[]) ConvertFunctionContainer.ConvertToString(object[]) ConvertFunctionContainer.ConvertToUInt(object[]) ConvertFunctionContainer.ConvertToUInt64(object[])
5、支持自定义API
5.1步骤:定义返回类型为object 参数类型类object [] args 函数
5.2步骤:将函数加入到API列表
5.3示例:
//自定义的API函数
public object CustomFunction(object [] args)
{
return 100;
}
[TestMethod()]
public void Script_Test_Custom()
{
int a = 6 % 3 << 4 * 20;
int target = 1 + 2 + 3 + 4 + 2 + 6 % 3 << 4 * 20 + (12 - 32)+100;
string str = @"1+2+3+4+2+6%3<<4*20+(12-32)+Custom()";
FunctionBody function = new FunctionBody();
ExcuteProxy excuteProxy = new ExcuteProxy();
CBMethod cbmethod = new CBMethod();
CBMethodContainer methodContainer = new CBMethodContainer(cbmethod.Methods);
//将自定义函数加入到API列表
methodContainer.MethodList.Add(new BaseMethod() { Function = CustomFunction, Name = "Custom" });
cbmethod.Methods.Add(methodContainer);
excuteProxy.RunMethod = cbmethod;
function.Script.ExecProxy = excuteProxy;
object value = function.Exec(str);
Assert.AreEqual(target, value);
}
以上是关于CBScript 自定义脚本语言的主要内容,如果未能解决你的问题,请参考以下文章