Esempio n. 1
0
        /// <summary>
        /// Execute this script.
        /// </summary>
        /// <param name="r">The current memory.</param>
        /// <param name="args">The arguments.</param>
        /// <returns>The resulting return.</returns>
        public object Execute(RAM r, object[] args)
        {
            if (args.Length != ArgCount)
            {
                throw new ArgumentException();
            }
            r.PushNewLocalMemory();
            var i = 0;

            foreach (var a in args)
            {
                var farg = r.GetValue(a);
                if (float.TryParse(farg.ToString(), out float f))
                {
                    r.SetLocal(_ArgNames[i++], f);
                }
                else
                {
                    r.SetLocal(_ArgNames[i++], farg);
                }
            }
            var obj = BrackInterpreter.Execute(r, _Brack);

            r.RemoveLastLocalMemory();
            return(obj);
        }
Esempio n. 2
0
        static void Main()
        {
            var curRam = new RAM(new OperationSet(new BrackOperatorBase[] {
                new BrackParamOperator <float>("add", (r, args) =>
                {
                    var ret = 0f;
                    foreach (var f in args)
                    {
                        ret += f;
                    }
                    return(ret);
                }),
                new BrackOperator <string>("print", (r, str) =>
                {
                    Console.WriteLine(str);
                    return(str);
                }),
            }));

            BrackInterpreter.ExecuteRaw(curRam, "TestScript.brak", true);

            Console.ReadKey();
        }