Exemple #1
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var a = arguments.Get <object>(0);
            var b = arguments.Get <object>(1);

            return(new object[] { a.Equals(b) ? 1 : 0 });
        }
Exemple #2
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var a = arguments.Get <double>(0);
            var b = arguments.Get <double>(1);

            return(new object[] { a - b });
        }
Exemple #3
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var probability = arguments.Get <double>(0);

            var randNumber = random.NextDouble();

            return(new object[] { randNumber <= probability ? 1 : 0 });
        }
Exemple #4
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var sleepTime = arguments.Get <double>(0);

            Thread.Sleep((int)(sleepTime * 1000));

            return(null);
        }
Exemple #5
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            foreach (var value in runtime.Stack.PopAll())
            {
                Console.WriteLine(value.ToString());
            }

            return(null);
        }
Exemple #6
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var key   = arguments.Get <object>(0);
            var value = arguments.Get <object>(1);

            runtime.Register[key] = value;

            return(null);
        }
Exemple #7
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            int valueIndex = arguments.Get <int>(0);

            var value = runtime.Stack.PeekAt(valueIndex);

            runtime.Stack.Push(value);

            return(null);
        }
Exemple #8
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var index = arguments.Get <int>(0);

            var temp = runtime.Stack[index];

            runtime.Stack[index]     = runtime.Stack[index + 1];
            runtime.Stack[index + 1] = temp;

            return(null);
        }
Exemple #9
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            int count = arguments.Get <int>(0);

            var copy = new object[count];

            for (int i = 0; i < count; i++)
            {
                copy[count - 1 - i] = runtime.Stack[i];
            }

            return(copy);
        }
Exemple #10
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var iterations = arguments.Get <int>(0);

            var pos = runtime.Tokens.Position;

            for (int i = 0; i < iterations; i++)
            {
                runtime.Tokens.Position = pos;

                runtime.ExecuteSubroutine(";");
            }

            return(null);
        }
Exemple #11
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var str = arguments.Get <string>(0);

            var matches = formatRegex.Matches(str);

            var formatPatterns  = new SortedList <int, string>();
            var formatArguments = new object[matches.Count];

            foreach (Match match in matches)
            {
                var pattern = match.Groups[1].Value;

                int index;

                if (pattern.StartsWith(PeekPattern))
                {
                    index = int.Parse(pattern.Substring(1));
                }
                else
                {
                    index = int.Parse(pattern);
                }

                if (!formatPatterns.ContainsKey(index))
                {
                    formatPatterns.Add(index, pattern);
                }
            }

            for (int i = formatPatterns.Count - 1; i >= 0; i--)
            {
                var pattern = formatPatterns[i];

                var peek = pattern.StartsWith(PeekPattern);

                int index = int.Parse(peek ? pattern.Substring(1) : pattern);

                formatArguments[index] = peek ? runtime.Stack[index] : runtime.Stack.PopAt(index);
            }

            str = formatRegex.Replace(str, "{$2}");

            var formatted = string.Format(str, formatArguments);

            return(new object[] { formatted });
        }
Exemple #12
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var iterations = (int)Convert.ChangeType(runtime.Stack.Peek(), typeof(int));

            var pos = runtime.Tokens.Position;

            for (int i = 0; i < iterations; i++)
            {
                runtime.Tokens.Position = pos;

                runtime.Stack.Push(i);

                runtime.ExecuteSubroutine(";");
            }

            return(null);
        }
Exemple #13
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var condition = arguments.Get <int>(0);

            var pos = runtime.Tokens.Position;

            while (condition != 0)
            {
                runtime.Tokens.Position = pos;

                runtime.ExecuteSubroutine(";");

                condition = (int)Convert.ChangeType(runtime.Stack.Pop(), typeof(int));
            }

            return(null);
        }
Exemple #14
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var condition = arguments.Get <int>(0) == 1;

            if (condition)
            {
                runtime.ExecuteSubroutine(";");
                runtime.SkipSubroutine(";");
            }
            else
            {
                runtime.SkipSubroutine(";");
                runtime.ExecuteSubroutine(";");
            }


            return(null);
        }
Exemple #15
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var key = arguments.Get <object>(0);

            return(new[] { runtime.Register[key] });
        }
Exemple #16
0
 public override object[] Execute(Arguments arguments, LynxRuntime runtime)
 {
     return(new object[] { arguments.Get <double>(0) * arguments.Get <double>(1) });
 }
Exemple #17
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            runtime.Stack.Pop();

            return(null);
        }
Exemple #18
0
 public override object[] Execute(Arguments arguments, LynxRuntime runtime)
 {
     return(new object[] { (int)Convert.ChangeType(runtime.Stack.Peek(), typeof(int)) });
 }
Exemple #19
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            Console.Clear();

            return(null);
        }
Exemple #20
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            Console.Write(arguments.Get <string>(0));

            return(null);
        }
Exemple #21
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            Console.WriteLine(runtime.Stack.Peek());

            return(null);
        }
Exemple #22
0
        public override object[] Execute(Arguments arguments, LynxRuntime runtime)
        {
            var arg = arguments.Get <int>(0);

            return(new object[] { -arg });
        }
Exemple #23
0
 public override object[] Execute(Arguments arguments, LynxRuntime runtime)
 {
     return(new object[] { runtime.Stack.Count });
 }
Exemple #24
0
 public override object[] Execute(Arguments arguments, LynxRuntime runtime) => new[] { Console.ReadLine() };