StackStream.Executor.Cycle C# (CSharp) Method

Cycle() public method

public Cycle ( ) : void
return void
        public void Cycle()
        {
            var token = CodeStack.Pop<IToken>();

            if (token is Tokens.Method)
            {
                var method = (Tokens.Method) token;

                if (Methods.ContainsKey(method.Value))
                    Methods[method.Value].Run(this);
                else
                    throw new Exception($"Unknown method {method.Value}!");
            }
            else
            {
                DataStack.Push(token);
            }
        }

Usage Example

Exemplo n.º 1
0
        static void Main(string[] args)
        {
            Executor exec = new Executor();

            while (true) // loop
            {
                Console.Write(" {0} | ", exec.DataStack.ToString()); // print
                var line = Console.ReadLine();

                exec.CodeStack.PushRange(Lexer.Parse(line).Value); // read
                exec.Methods["stream-tcp"] = new Executor.NativeFunction(Builtins.FileTcpIo.NewTcpStream);
                exec.Methods["file-read"] = new Executor.NativeFunction(Builtins.FileTcpIo.ReadFile);
                exec.Methods["file-write"] = new Executor.NativeFunction(Builtins.FileTcpIo.WriteFile);

                try {
                    while (exec.CodeStack.Count > 0)
                        exec.Cycle(); // eval
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception: {0}", e.Message);
                }
            }
        }