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); }