Exemple #1
0
        private static bool HandleCommand(string command)
        {
            if (command == String.Empty &&  commands.Count > 0)
            {
                var source = string.Join(" ", commands);

                commands.Clear();
                Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop - 1);

                try
                {
                    var compilationResult = compiler.Compile(parser.Parse(scanner.Scan(source)));

                    if (compilationResult.Errors.Count > 0)
                    {
                        compilationResult.Errors.ForEach(error =>
                        {
                            Console.WriteLine(error.Message);
                        });
                    }
                    else
                    {
                        vm.Run(compilationResult.CurrentScope.Instructions, compilationResult.Constants, compilationResult.BuiltIns);
                        Console.WriteLine(Stringify.Object((Object)vm.StackTop));
                    }
                }
                catch
                {
                    Console.WriteLine("Something went wrong with the execution of your command, sorry!");
                }
            }
            else
            {
                commands.Add(command);
            }

            if (commands.Count == 1 && (command == "q" || command == "quit"))
            {
                return(false);
            }

            return(true);
        }