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 自定义脚本语言的主要内容,如果未能解决你的问题,请参考以下文章

为自己的软件增加脚本编写功能并自定义API

为自己的软件增加脚本编写功能并自定义API

为自己的软件增加脚本编写功能并自定义API

扩展 C# .NET 应用程序 - 是不是构建自定义脚本语言?

启动时的 JPA 自定义脚本

Elasticsearch painless脚本中使用java自定义类函数